orbitx 0.1.1 → 0.1.3
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/Readme.md +65 -9
- package/dist/core/anthropic-provider.d.ts +15 -0
- package/dist/core/anthropic-provider.d.ts.map +1 -0
- package/dist/core/anthropic-provider.js +208 -0
- package/dist/core/anthropic-provider.js.map +1 -0
- package/dist/core/deepseek-provider.d.ts +1 -4
- package/dist/core/deepseek-provider.d.ts.map +1 -1
- package/dist/core/deepseek-provider.js +15 -15
- package/dist/core/deepseek-provider.js.map +1 -1
- package/dist/core/mcp-client.d.ts +0 -8
- package/dist/core/mcp-client.d.ts.map +1 -1
- package/dist/core/mcp-client.js +14 -20
- package/dist/core/mcp-client.js.map +1 -1
- package/dist/core/mcp-computer.d.ts +3 -5
- package/dist/core/mcp-computer.d.ts.map +1 -1
- package/dist/core/mcp-computer.js +71 -28
- package/dist/core/mcp-computer.js.map +1 -1
- package/dist/core/mcp-connection.d.ts +17 -0
- package/dist/core/mcp-connection.d.ts.map +1 -1
- package/dist/core/mcp-connection.js +24 -2
- package/dist/core/mcp-connection.js.map +1 -1
- package/dist/core/mcp-ipc-connection.d.ts +13 -14
- package/dist/core/mcp-ipc-connection.d.ts.map +1 -1
- package/dist/core/mcp-ipc-connection.js +75 -64
- package/dist/core/mcp-ipc-connection.js.map +1 -1
- package/dist/core/mcp-server.js +4 -4
- package/dist/core/mcp-server.js.map +1 -1
- package/dist/core/mcp-ws-connection.d.ts +45 -0
- package/dist/core/mcp-ws-connection.d.ts.map +1 -0
- package/dist/core/mcp-ws-connection.js +165 -0
- package/dist/core/mcp-ws-connection.js.map +1 -0
- package/dist/core/ollama-provider.d.ts +1 -4
- package/dist/core/ollama-provider.d.ts.map +1 -1
- package/dist/core/ollama-provider.js +16 -16
- package/dist/core/ollama-provider.js.map +1 -1
- package/dist/core/openai-provider.d.ts +15 -0
- package/dist/core/openai-provider.d.ts.map +1 -0
- package/dist/core/openai-provider.js +180 -0
- package/dist/core/openai-provider.js.map +1 -0
- package/dist/core/tool-schema-translator.d.ts +12 -2
- package/dist/core/tool-schema-translator.d.ts.map +1 -1
- package/dist/core/tool-schema-translator.js +29 -2
- package/dist/core/tool-schema-translator.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/sandbox.js +19 -3
- package/dist/sandbox.js.map +1 -1
- package/package.json +5 -2
package/Readme.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
[](#)
|
|
2
2
|
|
|
3
3
|
## Installation
|
|
4
4
|
|
|
@@ -13,7 +13,7 @@ The fastest way to get an agent running is `SimpleAgent` — give it a provider,
|
|
|
13
13
|
```ts
|
|
14
14
|
import { OllamaProvider, SimpleAgent, GetCurrentTimeTool } from "orbitx";
|
|
15
15
|
|
|
16
|
-
const ollamaProvider = new OllamaProvider("
|
|
16
|
+
const ollamaProvider = new OllamaProvider("gemma4:e4b");
|
|
17
17
|
|
|
18
18
|
const agent = new SimpleAgent({
|
|
19
19
|
aiProvider: ollamaProvider,
|
|
@@ -79,7 +79,7 @@ OrbitX ships with pluggable AI providers so you can swap models without changing
|
|
|
79
79
|
```ts
|
|
80
80
|
import { OllamaProvider } from "orbitx";
|
|
81
81
|
|
|
82
|
-
const ollamaProvider = new OllamaProvider("
|
|
82
|
+
const ollamaProvider = new OllamaProvider("gemma4:e4b");
|
|
83
83
|
```
|
|
84
84
|
|
|
85
85
|
### DeepSeek
|
|
@@ -90,6 +90,22 @@ import { DeepSeekProvider } from "orbitx";
|
|
|
90
90
|
const deepseekProvider = new DeepSeekProvider("api-key", "deepseek-v4-flash");
|
|
91
91
|
```
|
|
92
92
|
|
|
93
|
+
### Anthropic
|
|
94
|
+
|
|
95
|
+
```ts
|
|
96
|
+
import { AnthropicProvider } from "orbitx";
|
|
97
|
+
|
|
98
|
+
const anthropicProvider = new AnthropicProvider("api-key", "claude-sonnet-5");
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### OpenAI
|
|
102
|
+
|
|
103
|
+
```ts
|
|
104
|
+
import { OpenAIProvider } from "orbitx";
|
|
105
|
+
|
|
106
|
+
const openaiProvider = new OpenAIProvider("api-key", "gpt-5");
|
|
107
|
+
```
|
|
108
|
+
|
|
93
109
|
### Two providers: main + image
|
|
94
110
|
|
|
95
111
|
An agent uses exactly two provider roles — `main` (drives the agent loop itself) and `image` (describes image tool output, e.g. screenshots, so the main conversation doesn't have to carry raw image bytes). Pass a single provider to use it for both roles, or an array to split them:
|
|
@@ -114,6 +130,13 @@ Tools are grouped by domain. Import each group's array (e.g. `FsTools()`) to get
|
|
|
114
130
|
|
|
115
131
|
### Filesystem (`FsTools`)
|
|
116
132
|
|
|
133
|
+
⚠️ EXTREMELY IMPORTANT WARNING ABOUT `FsWriteFileTool` / `FsDeleteTool` ⚠️
|
|
134
|
+
|
|
135
|
+
🔴 CRITICAL: FsWriteFileTool and FsDeleteTool can permanently overwrite, delete, or corrupt existing files – no undo available.
|
|
136
|
+
|
|
137
|
+
We strongly prefer running bash commands through MCPComputer, which provides a sandboxed, isolated environment – protecting your host system from accidental damage.
|
|
138
|
+
|
|
139
|
+
|
|
117
140
|
| Tool | Purpose |
|
|
118
141
|
|---|---|
|
|
119
142
|
| `FsReadFileTool` | Read a text file, paging through large files by line. |
|
|
@@ -127,6 +150,12 @@ Tools are grouped by domain. Import each group's array (e.g. `FsTools()`) to get
|
|
|
127
150
|
|
|
128
151
|
### Bash / processes (`BashTools`)
|
|
129
152
|
|
|
153
|
+
⚠️ EXTREMELY IMPORTANT WARNING ABOUT `BashRunTool` ⚠️
|
|
154
|
+
|
|
155
|
+
🔴 CRITICAL: Shell commands can permanently delete files, corrupt data, modify system settings, or execute harmful operations – no undo available.
|
|
156
|
+
|
|
157
|
+
We strongly prefer running bash commands through MCPComputer, which provides a sandboxed, isolated environment – protecting your host system from accidental damage.
|
|
158
|
+
|
|
130
159
|
| Tool | Purpose |
|
|
131
160
|
|---|---|
|
|
132
161
|
| `BashRunTool` | Launch a shell command as a background process; returns immediately if it's still running after `waitMs` (e.g. a dev server). |
|
|
@@ -218,7 +247,7 @@ import {
|
|
|
218
247
|
GetCurrentTimeTool,
|
|
219
248
|
} from "orbitx";
|
|
220
249
|
|
|
221
|
-
const ollamaProvider = new OllamaProvider("
|
|
250
|
+
const ollamaProvider = new OllamaProvider("gemma4:e4b");
|
|
222
251
|
|
|
223
252
|
const connection = new MCPConnection();
|
|
224
253
|
|
|
@@ -260,16 +289,24 @@ import { MCPIPCConnection } from "orbitx";
|
|
|
260
289
|
const path =
|
|
261
290
|
os.platform() === "win32" ? `\\\\.\\pipe\\mcp_test` : `/tmp/mcp_test.sock`;
|
|
262
291
|
|
|
263
|
-
const ipcConnection = new MCPIPCConnection(path);
|
|
292
|
+
const ipcConnection = new MCPIPCConnection({ mode: "server", socketPath: path });
|
|
264
293
|
```
|
|
265
294
|
|
|
266
|
-
|
|
295
|
+
### WS Connections
|
|
267
296
|
|
|
268
|
-
|
|
297
|
+
Run your MCP server as a separate process and connect to it over an web-socket communication (WS) channel:
|
|
269
298
|
|
|
270
|
-
|
|
299
|
+
```ts
|
|
300
|
+
import os from "os";
|
|
301
|
+
import { MCPWSConnection } from "orbitx";
|
|
271
302
|
|
|
272
|
-
|
|
303
|
+
const wsConnection = new MCPWSConnection({ mode: "server", host: "0.0.0.0", port: 9257, token: "1234" });
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
## Creating a Custom Tool
|
|
308
|
+
|
|
309
|
+
Define your own tools with `MCPTool` to extend an agent's capabilities and integrate with your own ecosystem.
|
|
273
310
|
|
|
274
311
|
```ts
|
|
275
312
|
import { MCPTool } from "orbitx";
|
|
@@ -350,4 +387,23 @@ const agent = new SimpleAgent({
|
|
|
350
387
|
});
|
|
351
388
|
```
|
|
352
389
|
|
|
390
|
+
## MCPComputer (Experimental Feature)
|
|
391
|
+
|
|
392
|
+
Spins up a sandboxed Docker container running the MCP server and returns a ready-to-use client connection — no need to manage IPC sockets, ports, or tokens manually.
|
|
393
|
+
|
|
394
|
+
```typescript
|
|
395
|
+
import MCPComputer from "./core/mcp-computer.js";
|
|
396
|
+
|
|
397
|
+
const computer = new MCPComputer("/path/to/mount", [3000, 8080]);
|
|
398
|
+
await computer.start();
|
|
399
|
+
|
|
400
|
+
const connection = computer.getConnection();
|
|
401
|
+
computer.stop();
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
- **`mountPath`**: host directory mounted into the container
|
|
405
|
+
- **`ports`**: ports to expose, or `"*"` for host network mode (Linux only, or Windows via WSL2)
|
|
406
|
+
- **`getConnection()`**: returns a ready `MCPConnection` (IPC on Linux/macOS, WebSocket on Windows)
|
|
407
|
+
- **`stop()`**: kills the container
|
|
353
408
|
|
|
409
|
+
Requires the `aliafsordeh/orbitx-sandbox:0.1` image (pull it, or build from the `Dockerfile.sandbox` reference on our GitHub page).
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Message, ChatResponse, StreamCallback, ToolSchema, ProviderCapabilities } from "./ai-provider.js";
|
|
2
|
+
import AIProvider from "./ai-provider.js";
|
|
3
|
+
export declare class AnthropicProvider extends AIProvider {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(apiKey: string, model?: string, options?: {
|
|
6
|
+
supportsTools?: boolean;
|
|
7
|
+
supportsImages?: boolean;
|
|
8
|
+
contextWindow?: number;
|
|
9
|
+
maxTokens?: number;
|
|
10
|
+
});
|
|
11
|
+
getCapabilities(): ProviderCapabilities;
|
|
12
|
+
chat(messages: Message[], streamCallback?: StreamCallback, tools?: ToolSchema[]): Promise<ChatResponse>;
|
|
13
|
+
}
|
|
14
|
+
export default AnthropicProvider;
|
|
15
|
+
//# sourceMappingURL=anthropic-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic-provider.d.ts","sourceRoot":"","sources":["../../src/core/anthropic-provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAmB,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACjI,OAAO,UAAU,MAAM,kBAAkB,CAAC;AA4F1C,qBAAa,iBAAkB,SAAQ,UAAU;;gBAQjC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,MAA0B,EAAE,OAAO,GAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO;IAU9K,eAAe,IAAI,oBAAoB;IASjC,IAAI,CACN,QAAQ,EAAE,OAAO,EAAE,EACnB,cAAc,CAAC,EAAE,cAAc,EAC/B,KAAK,CAAC,EAAE,UAAU,EAAE,GACrB,OAAO,CAAC,YAAY,CAAC;CAmG3B;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import Anthropic from "@anthropic-ai/sdk";
|
|
2
|
+
import AIProvider from "./ai-provider.js";
|
|
3
|
+
import { toAnthropicTools } from "./tool-schema-translator.js";
|
|
4
|
+
import { withRetry } from "./retry.js";
|
|
5
|
+
const MODEL_CONTEXT_WINDOWS = {
|
|
6
|
+
"claude-opus-4-8": 200_000,
|
|
7
|
+
"claude-sonnet-5": 200_000,
|
|
8
|
+
"claude-haiku-4-5-20251001": 200_000,
|
|
9
|
+
"claude-fable-5": 200_000,
|
|
10
|
+
"claude-mythos-5": 200_000,
|
|
11
|
+
};
|
|
12
|
+
const DEFAULT_CONTEXT_WINDOW = 200_000;
|
|
13
|
+
/**
|
|
14
|
+
* Anthropic keeps `system` out of the messages array entirely, and encodes
|
|
15
|
+
* tool calls/results as content blocks (`tool_use` on assistant turns,
|
|
16
|
+
* `tool_result` inside a user turn) rather than dedicated message roles.
|
|
17
|
+
* This walks the provider-agnostic Message[] and produces both the
|
|
18
|
+
* extracted system string and the Anthropic-shaped message array.
|
|
19
|
+
*/
|
|
20
|
+
function toAnthropicMessages(messages) {
|
|
21
|
+
const systemParts = [];
|
|
22
|
+
const out = [];
|
|
23
|
+
for (const msg of messages) {
|
|
24
|
+
if (msg.role === "system") {
|
|
25
|
+
if (msg.content)
|
|
26
|
+
systemParts.push(msg.content);
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
if (msg.role === "tool") {
|
|
30
|
+
// Anthropic expects tool results as a user message containing a
|
|
31
|
+
// tool_result block; merge into the previous user message if it
|
|
32
|
+
// was itself a tool-result carrier, otherwise start a new one.
|
|
33
|
+
out.push({
|
|
34
|
+
role: "user",
|
|
35
|
+
content: [
|
|
36
|
+
{
|
|
37
|
+
type: "tool_result",
|
|
38
|
+
tool_use_id: msg.toolCallId,
|
|
39
|
+
content: msg.content || "",
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
});
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
if (msg.role === "assistant" && msg.toolCalls?.length) {
|
|
46
|
+
const content = [];
|
|
47
|
+
if (msg.content)
|
|
48
|
+
content.push({ type: "text", text: msg.content });
|
|
49
|
+
for (const tc of msg.toolCalls) {
|
|
50
|
+
content.push({ type: "tool_use", id: tc.id, name: tc.name, input: tc.inputs });
|
|
51
|
+
}
|
|
52
|
+
out.push({ role: "assistant", content });
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
if (msg.parts?.length) {
|
|
56
|
+
out.push({
|
|
57
|
+
role: msg.role,
|
|
58
|
+
content: msg.parts.map(p => p.type === "text"
|
|
59
|
+
? { type: "text", text: p.text }
|
|
60
|
+
: { type: "image", source: { type: "base64", media_type: p.mimeType || "image/png", data: p.image } }),
|
|
61
|
+
});
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
out.push({ role: msg.role, content: msg.content || "" });
|
|
65
|
+
}
|
|
66
|
+
return { system: systemParts.join("\n\n"), messages: out };
|
|
67
|
+
}
|
|
68
|
+
function fromAnthropicToolCalls(content) {
|
|
69
|
+
if (!content)
|
|
70
|
+
return undefined;
|
|
71
|
+
const toolUses = content.filter((block) => block.type === "tool_use");
|
|
72
|
+
if (toolUses.length === 0)
|
|
73
|
+
return undefined;
|
|
74
|
+
return toolUses.map((block) => ({
|
|
75
|
+
id: block.id,
|
|
76
|
+
name: block.name,
|
|
77
|
+
inputs: block.input || {},
|
|
78
|
+
}));
|
|
79
|
+
}
|
|
80
|
+
function textFromAnthropicContent(content) {
|
|
81
|
+
if (!content)
|
|
82
|
+
return "";
|
|
83
|
+
return content
|
|
84
|
+
.filter((block) => block.type === "text")
|
|
85
|
+
.map((block) => block.text)
|
|
86
|
+
.join("");
|
|
87
|
+
}
|
|
88
|
+
export class AnthropicProvider extends AIProvider {
|
|
89
|
+
#client;
|
|
90
|
+
#model;
|
|
91
|
+
#supportsTools;
|
|
92
|
+
#supportsImages;
|
|
93
|
+
#contextWindow;
|
|
94
|
+
#maxTokens;
|
|
95
|
+
constructor(apiKey, model = "claude-sonnet-5", options = {}) {
|
|
96
|
+
super();
|
|
97
|
+
this.#client = new Anthropic({ apiKey });
|
|
98
|
+
this.#model = model;
|
|
99
|
+
this.#supportsTools = options.supportsTools ?? true;
|
|
100
|
+
this.#supportsImages = options.supportsImages ?? true;
|
|
101
|
+
this.#contextWindow = options.contextWindow ?? MODEL_CONTEXT_WINDOWS[model] ?? DEFAULT_CONTEXT_WINDOW;
|
|
102
|
+
this.#maxTokens = options.maxTokens ?? 4096;
|
|
103
|
+
}
|
|
104
|
+
getCapabilities() {
|
|
105
|
+
return {
|
|
106
|
+
supportsTools: this.#supportsTools,
|
|
107
|
+
supportsImages: this.#supportsImages,
|
|
108
|
+
contextWindow: this.#contextWindow,
|
|
109
|
+
safeUsageRatio: 0.5,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
async chat(messages, streamCallback, tools) {
|
|
113
|
+
const { system, messages: formattedMessages } = toAnthropicMessages(messages);
|
|
114
|
+
const formattedTools = tools && tools.length > 0 && this.#supportsTools
|
|
115
|
+
? toAnthropicTools(tools)
|
|
116
|
+
: undefined;
|
|
117
|
+
if (streamCallback) {
|
|
118
|
+
return withRetry(async () => {
|
|
119
|
+
// Per-attempt accumulators live inside this closure so a
|
|
120
|
+
// failed/partial stream from a previous attempt never leaks
|
|
121
|
+
// into a retry's output — each attempt starts clean.
|
|
122
|
+
const stream = await this.#client.messages.create({
|
|
123
|
+
model: this.#model,
|
|
124
|
+
max_tokens: this.#maxTokens,
|
|
125
|
+
...(system ? { system } : {}),
|
|
126
|
+
messages: formattedMessages,
|
|
127
|
+
...(formattedTools ? { tools: formattedTools } : {}),
|
|
128
|
+
stream: true,
|
|
129
|
+
});
|
|
130
|
+
let fullContent = "";
|
|
131
|
+
let inputTokens = 0;
|
|
132
|
+
let outputTokens = 0;
|
|
133
|
+
// Anthropic streams tool_use blocks as a start event (with
|
|
134
|
+
// id/name) followed by incremental input_json_delta chunks,
|
|
135
|
+
// so the partial JSON has to be accumulated per block index
|
|
136
|
+
// the same way OpenAI's function-call arguments are.
|
|
137
|
+
const toolBlocks = {};
|
|
138
|
+
for await (const event of stream) {
|
|
139
|
+
if (event.type === "content_block_start") {
|
|
140
|
+
if (event.content_block?.type === "tool_use") {
|
|
141
|
+
toolBlocks[event.index] = {
|
|
142
|
+
id: event.content_block.id,
|
|
143
|
+
name: event.content_block.name,
|
|
144
|
+
inputJson: "",
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (event.type === "content_block_delta") {
|
|
149
|
+
if (event.delta?.type === "text_delta" && event.delta.text) {
|
|
150
|
+
fullContent += event.delta.text;
|
|
151
|
+
streamCallback({ role: "assistant", content: event.delta.text, done: false });
|
|
152
|
+
}
|
|
153
|
+
if (event.delta?.type === "input_json_delta" && toolBlocks[event.index]) {
|
|
154
|
+
toolBlocks[event.index].inputJson += event.delta.partial_json || "";
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
if (event.type === "message_start") {
|
|
158
|
+
inputTokens = event.message?.usage?.input_tokens || 0;
|
|
159
|
+
}
|
|
160
|
+
if (event.type === "message_delta") {
|
|
161
|
+
if (event.usage?.output_tokens !== undefined) {
|
|
162
|
+
outputTokens = event.usage.output_tokens;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
const toolCalls = Object.keys(toolBlocks).length > 0
|
|
167
|
+
? Object.values(toolBlocks).map(tb => {
|
|
168
|
+
let inputs = {};
|
|
169
|
+
try {
|
|
170
|
+
inputs = JSON.parse(tb.inputJson || "{}");
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
inputs = {};
|
|
174
|
+
}
|
|
175
|
+
return { id: tb.id || "", name: tb.name || "", inputs };
|
|
176
|
+
})
|
|
177
|
+
: undefined;
|
|
178
|
+
streamCallback({ role: "assistant", content: "", done: true, ...(toolCalls ? { toolCalls } : {}) });
|
|
179
|
+
return {
|
|
180
|
+
content: fullContent,
|
|
181
|
+
inputTokens,
|
|
182
|
+
outputTokens,
|
|
183
|
+
...(toolCalls ? { toolCalls } : {}),
|
|
184
|
+
};
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
return withRetry(async () => {
|
|
189
|
+
const response = await this.#client.messages.create({
|
|
190
|
+
model: this.#model,
|
|
191
|
+
max_tokens: this.#maxTokens,
|
|
192
|
+
...(system ? { system } : {}),
|
|
193
|
+
messages: formattedMessages,
|
|
194
|
+
...(formattedTools ? { tools: formattedTools } : {}),
|
|
195
|
+
});
|
|
196
|
+
const toolCalls = fromAnthropicToolCalls(response.content);
|
|
197
|
+
return {
|
|
198
|
+
content: textFromAnthropicContent(response.content),
|
|
199
|
+
inputTokens: response.usage?.input_tokens || 0,
|
|
200
|
+
outputTokens: response.usage?.output_tokens || 0,
|
|
201
|
+
...(toolCalls ? { toolCalls } : {}),
|
|
202
|
+
};
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
export default AnthropicProvider;
|
|
208
|
+
//# sourceMappingURL=anthropic-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic-provider.js","sourceRoot":"","sources":["../../src/core/anthropic-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import type { Message, ChatResponse, StreamCallback, ToolSchema, ProviderCapabilities } from "./ai-provider.js";
|
|
2
2
|
import AIProvider from "./ai-provider.js";
|
|
3
3
|
export declare class DeepSeekProvider extends AIProvider {
|
|
4
|
-
private
|
|
5
|
-
private model;
|
|
6
|
-
private supportsTools;
|
|
7
|
-
private contextWindow;
|
|
4
|
+
#private;
|
|
8
5
|
constructor(apiKey: string, model?: string, options?: {
|
|
9
6
|
supportsTools?: boolean;
|
|
10
7
|
contextWindow?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deepseek-provider.d.ts","sourceRoot":"","sources":["../../src/core/deepseek-provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAmB,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACjI,OAAO,UAAU,MAAM,kBAAkB,CAAC;AA4D1C,qBAAa,gBAAiB,SAAQ,UAAU
|
|
1
|
+
{"version":3,"file":"deepseek-provider.d.ts","sourceRoot":"","sources":["../../src/core/deepseek-provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAmB,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACjI,OAAO,UAAU,MAAM,kBAAkB,CAAC;AA4D1C,qBAAa,gBAAiB,SAAQ,UAAU;;gBAMhC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,MAA4B,EAAE,OAAO,GAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAO;IAWlI,eAAe,IAAI,oBAAoB;IASjC,IAAI,CACN,QAAQ,EAAE,OAAO,EAAE,EACnB,cAAc,CAAC,EAAE,cAAc,EAC/B,KAAK,CAAC,EAAE,UAAU,EAAE,GACrB,OAAO,CAAC,YAAY,CAAC;CAmF3B;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -55,31 +55,31 @@ function fromOpenAIToolCalls(toolCalls) {
|
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
57
|
export class DeepSeekProvider extends AIProvider {
|
|
58
|
-
client;
|
|
59
|
-
model;
|
|
60
|
-
supportsTools;
|
|
61
|
-
contextWindow;
|
|
58
|
+
#client;
|
|
59
|
+
#model;
|
|
60
|
+
#supportsTools;
|
|
61
|
+
#contextWindow;
|
|
62
62
|
constructor(apiKey, model = "deepseek-v4-flash", options = {}) {
|
|
63
63
|
super();
|
|
64
|
-
this
|
|
64
|
+
this.#client = new OpenAI({
|
|
65
65
|
apiKey: apiKey,
|
|
66
66
|
baseURL: "https://api.deepseek.com"
|
|
67
67
|
});
|
|
68
|
-
this
|
|
69
|
-
this
|
|
70
|
-
this
|
|
68
|
+
this.#model = model;
|
|
69
|
+
this.#supportsTools = options.supportsTools ?? true;
|
|
70
|
+
this.#contextWindow = options.contextWindow ?? MODEL_CONTEXT_WINDOWS[model] ?? DEFAULT_CONTEXT_WINDOW;
|
|
71
71
|
}
|
|
72
72
|
getCapabilities() {
|
|
73
73
|
return {
|
|
74
|
-
supportsTools: this
|
|
74
|
+
supportsTools: this.#supportsTools,
|
|
75
75
|
supportsImages: false,
|
|
76
|
-
contextWindow: this
|
|
76
|
+
contextWindow: this.#contextWindow,
|
|
77
77
|
safeUsageRatio: 0.5,
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
80
|
async chat(messages, streamCallback, tools) {
|
|
81
81
|
const formattedMessages = toOpenAIMessages(messages);
|
|
82
|
-
const formattedTools = tools && tools.length > 0 && this
|
|
82
|
+
const formattedTools = tools && tools.length > 0 && this.#supportsTools
|
|
83
83
|
? toOpenAIFunctionTools(tools)
|
|
84
84
|
: undefined;
|
|
85
85
|
if (streamCallback) {
|
|
@@ -87,8 +87,8 @@ export class DeepSeekProvider extends AIProvider {
|
|
|
87
87
|
// Per-attempt accumulators live inside this closure so a
|
|
88
88
|
// failed/partial stream from a previous attempt never leaks
|
|
89
89
|
// into a retry's output — each attempt starts clean.
|
|
90
|
-
const stream = await this
|
|
91
|
-
model: this
|
|
90
|
+
const stream = await this.#client.chat.completions.create({
|
|
91
|
+
model: this.#model,
|
|
92
92
|
messages: formattedMessages,
|
|
93
93
|
...(formattedTools ? { tools: formattedTools } : {}),
|
|
94
94
|
stream: true
|
|
@@ -145,8 +145,8 @@ export class DeepSeekProvider extends AIProvider {
|
|
|
145
145
|
}
|
|
146
146
|
else {
|
|
147
147
|
return withRetry(async () => {
|
|
148
|
-
const response = await this
|
|
149
|
-
model: this
|
|
148
|
+
const response = await this.#client.chat.completions.create({
|
|
149
|
+
model: this.#model,
|
|
150
150
|
messages: formattedMessages,
|
|
151
151
|
...(formattedTools ? { tools: formattedTools } : {}),
|
|
152
152
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deepseek-provider.js","sourceRoot":"","sources":["../../src/core/deepseek-provider.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"deepseek-provider.js","sourceRoot":"","sources":["../../src/core/deepseek-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,14 +19,6 @@ export declare class MCPClient extends MCP {
|
|
|
19
19
|
default?: any;
|
|
20
20
|
}[];
|
|
21
21
|
}[]>;
|
|
22
|
-
/**
|
|
23
|
-
* Calls a tool and returns its result normalized into the standard
|
|
24
|
-
* MCPToolOutput contract ({type:"text"|"image", output:{...}}) —
|
|
25
|
-
* regardless of whether the tool lives in-process or across the
|
|
26
|
-
* IPC connection to a sandboxed MCPServer, and regardless of whether
|
|
27
|
-
* the tool itself already returns that shape or just a plain object
|
|
28
|
-
* (the legacy convention most existing tools use).
|
|
29
|
-
*/
|
|
30
22
|
callTool(toolName: string, inputs: Record<string, any>): Promise<import("./mcp.js").MCPToolOutput>;
|
|
31
23
|
registerTool(tool: MCPTool<any>): void;
|
|
32
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-client.d.ts","sourceRoot":"","sources":["../../src/core/mcp-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,GAAG,EAAuB,MAAM,UAAU,CAAC;AACpD,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAG/C,qBAAa,SAAU,SAAQ,GAAG;;gBAMlB,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,aAAa,EAAE,EAAE,OAAO,GAAE,UAA+B,EAAE,GAAG,CAAC,EAAE,MAAM;IAU9H,UAAU,IAAI,UAAU;IAIxB,MAAM,IAAI,MAAM;IAIV,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;;
|
|
1
|
+
{"version":3,"file":"mcp-client.d.ts","sourceRoot":"","sources":["../../src/core/mcp-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,GAAG,EAAuB,MAAM,UAAU,CAAC;AACpD,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAG/C,qBAAa,SAAU,SAAQ,GAAG;;gBAMlB,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,aAAa,EAAE,EAAE,OAAO,GAAE,UAA+B,EAAE,GAAG,CAAC,EAAE,MAAM;IAU9H,UAAU,IAAI,UAAU;IAIxB,MAAM,IAAI,MAAM;IAIV,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;;IAwCT,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAmC5D,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;CAIlC;AAED,eAAe,SAAS,CAAC"}
|
package/dist/core/mcp-client.js
CHANGED
|
@@ -31,18 +31,18 @@ export class MCPClient extends MCP {
|
|
|
31
31
|
const onRead = (data) => {
|
|
32
32
|
if (data.topic === "getToolsCallback" && data.pid === pid) {
|
|
33
33
|
resolved = true;
|
|
34
|
-
conn.off("
|
|
34
|
+
conn.off("client_read", onRead);
|
|
35
35
|
resolve(data.tools || []);
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
|
-
conn.on("
|
|
39
|
-
conn.emit("
|
|
38
|
+
conn.on("client_read", onRead);
|
|
39
|
+
conn.emit("write_to_server", {
|
|
40
40
|
pid,
|
|
41
41
|
topic: "getTools"
|
|
42
42
|
});
|
|
43
43
|
setTimeout(() => {
|
|
44
44
|
if (!resolved) {
|
|
45
|
-
conn.off("
|
|
45
|
+
conn.off("client_read", onRead);
|
|
46
46
|
resolve([]);
|
|
47
47
|
}
|
|
48
48
|
}, 2000);
|
|
@@ -50,20 +50,14 @@ export class MCPClient extends MCP {
|
|
|
50
50
|
});
|
|
51
51
|
const results = await Promise.all(connectionPromises);
|
|
52
52
|
const connectionsTools = results.flat();
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
53
|
+
const clientTools = this.#tools.map(t => ({
|
|
54
|
+
name: t.getOptions().name,
|
|
55
|
+
description: t.getOptions().description,
|
|
56
|
+
inputs: t.getOptions().inputs
|
|
57
|
+
}));
|
|
58
|
+
const clientToolNames = new Set(clientTools.map(ct => ct.name));
|
|
59
|
+
return [...clientTools, ...connectionsTools.filter(t => !clientToolNames.has(t.name))];
|
|
58
60
|
}
|
|
59
|
-
/**
|
|
60
|
-
* Calls a tool and returns its result normalized into the standard
|
|
61
|
-
* MCPToolOutput contract ({type:"text"|"image", output:{...}}) —
|
|
62
|
-
* regardless of whether the tool lives in-process or across the
|
|
63
|
-
* IPC connection to a sandboxed MCPServer, and regardless of whether
|
|
64
|
-
* the tool itself already returns that shape or just a plain object
|
|
65
|
-
* (the legacy convention most existing tools use).
|
|
66
|
-
*/
|
|
67
61
|
async callTool(toolName, inputs) {
|
|
68
62
|
const clientTool = this.#tools.find(t => t.getOptions().name == toolName);
|
|
69
63
|
if (clientTool) {
|
|
@@ -77,15 +71,15 @@ export class MCPClient extends MCP {
|
|
|
77
71
|
const pid = randomUUID();
|
|
78
72
|
const onRead = (data) => {
|
|
79
73
|
if (data.topic === "toolCallCallback" && data.pid === pid) {
|
|
80
|
-
conn.off("
|
|
74
|
+
conn.off("client_read", onRead);
|
|
81
75
|
if (!resolvedResult) {
|
|
82
76
|
resolve(data.output || {});
|
|
83
77
|
resolvedResult = true;
|
|
84
78
|
}
|
|
85
79
|
}
|
|
86
80
|
};
|
|
87
|
-
conn.on("
|
|
88
|
-
conn.emit("
|
|
81
|
+
conn.on("client_read", onRead);
|
|
82
|
+
conn.emit("write_to_server", {
|
|
89
83
|
pid,
|
|
90
84
|
topic: "toolCall",
|
|
91
85
|
tool: toolName,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../../src/core/mcp-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,MAAM,MAAM,cAAc,CAAC;AAElC,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAE/C,MAAM,OAAO,SAAU,SAAQ,GAAG;IAC9B,YAAY,CAAC;IACb,QAAQ,CAAC;IACT,IAAI,CAAC;IACL,MAAM,GAAmB,EAAE,CAAC;IAC5B,MAAM,CAAC;IACP,YAAY,KAAa,EAAE,UAA2C,EAAE,UAAsB,IAAI,YAAY,EAAE,EAAE,GAAY;QAC1H,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,GAAG;YACJ,GAAG,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,UAAU;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,QAAQ;QACV,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACpD,OAAO,IAAI,OAAO,CAUb,CAAC,OAAO,EAAE,EAAE;gBACb,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;gBACzB,IAAI,QAAQ,GAAG,KAAK,CAAC;gBAErB,MAAM,MAAM,GAAG,CAAC,IAAS,EAAE,EAAE;oBACzB,IAAI,IAAI,CAAC,KAAK,KAAK,kBAAkB,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;wBACxD,QAAQ,GAAG,IAAI,CAAC;wBAChB,IAAI,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../../src/core/mcp-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
+
import type MCPConnection from "./mcp-connection.js";
|
|
1
2
|
export declare class MCPComputer {
|
|
2
3
|
#private;
|
|
3
4
|
constructor(mountPath: string, ports: number[] | "*", image?: string);
|
|
4
|
-
|
|
5
|
+
getConnection(wsHost?: string): MCPConnection;
|
|
5
6
|
getPresentsHostPath(): string;
|
|
6
|
-
|
|
7
|
-
getPortUrl(port: number, host?: string): string;
|
|
8
|
-
buildDockerArgs(): string[];
|
|
9
|
-
start(): import("node:child_process").ChildProcess;
|
|
7
|
+
start(): Promise<import("node:child_process").ChildProcess>;
|
|
10
8
|
stop(): void;
|
|
11
9
|
getInstructions(): string;
|
|
12
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-computer.d.ts","sourceRoot":"","sources":["../../src/core/mcp-computer.ts"],"names":[],"mappings":"AAMA,qBAAa,WAAW;;
|
|
1
|
+
{"version":3,"file":"mcp-computer.d.ts","sourceRoot":"","sources":["../../src/core/mcp-computer.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AAMrD,qBAAa,WAAW;;gBAcR,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,EAAE,KAAK,GAAE,MAA6B;IAe1F,aAAa,CAAC,MAAM,GAAE,MAAoB,GAAG,aAAa;IAmB1D,mBAAmB,IAAI,MAAM;IAkGvB,KAAK;IAuBX,IAAI;IAUJ,eAAe,IAAI,MAAM;CAmB5B;AAED,eAAe,WAAW,CAAC"}
|