orbitx 0.0.3 → 0.0.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/{src/core/ai-provider.ts → dist/core/ai-provider.d.ts} +19 -25
- package/dist/core/ai-provider.d.ts.map +1 -0
- package/dist/core/ai-provider.js +4 -0
- package/dist/core/ai-provider.js.map +1 -0
- package/dist/core/base-agent.d.ts +53 -0
- package/dist/core/base-agent.d.ts.map +1 -0
- package/{src/core/base-agent.ts → dist/core/base-agent.js} +197 -269
- package/dist/core/base-agent.js.map +1 -0
- package/dist/core/deepseek-provider.d.ts +9 -0
- package/dist/core/deepseek-provider.d.ts.map +1 -0
- package/{src/core/deepseek-provider.ts → dist/core/deepseek-provider.js} +60 -71
- package/dist/core/deepseek-provider.js.map +1 -0
- package/dist/core/mcp-client.d.ts +21 -0
- package/dist/core/mcp-client.d.ts.map +1 -0
- package/{src/core/mcp-client.ts → dist/core/mcp-client.js} +90 -113
- package/dist/core/mcp-client.js.map +1 -0
- package/dist/core/mcp-computer.d.ts +4 -0
- package/dist/core/mcp-computer.d.ts.map +1 -0
- package/{src/core/mcp-computer.ts → dist/core/mcp-computer.js} +5 -5
- package/dist/core/mcp-computer.js.map +1 -0
- package/dist/core/mcp-connection.d.ts +6 -0
- package/dist/core/mcp-connection.d.ts.map +1 -0
- package/dist/core/mcp-connection.js +10 -0
- package/dist/core/mcp-connection.js.map +1 -0
- package/dist/core/mcp-ipc-connection.d.ts +20 -0
- package/dist/core/mcp-ipc-connection.d.ts.map +1 -0
- package/{src/core/mcp-ipc-connection.ts → dist/core/mcp-ipc-connection.js} +126 -153
- package/dist/core/mcp-ipc-connection.js.map +1 -0
- package/dist/core/mcp-server.d.ts +9 -0
- package/dist/core/mcp-server.d.ts.map +1 -0
- package/{src/core/mcp-server.ts → dist/core/mcp-server.js} +45 -49
- package/dist/core/mcp-server.js.map +1 -0
- package/dist/core/mcp.d.ts +29 -0
- package/dist/core/mcp.d.ts.map +1 -0
- package/dist/core/mcp.js +11 -0
- package/dist/core/mcp.js.map +1 -0
- package/dist/core/ollama-provider.d.ts +9 -0
- package/dist/core/ollama-provider.d.ts.map +1 -0
- package/{src/core/ollama-provider.ts → dist/core/ollama-provider.js} +59 -70
- package/dist/core/ollama-provider.js.map +1 -0
- package/dist/core/skill.d.ts +15 -0
- package/dist/core/skill.d.ts.map +1 -0
- package/dist/core/skill.js +11 -0
- package/dist/core/skill.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/{src/index.ts → dist/index.js} +16 -17
- package/dist/index.js.map +1 -0
- package/dist/templates/researcher.d.ts +27 -0
- package/dist/templates/researcher.d.ts.map +1 -0
- package/dist/templates/researcher.js +70 -0
- package/dist/templates/researcher.js.map +1 -0
- package/dist/templates/simple.d.ts +27 -0
- package/dist/templates/simple.d.ts.map +1 -0
- package/dist/templates/simple.js +35 -0
- package/dist/templates/simple.js.map +1 -0
- package/dist/tests/mcp.test.d.ts +2 -0
- package/dist/tests/mcp.test.d.ts.map +1 -0
- package/{src/tests/mcp.test.ts → dist/tests/mcp.test.js} +55 -73
- package/dist/tests/mcp.test.js.map +1 -0
- package/dist/tools/fs/index.d.ts +3 -0
- package/dist/tools/fs/index.d.ts.map +1 -0
- package/dist/tools/fs/index.js +3 -0
- package/dist/tools/fs/index.js.map +1 -0
- package/dist/tools/fs/read-file.d.ts +4 -0
- package/dist/tools/fs/read-file.d.ts.map +1 -0
- package/{src/tools/fs/read-file.ts → dist/tools/fs/read-file.js} +49 -54
- package/dist/tools/fs/read-file.js.map +1 -0
- package/dist/tools/fs/write-file.d.ts +4 -0
- package/dist/tools/fs/write-file.d.ts.map +1 -0
- package/{src/tools/fs/write-file.ts → dist/tools/fs/write-file.js} +68 -73
- package/dist/tools/fs/write-file.js.map +1 -0
- package/dist/tools/utils/get-current-time.d.ts +4 -0
- package/dist/tools/utils/get-current-time.d.ts.map +1 -0
- package/{src/tools/utils/get-current-time.ts → dist/tools/utils/get-current-time.js} +40 -45
- package/dist/tools/utils/get-current-time.js.map +1 -0
- package/dist/tools/utils/index.d.ts +2 -0
- package/dist/tools/utils/index.d.ts.map +1 -0
- package/dist/tools/utils/index.js +2 -0
- package/dist/tools/utils/index.js.map +1 -0
- package/dist/tools/www/fetch.d.ts +4 -0
- package/dist/tools/www/fetch.d.ts.map +1 -0
- package/{src/tools/www/fetch.ts → dist/tools/www/fetch.js} +147 -161
- package/dist/tools/www/fetch.js.map +1 -0
- package/dist/tools/www/index.d.ts +4 -0
- package/dist/tools/www/index.d.ts.map +1 -0
- package/dist/tools/www/index.js +4 -0
- package/dist/tools/www/index.js.map +1 -0
- package/dist/tools/www/read-web-page.d.ts +4 -0
- package/dist/tools/www/read-web-page.d.ts.map +1 -0
- package/{src/tools/www/read-web-page.ts → dist/tools/www/read-web-page.js} +330 -350
- package/dist/tools/www/read-web-page.js.map +1 -0
- package/dist/tools/www/web-search.d.ts +4 -0
- package/dist/tools/www/web-search.d.ts.map +1 -0
- package/{src/tools/www/web-search.ts → dist/tools/www/web-search.js} +82 -102
- package/dist/tools/www/web-search.js.map +1 -0
- package/package.json +19 -5
- package/.env.example +0 -1
- package/orbitx.png +0 -0
- package/public/index.html +0 -397
- package/src/core/mcp-connection.ts +0 -12
- package/src/core/mcp.ts +0 -23
- package/src/core/skill.ts +0 -16
- package/src/templates/researcher.ts +0 -73
- package/src/templates/simple.ts +0 -64
- package/src/tools/fs/index.ts +0 -2
- package/src/tools/utils/index.ts +0 -1
- package/src/tools/www/index.ts +0 -3
- package/tsconfig.json +0 -34
|
@@ -1,71 +1,60 @@
|
|
|
1
|
-
import OpenAI from "openai";
|
|
2
|
-
import AIProvider, {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
streamCallback
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
return {
|
|
52
|
-
content:
|
|
53
|
-
inputTokens,
|
|
54
|
-
outputTokens,
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
return {
|
|
63
|
-
content: response.choices[0]?.message?.content || "",
|
|
64
|
-
inputTokens: response.usage?.prompt_tokens || 0,
|
|
65
|
-
outputTokens: response.usage?.completion_tokens || 0,
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
export default DeepSeekProvider;
|
|
1
|
+
import OpenAI from "openai";
|
|
2
|
+
import AIProvider, {} from "./ai-provider";
|
|
3
|
+
export class DeepSeekProvider extends AIProvider {
|
|
4
|
+
client;
|
|
5
|
+
model;
|
|
6
|
+
constructor(apiKey, model = "deepseek-v4-flash") {
|
|
7
|
+
super();
|
|
8
|
+
this.client = new OpenAI({
|
|
9
|
+
apiKey: apiKey,
|
|
10
|
+
baseURL: "https://api.deepseek.com"
|
|
11
|
+
});
|
|
12
|
+
this.model = model;
|
|
13
|
+
}
|
|
14
|
+
async chat(messages, streamCallback) {
|
|
15
|
+
const formattedMessages = messages.map(msg => ({
|
|
16
|
+
role: msg.role,
|
|
17
|
+
content: msg.content || ""
|
|
18
|
+
}));
|
|
19
|
+
if (streamCallback) {
|
|
20
|
+
const stream = await this.client.chat.completions.create({
|
|
21
|
+
model: this.model,
|
|
22
|
+
messages: formattedMessages,
|
|
23
|
+
stream: true
|
|
24
|
+
});
|
|
25
|
+
let fullContent = "";
|
|
26
|
+
let inputTokens = 0;
|
|
27
|
+
let outputTokens = 0;
|
|
28
|
+
for await (const chunk of stream) {
|
|
29
|
+
const content = chunk.choices[0]?.delta?.content || "";
|
|
30
|
+
if (content) {
|
|
31
|
+
fullContent += content;
|
|
32
|
+
streamCallback({ role: "assistant", content, done: false });
|
|
33
|
+
}
|
|
34
|
+
if (chunk.usage) {
|
|
35
|
+
inputTokens = chunk.usage.prompt_tokens || 0;
|
|
36
|
+
outputTokens = chunk.usage.completion_tokens || 0;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
streamCallback({ role: "assistant", content: "", done: true });
|
|
40
|
+
return {
|
|
41
|
+
content: fullContent,
|
|
42
|
+
inputTokens,
|
|
43
|
+
outputTokens,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
const response = await this.client.chat.completions.create({
|
|
48
|
+
model: this.model,
|
|
49
|
+
messages: formattedMessages
|
|
50
|
+
});
|
|
51
|
+
return {
|
|
52
|
+
content: response.choices[0]?.message?.content || "",
|
|
53
|
+
inputTokens: response.usage?.prompt_tokens || 0,
|
|
54
|
+
outputTokens: response.usage?.completion_tokens || 0,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
export default DeepSeekProvider;
|
|
60
|
+
//# sourceMappingURL=deepseek-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepseek-provider.js","sourceRoot":"","sources":["../../src/core/deepseek-provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,UAAU,EAAE,EAAwD,MAAM,eAAe,CAAC;AAEjG,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IACpC,MAAM,CAAS;IACf,KAAK,CAAS;IAEtB,YAAY,MAAc,EAAE,QAAgB,mBAAmB;QAC3D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC;YACrB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,0BAA0B;SACtC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,IAAI,CACN,QAAmB,EACnB,cAA+B;QAE/B,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3C,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE;SAC7B,CAAC,CAAC,CAAC;QAEJ,IAAI,cAAc,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBACrD,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,iBAAwB;gBAClC,MAAM,EAAE,IAAI;aACf,CAAC,CAAC;YAEH,IAAI,WAAW,GAAG,EAAE,CAAC;YACrB,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,IAAI,YAAY,GAAG,CAAC,CAAC;YAErB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC;gBACvD,IAAI,OAAO,EAAE,CAAC;oBACV,WAAW,IAAI,OAAO,CAAC;oBACvB,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBAChE,CAAC;gBAED,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBACd,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;oBAC7C,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC;gBACtD,CAAC;YACL,CAAC;YAED,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/D,OAAO;gBACH,OAAO,EAAE,WAAW;gBACpB,WAAW;gBACX,YAAY;aACf,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBACvD,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,iBAAwB;aACrC,CAAC,CAAC;YAEH,OAAO;gBACH,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE;gBACpD,WAAW,EAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC;gBAC/C,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,IAAI,CAAC;aACvD,CAAC;QACN,CAAC;IACL,CAAC;CACJ;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type MCPTool from "./mcp";
|
|
2
|
+
import type MCPConnection from "./mcp-connection";
|
|
3
|
+
export declare class MCPClient {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(envID: string, connection: MCPConnection | MCPConnection[]);
|
|
6
|
+
getTools(): Promise<{
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
inputs: {
|
|
10
|
+
name: string;
|
|
11
|
+
type: "number" | "string" | "boolean" | "object" | "array";
|
|
12
|
+
description: string;
|
|
13
|
+
required?: boolean;
|
|
14
|
+
default?: any;
|
|
15
|
+
}[];
|
|
16
|
+
}[]>;
|
|
17
|
+
callTool(toolName: string, inputs: Record<string, any>): Promise<string>;
|
|
18
|
+
registerTool(tool: MCPTool): void;
|
|
19
|
+
}
|
|
20
|
+
export default MCPClient;
|
|
21
|
+
//# sourceMappingURL=mcp-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-client.d.ts","sourceRoot":"","sources":["../../src/core/mcp-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,OAAO,CAAC;AACjC,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAC;AAGlD,qBAAa,SAAS;;gBAIN,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,aAAa,EAAE;IAKhE,QAAQ;cAGI,MAAM;qBACC,MAAM;gBACX;YACJ,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;YAC3D,WAAW,EAAE,MAAM,CAAC;YACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;YACnB,OAAO,CAAC,EAAE,GAAG,CAAC;SACjB,EAAE;;IAsCT,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IA6C5D,YAAY,CAAC,IAAI,EAAE,OAAO;CAG7B;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -1,113 +1,90 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
this.#
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
inputs
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
setTimeout(() => {
|
|
95
|
-
if (!resolved) {
|
|
96
|
-
conn.off("read", onRead);
|
|
97
|
-
}
|
|
98
|
-
if (!resolvedResult) {
|
|
99
|
-
resolve({ error: "The tool call exceeded the 300second timeout limit." });
|
|
100
|
-
resolvedResult = true;
|
|
101
|
-
}
|
|
102
|
-
}, 300000);
|
|
103
|
-
});
|
|
104
|
-
}));
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
registerTool(tool: MCPTool) {
|
|
109
|
-
this.#tools.push(tool);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
export default MCPClient;
|
|
1
|
+
import { randomUUID } from "crypto";
|
|
2
|
+
export class MCPClient {
|
|
3
|
+
#connections;
|
|
4
|
+
#tools = [];
|
|
5
|
+
#envID;
|
|
6
|
+
constructor(envID, connection) {
|
|
7
|
+
this.#connections = Array.isArray(connection) ? connection : [connection];
|
|
8
|
+
this.#envID = envID;
|
|
9
|
+
}
|
|
10
|
+
async getTools() {
|
|
11
|
+
const connectionPromises = this.#connections.map(conn => {
|
|
12
|
+
return new Promise((resolve) => {
|
|
13
|
+
const pid = randomUUID();
|
|
14
|
+
let resolved = false;
|
|
15
|
+
const onRead = (data) => {
|
|
16
|
+
if (data.topic === "getToolsCallback" && data.pid === pid) {
|
|
17
|
+
resolved = true;
|
|
18
|
+
conn.off("read", onRead);
|
|
19
|
+
resolve(data.tools || []);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
conn.on("read", onRead);
|
|
23
|
+
conn.emit("write", {
|
|
24
|
+
pid,
|
|
25
|
+
topic: "getTools"
|
|
26
|
+
});
|
|
27
|
+
setTimeout(() => {
|
|
28
|
+
if (!resolved) {
|
|
29
|
+
conn.off("read", onRead);
|
|
30
|
+
resolve([]);
|
|
31
|
+
}
|
|
32
|
+
}, 2000);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
const results = await Promise.all(connectionPromises);
|
|
36
|
+
const connectionsTools = results.flat();
|
|
37
|
+
return [...this.#tools.map(t => ({
|
|
38
|
+
name: t.getOptions().name,
|
|
39
|
+
description: t.getOptions().description,
|
|
40
|
+
inputs: t.getOptions().inputs
|
|
41
|
+
})), ...connectionsTools];
|
|
42
|
+
}
|
|
43
|
+
async callTool(toolName, inputs) {
|
|
44
|
+
const clientTool = this.#tools.find(t => t.getOptions().name == toolName);
|
|
45
|
+
if (clientTool) {
|
|
46
|
+
return JSON.stringify(await clientTool.getOptions().execute(this.#envID, inputs));
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
return JSON.stringify(await new Promise((resolve) => {
|
|
50
|
+
let resolvedResult = false;
|
|
51
|
+
this.#connections.map(conn => {
|
|
52
|
+
const pid = randomUUID();
|
|
53
|
+
let resolved = false;
|
|
54
|
+
const onRead = (data) => {
|
|
55
|
+
if (data.topic === "toolCallCallback" && data.pid === pid) {
|
|
56
|
+
resolved = true;
|
|
57
|
+
conn.off("read", onRead);
|
|
58
|
+
if (!resolvedResult) {
|
|
59
|
+
resolve(data.output || {});
|
|
60
|
+
resolvedResult = true;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
conn.on("read", onRead);
|
|
65
|
+
conn.emit("write", {
|
|
66
|
+
pid,
|
|
67
|
+
topic: "toolCall",
|
|
68
|
+
tool: toolName,
|
|
69
|
+
envID: this.#envID,
|
|
70
|
+
inputs
|
|
71
|
+
});
|
|
72
|
+
setTimeout(() => {
|
|
73
|
+
if (!resolved) {
|
|
74
|
+
conn.off("read", onRead);
|
|
75
|
+
}
|
|
76
|
+
if (!resolvedResult) {
|
|
77
|
+
resolve({ error: "The tool call exceeded the 300second timeout limit." });
|
|
78
|
+
resolvedResult = true;
|
|
79
|
+
}
|
|
80
|
+
}, 300000);
|
|
81
|
+
});
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
registerTool(tool) {
|
|
86
|
+
this.#tools.push(tool);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
export default MCPClient;
|
|
90
|
+
//# sourceMappingURL=mcp-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../../src/core/mcp-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-computer.d.ts","sourceRoot":"","sources":["../../src/core/mcp-computer.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,WAAW;;CAI/B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export default class MCPComputer {
|
|
2
|
-
constructor() {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
export default class MCPComputer {
|
|
2
|
+
constructor() {
|
|
3
|
+
}
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=mcp-computer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-computer.js","sourceRoot":"","sources":["../../src/core/mcp-computer.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,WAAW;IAC5B;IAEA,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-connection.d.ts","sourceRoot":"","sources":["../../src/core/mcp-connection.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,qBAAa,aAAc,SAAQ,YAAY;gBAC/B,SAAS,GAAE,OAAe;CAMzC;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import EventEmitter from "events";
|
|
2
|
+
export class MCPConnection extends EventEmitter {
|
|
3
|
+
constructor(overrided = false) {
|
|
4
|
+
super();
|
|
5
|
+
if (!overrided)
|
|
6
|
+
this.on("write", (data) => this.emit("read", data));
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export default MCPConnection;
|
|
10
|
+
//# sourceMappingURL=mcp-connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-connection.js","sourceRoot":"","sources":["../../src/core/mcp-connection.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,MAAM,OAAO,aAAc,SAAQ,YAAY;IAC3C,YAAY,YAAqB,KAAK;QAClC,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,SAAS;YACV,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;IAC3D,CAAC;CACJ;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import MCPConnection from "./mcp-connection";
|
|
2
|
+
export declare class MCPIPCConnection extends MCPConnection {
|
|
3
|
+
private readonly socketPath;
|
|
4
|
+
private socket;
|
|
5
|
+
private server;
|
|
6
|
+
private role;
|
|
7
|
+
private writeBuffer;
|
|
8
|
+
private readBuffer;
|
|
9
|
+
constructor(socketPath: string);
|
|
10
|
+
close(): void;
|
|
11
|
+
private _tryConnect;
|
|
12
|
+
private _becomeServer;
|
|
13
|
+
private _attachSocket;
|
|
14
|
+
private _sendJSON;
|
|
15
|
+
private _handleIncoming;
|
|
16
|
+
private _cleanSocketFile;
|
|
17
|
+
private _maybeReconnect;
|
|
18
|
+
}
|
|
19
|
+
export default MCPIPCConnection;
|
|
20
|
+
//# sourceMappingURL=mcp-ipc-connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-ipc-connection.d.ts","sourceRoot":"","sources":["../../src/core/mcp-ipc-connection.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAI7C,qBAAa,gBAAiB,SAAQ,aAAa;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAAM;gBAEZ,UAAU,EAAE,MAAM;IAa9B,KAAK,IAAI,IAAI;IAMb,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,aAAa;IA0BrB,OAAO,CAAC,SAAS;IAkBjB,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,eAAe;CAQ1B;AAED,eAAe,gBAAgB,CAAC"}
|