fourmis-agents-sdk 0.3.0 → 0.4.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/agent-loop.d.ts +21 -3
- package/dist/agent-loop.d.ts.map +1 -1
- package/dist/agent-loop.js +294 -90
- package/dist/agents/index.js +2798 -1857
- package/dist/agents/task-manager.js +15 -0
- package/dist/agents/tools.d.ts.map +1 -1
- package/dist/agents/tools.js +2798 -1857
- package/dist/agents/types.d.ts +4 -0
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/api.d.ts +8 -5
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +2394 -886
- package/dist/auth/gemini-oauth.js +15 -0
- package/dist/auth/login-openai.js +15 -0
- package/dist/auth/openai-oauth.js +15 -0
- package/dist/hooks.d.ts +19 -1
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +42 -2
- package/dist/index.d.ts +10 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2407 -887
- package/dist/mcp/client.d.ts +7 -0
- package/dist/mcp/client.d.ts.map +1 -1
- package/dist/mcp/client.js +146 -12
- package/dist/mcp/index.js +146 -12
- package/dist/mcp/server.js +15 -0
- package/dist/mcp/types.d.ts +19 -1
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/memory/index.js +15 -0
- package/dist/memory/memory-handler.js +15 -0
- package/dist/permissions.d.ts.map +1 -1
- package/dist/permissions.js +22 -3
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +56 -2
- package/dist/providers/gemini.js +15 -0
- package/dist/providers/openai.js +15 -0
- package/dist/providers/registry.js +56 -2
- package/dist/providers/types.d.ts +4 -1
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/query.d.ts +21 -2
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +84 -1
- package/dist/settings.js +15 -0
- package/dist/skills/frontmatter.d.ts +15 -0
- package/dist/skills/frontmatter.d.ts.map +1 -0
- package/dist/skills/frontmatter.js +66 -0
- package/dist/skills/index.d.ts +8 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +326 -0
- package/dist/skills/skills.d.ts +94 -0
- package/dist/skills/skills.d.ts.map +1 -0
- package/dist/skills/skills.js +324 -0
- package/dist/tools/ask-user-question.d.ts +7 -0
- package/dist/tools/ask-user-question.d.ts.map +1 -0
- package/dist/tools/ask-user-question.js +63 -0
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/bash.js +62 -2
- package/dist/tools/config.d.ts +7 -0
- package/dist/tools/config.d.ts.map +1 -0
- package/dist/tools/config.js +129 -0
- package/dist/tools/edit.js +15 -0
- package/dist/tools/exit-plan-mode.d.ts +7 -0
- package/dist/tools/exit-plan-mode.d.ts.map +1 -0
- package/dist/tools/exit-plan-mode.js +49 -0
- package/dist/tools/glob.js +15 -0
- package/dist/tools/grep.js +15 -0
- package/dist/tools/index.d.ts +7 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +521 -9
- package/dist/tools/mcp-resources.js +15 -0
- package/dist/tools/notebook-edit.d.ts +7 -0
- package/dist/tools/notebook-edit.d.ts.map +1 -0
- package/dist/tools/notebook-edit.js +98 -0
- package/dist/tools/presets.d.ts +2 -1
- package/dist/tools/presets.d.ts.map +1 -1
- package/dist/tools/presets.js +37 -4
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/read.js +27 -1
- package/dist/tools/registry.d.ts +2 -0
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +25 -0
- package/dist/tools/todo-write.d.ts +7 -0
- package/dist/tools/todo-write.d.ts.map +1 -0
- package/dist/tools/todo-write.js +84 -0
- package/dist/tools/web-fetch.d.ts +6 -0
- package/dist/tools/web-fetch.d.ts.map +1 -0
- package/dist/tools/web-fetch.js +100 -0
- package/dist/tools/web-search.d.ts +7 -0
- package/dist/tools/web-search.d.ts.map +1 -0
- package/dist/tools/web-search.js +93 -0
- package/dist/tools/write.js +15 -0
- package/dist/types.d.ts +360 -42
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +15 -0
- package/dist/utils/cost.js +15 -0
- package/dist/utils/session-store.d.ts +1 -1
- package/dist/utils/session-store.d.ts.map +1 -1
- package/dist/utils/session-store.js +64 -2
- package/dist/utils/system-prompt.d.ts +4 -0
- package/dist/utils/system-prompt.d.ts.map +1 -1
- package/dist/utils/system-prompt.js +326 -6
- package/package.json +4 -2
package/dist/mcp/client.d.ts
CHANGED
|
@@ -3,12 +3,15 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { ToolImplementation, ToolResult } from "../tools/registry.js";
|
|
5
5
|
import type { McpServerConfig, McpServerStatus, McpResourceInfo } from "./types.js";
|
|
6
|
+
import type { McpSetServersResult } from "../types.js";
|
|
6
7
|
export declare class McpClientManager {
|
|
7
8
|
private configs;
|
|
8
9
|
private servers;
|
|
10
|
+
private disabled;
|
|
9
11
|
constructor(configs: Record<string, McpServerConfig>);
|
|
10
12
|
connectAll(): Promise<void>;
|
|
11
13
|
private connectOne;
|
|
14
|
+
private toStatusConfig;
|
|
12
15
|
/**
|
|
13
16
|
* Get all MCP tools wrapped as ToolImplementation, namespaced as mcp__server__tool.
|
|
14
17
|
*/
|
|
@@ -19,6 +22,10 @@ export declare class McpClientManager {
|
|
|
19
22
|
})[]>;
|
|
20
23
|
readResource(serverName: string, uri: string): Promise<string>;
|
|
21
24
|
status(): McpServerStatus[];
|
|
25
|
+
reconnectServer(serverName: string): Promise<void>;
|
|
26
|
+
toggleServer(serverName: string, enabled: boolean): Promise<void>;
|
|
27
|
+
setServers(servers: Record<string, McpServerConfig>): Promise<McpSetServersResult>;
|
|
28
|
+
private closeOne;
|
|
22
29
|
closeAll(): Promise<void>;
|
|
23
30
|
}
|
|
24
31
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/mcp/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/mcp/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EAEf,eAAe,EAChB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/mcp/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EAEf,eAAe,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AASvD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,QAAQ,CAAqB;gBAEzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC;IAI9C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAKnB,UAAU;IAkGxB,OAAO,CAAC,cAAc;IAOtB;;OAEG;IACH,QAAQ,IAAI,kBAAkB,EAAE;IAsB1B,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IA2BnF,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,eAAe,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAC;IA4BrF,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAepE,MAAM,IAAI,eAAe,EAAE;IA0BrB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAalD,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BjE,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;YAmC1E,QAAQ;IAWhB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAMhC"}
|
package/dist/mcp/client.js
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
// @bun
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
2
4
|
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __toESM = (mod, isNodeMode, target) => {
|
|
8
|
+
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
9
|
+
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
10
|
+
for (let key of __getOwnPropNames(mod))
|
|
11
|
+
if (!__hasOwnProp.call(to, key))
|
|
12
|
+
__defProp(to, key, {
|
|
13
|
+
get: () => mod[key],
|
|
14
|
+
enumerable: true
|
|
15
|
+
});
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
3
18
|
var __export = (target, all) => {
|
|
4
19
|
for (var name in all)
|
|
5
20
|
__defProp(target, name, {
|
|
@@ -19,14 +34,29 @@ import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js";
|
|
|
19
34
|
class McpClientManager {
|
|
20
35
|
configs;
|
|
21
36
|
servers = new Map;
|
|
37
|
+
disabled = new Set;
|
|
22
38
|
constructor(configs) {
|
|
23
|
-
this.configs = configs;
|
|
39
|
+
this.configs = { ...configs };
|
|
24
40
|
}
|
|
25
41
|
async connectAll() {
|
|
26
42
|
const entries = Object.entries(this.configs);
|
|
27
43
|
await Promise.all(entries.map(([name, config]) => this.connectOne(name, config)));
|
|
28
44
|
}
|
|
29
45
|
async connectOne(name, config) {
|
|
46
|
+
if (this.disabled.has(name)) {
|
|
47
|
+
this.servers.set(name, {
|
|
48
|
+
name,
|
|
49
|
+
client: null,
|
|
50
|
+
tools: [],
|
|
51
|
+
status: {
|
|
52
|
+
name,
|
|
53
|
+
status: "disabled",
|
|
54
|
+
config: this.toStatusConfig(config),
|
|
55
|
+
scope: config.type === "sdk" ? "sdk" : "session"
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
30
60
|
try {
|
|
31
61
|
const client = new Client({ name: `fourmis-${name}`, version: "1.0.0" });
|
|
32
62
|
if (config.type === "sdk") {
|
|
@@ -60,13 +90,25 @@ class McpClientManager {
|
|
|
60
90
|
const tools = (toolsResult.tools ?? []).map((t) => ({
|
|
61
91
|
name: t.name,
|
|
62
92
|
description: t.description,
|
|
63
|
-
inputSchema: t.inputSchema
|
|
93
|
+
inputSchema: t.inputSchema,
|
|
94
|
+
annotations: t.annotations ? {
|
|
95
|
+
readOnly: t.annotations.readOnly,
|
|
96
|
+
destructive: t.annotations.destructive,
|
|
97
|
+
openWorld: t.annotations.openWorld
|
|
98
|
+
} : undefined
|
|
64
99
|
}));
|
|
65
100
|
this.servers.set(name, {
|
|
66
101
|
name,
|
|
67
102
|
client,
|
|
68
103
|
tools,
|
|
69
|
-
status: {
|
|
104
|
+
status: {
|
|
105
|
+
name,
|
|
106
|
+
status: "connected",
|
|
107
|
+
tools,
|
|
108
|
+
serverInfo: { name, version: "1.0.0" },
|
|
109
|
+
config: this.toStatusConfig(config),
|
|
110
|
+
scope: config.type === "sdk" ? "sdk" : "session"
|
|
111
|
+
}
|
|
70
112
|
});
|
|
71
113
|
} catch (err) {
|
|
72
114
|
const error = err instanceof Error ? err.message : String(err);
|
|
@@ -74,10 +116,22 @@ class McpClientManager {
|
|
|
74
116
|
name,
|
|
75
117
|
client: null,
|
|
76
118
|
tools: [],
|
|
77
|
-
status: {
|
|
119
|
+
status: {
|
|
120
|
+
name,
|
|
121
|
+
status: "failed",
|
|
122
|
+
error,
|
|
123
|
+
config: this.toStatusConfig(config),
|
|
124
|
+
scope: config.type === "sdk" ? "sdk" : "session"
|
|
125
|
+
}
|
|
78
126
|
});
|
|
79
127
|
}
|
|
80
128
|
}
|
|
129
|
+
toStatusConfig(config) {
|
|
130
|
+
if (config.type === "sdk") {
|
|
131
|
+
return { type: "sdk", name: config.name };
|
|
132
|
+
}
|
|
133
|
+
return config;
|
|
134
|
+
}
|
|
81
135
|
getTools() {
|
|
82
136
|
const result = [];
|
|
83
137
|
for (const [serverName, server] of this.servers) {
|
|
@@ -155,24 +209,104 @@ class McpClientManager {
|
|
|
155
209
|
}
|
|
156
210
|
status() {
|
|
157
211
|
const result = [];
|
|
158
|
-
for (const [name] of Object.entries(this.configs)) {
|
|
212
|
+
for (const [name, config] of Object.entries(this.configs)) {
|
|
159
213
|
const server = this.servers.get(name);
|
|
160
214
|
if (server) {
|
|
161
215
|
result.push(server.status);
|
|
216
|
+
} else if (this.disabled.has(name)) {
|
|
217
|
+
result.push({
|
|
218
|
+
name,
|
|
219
|
+
status: "disabled",
|
|
220
|
+
config: this.toStatusConfig(config),
|
|
221
|
+
scope: config.type === "sdk" ? "sdk" : "session"
|
|
222
|
+
});
|
|
162
223
|
} else {
|
|
163
|
-
result.push({
|
|
224
|
+
result.push({
|
|
225
|
+
name,
|
|
226
|
+
status: "pending",
|
|
227
|
+
config: this.toStatusConfig(config),
|
|
228
|
+
scope: config.type === "sdk" ? "sdk" : "session"
|
|
229
|
+
});
|
|
164
230
|
}
|
|
165
231
|
}
|
|
166
232
|
return result;
|
|
167
233
|
}
|
|
168
|
-
async
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
234
|
+
async reconnectServer(serverName) {
|
|
235
|
+
const config = this.configs[serverName];
|
|
236
|
+
if (!config) {
|
|
237
|
+
throw new Error(`MCP server "${serverName}" is not configured`);
|
|
238
|
+
}
|
|
239
|
+
await this.closeOne(serverName);
|
|
240
|
+
await this.connectOne(serverName, config);
|
|
241
|
+
const status = this.servers.get(serverName)?.status;
|
|
242
|
+
if (!status || status.status !== "connected") {
|
|
243
|
+
throw new Error(status?.error ?? `Failed to reconnect MCP server "${serverName}"`);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
async toggleServer(serverName, enabled) {
|
|
247
|
+
const config = this.configs[serverName];
|
|
248
|
+
if (!config) {
|
|
249
|
+
throw new Error(`MCP server "${serverName}" is not configured`);
|
|
250
|
+
}
|
|
251
|
+
if (!enabled) {
|
|
252
|
+
this.disabled.add(serverName);
|
|
253
|
+
await this.closeOne(serverName);
|
|
254
|
+
this.servers.set(serverName, {
|
|
255
|
+
name: serverName,
|
|
256
|
+
client: null,
|
|
257
|
+
tools: [],
|
|
258
|
+
status: {
|
|
259
|
+
name: serverName,
|
|
260
|
+
status: "disabled",
|
|
261
|
+
config: this.toStatusConfig(config),
|
|
262
|
+
scope: config.type === "sdk" ? "sdk" : "session"
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
this.disabled.delete(serverName);
|
|
268
|
+
await this.reconnectServer(serverName);
|
|
269
|
+
}
|
|
270
|
+
async setServers(servers) {
|
|
271
|
+
const prevNames = new Set(Object.keys(this.configs));
|
|
272
|
+
const nextNames = new Set(Object.keys(servers));
|
|
273
|
+
const added = [...nextNames].filter((n) => !prevNames.has(n));
|
|
274
|
+
const removed = [...prevNames].filter((n) => !nextNames.has(n));
|
|
275
|
+
const errors = {};
|
|
276
|
+
for (const name of removed) {
|
|
277
|
+
await this.closeOne(name);
|
|
278
|
+
delete this.configs[name];
|
|
279
|
+
this.disabled.delete(name);
|
|
280
|
+
this.servers.delete(name);
|
|
281
|
+
}
|
|
282
|
+
for (const [name, config] of Object.entries(servers)) {
|
|
283
|
+
const prev = this.configs[name];
|
|
284
|
+
this.configs[name] = config;
|
|
285
|
+
if (this.disabled.has(name))
|
|
286
|
+
continue;
|
|
287
|
+
if (!prev || JSON.stringify(this.toStatusConfig(prev)) !== JSON.stringify(this.toStatusConfig(config))) {
|
|
288
|
+
await this.closeOne(name);
|
|
289
|
+
await this.connectOne(name, config);
|
|
290
|
+
}
|
|
291
|
+
const status = this.servers.get(name)?.status;
|
|
292
|
+
if (!status || status.status === "failed") {
|
|
293
|
+
errors[name] = status?.error ?? "Failed to connect";
|
|
174
294
|
}
|
|
175
295
|
}
|
|
296
|
+
return { added, removed, errors };
|
|
297
|
+
}
|
|
298
|
+
async closeOne(serverName) {
|
|
299
|
+
const existing = this.servers.get(serverName);
|
|
300
|
+
if (existing?.client) {
|
|
301
|
+
try {
|
|
302
|
+
await existing.client.close();
|
|
303
|
+
} catch {}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
async closeAll() {
|
|
307
|
+
for (const [name] of this.servers) {
|
|
308
|
+
await this.closeOne(name);
|
|
309
|
+
}
|
|
176
310
|
this.servers.clear();
|
|
177
311
|
}
|
|
178
312
|
}
|
package/dist/mcp/index.js
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
// @bun
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
2
4
|
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __toESM = (mod, isNodeMode, target) => {
|
|
8
|
+
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
9
|
+
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
10
|
+
for (let key of __getOwnPropNames(mod))
|
|
11
|
+
if (!__hasOwnProp.call(to, key))
|
|
12
|
+
__defProp(to, key, {
|
|
13
|
+
get: () => mod[key],
|
|
14
|
+
enumerable: true
|
|
15
|
+
});
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
3
18
|
var __export = (target, all) => {
|
|
4
19
|
for (var name in all)
|
|
5
20
|
__defProp(target, name, {
|
|
@@ -19,14 +34,29 @@ import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js";
|
|
|
19
34
|
class McpClientManager {
|
|
20
35
|
configs;
|
|
21
36
|
servers = new Map;
|
|
37
|
+
disabled = new Set;
|
|
22
38
|
constructor(configs) {
|
|
23
|
-
this.configs = configs;
|
|
39
|
+
this.configs = { ...configs };
|
|
24
40
|
}
|
|
25
41
|
async connectAll() {
|
|
26
42
|
const entries = Object.entries(this.configs);
|
|
27
43
|
await Promise.all(entries.map(([name, config]) => this.connectOne(name, config)));
|
|
28
44
|
}
|
|
29
45
|
async connectOne(name, config) {
|
|
46
|
+
if (this.disabled.has(name)) {
|
|
47
|
+
this.servers.set(name, {
|
|
48
|
+
name,
|
|
49
|
+
client: null,
|
|
50
|
+
tools: [],
|
|
51
|
+
status: {
|
|
52
|
+
name,
|
|
53
|
+
status: "disabled",
|
|
54
|
+
config: this.toStatusConfig(config),
|
|
55
|
+
scope: config.type === "sdk" ? "sdk" : "session"
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
30
60
|
try {
|
|
31
61
|
const client = new Client({ name: `fourmis-${name}`, version: "1.0.0" });
|
|
32
62
|
if (config.type === "sdk") {
|
|
@@ -60,13 +90,25 @@ class McpClientManager {
|
|
|
60
90
|
const tools = (toolsResult.tools ?? []).map((t) => ({
|
|
61
91
|
name: t.name,
|
|
62
92
|
description: t.description,
|
|
63
|
-
inputSchema: t.inputSchema
|
|
93
|
+
inputSchema: t.inputSchema,
|
|
94
|
+
annotations: t.annotations ? {
|
|
95
|
+
readOnly: t.annotations.readOnly,
|
|
96
|
+
destructive: t.annotations.destructive,
|
|
97
|
+
openWorld: t.annotations.openWorld
|
|
98
|
+
} : undefined
|
|
64
99
|
}));
|
|
65
100
|
this.servers.set(name, {
|
|
66
101
|
name,
|
|
67
102
|
client,
|
|
68
103
|
tools,
|
|
69
|
-
status: {
|
|
104
|
+
status: {
|
|
105
|
+
name,
|
|
106
|
+
status: "connected",
|
|
107
|
+
tools,
|
|
108
|
+
serverInfo: { name, version: "1.0.0" },
|
|
109
|
+
config: this.toStatusConfig(config),
|
|
110
|
+
scope: config.type === "sdk" ? "sdk" : "session"
|
|
111
|
+
}
|
|
70
112
|
});
|
|
71
113
|
} catch (err) {
|
|
72
114
|
const error = err instanceof Error ? err.message : String(err);
|
|
@@ -74,10 +116,22 @@ class McpClientManager {
|
|
|
74
116
|
name,
|
|
75
117
|
client: null,
|
|
76
118
|
tools: [],
|
|
77
|
-
status: {
|
|
119
|
+
status: {
|
|
120
|
+
name,
|
|
121
|
+
status: "failed",
|
|
122
|
+
error,
|
|
123
|
+
config: this.toStatusConfig(config),
|
|
124
|
+
scope: config.type === "sdk" ? "sdk" : "session"
|
|
125
|
+
}
|
|
78
126
|
});
|
|
79
127
|
}
|
|
80
128
|
}
|
|
129
|
+
toStatusConfig(config) {
|
|
130
|
+
if (config.type === "sdk") {
|
|
131
|
+
return { type: "sdk", name: config.name };
|
|
132
|
+
}
|
|
133
|
+
return config;
|
|
134
|
+
}
|
|
81
135
|
getTools() {
|
|
82
136
|
const result = [];
|
|
83
137
|
for (const [serverName, server] of this.servers) {
|
|
@@ -155,24 +209,104 @@ class McpClientManager {
|
|
|
155
209
|
}
|
|
156
210
|
status() {
|
|
157
211
|
const result = [];
|
|
158
|
-
for (const [name] of Object.entries(this.configs)) {
|
|
212
|
+
for (const [name, config] of Object.entries(this.configs)) {
|
|
159
213
|
const server = this.servers.get(name);
|
|
160
214
|
if (server) {
|
|
161
215
|
result.push(server.status);
|
|
216
|
+
} else if (this.disabled.has(name)) {
|
|
217
|
+
result.push({
|
|
218
|
+
name,
|
|
219
|
+
status: "disabled",
|
|
220
|
+
config: this.toStatusConfig(config),
|
|
221
|
+
scope: config.type === "sdk" ? "sdk" : "session"
|
|
222
|
+
});
|
|
162
223
|
} else {
|
|
163
|
-
result.push({
|
|
224
|
+
result.push({
|
|
225
|
+
name,
|
|
226
|
+
status: "pending",
|
|
227
|
+
config: this.toStatusConfig(config),
|
|
228
|
+
scope: config.type === "sdk" ? "sdk" : "session"
|
|
229
|
+
});
|
|
164
230
|
}
|
|
165
231
|
}
|
|
166
232
|
return result;
|
|
167
233
|
}
|
|
168
|
-
async
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
234
|
+
async reconnectServer(serverName) {
|
|
235
|
+
const config = this.configs[serverName];
|
|
236
|
+
if (!config) {
|
|
237
|
+
throw new Error(`MCP server "${serverName}" is not configured`);
|
|
238
|
+
}
|
|
239
|
+
await this.closeOne(serverName);
|
|
240
|
+
await this.connectOne(serverName, config);
|
|
241
|
+
const status = this.servers.get(serverName)?.status;
|
|
242
|
+
if (!status || status.status !== "connected") {
|
|
243
|
+
throw new Error(status?.error ?? `Failed to reconnect MCP server "${serverName}"`);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
async toggleServer(serverName, enabled) {
|
|
247
|
+
const config = this.configs[serverName];
|
|
248
|
+
if (!config) {
|
|
249
|
+
throw new Error(`MCP server "${serverName}" is not configured`);
|
|
250
|
+
}
|
|
251
|
+
if (!enabled) {
|
|
252
|
+
this.disabled.add(serverName);
|
|
253
|
+
await this.closeOne(serverName);
|
|
254
|
+
this.servers.set(serverName, {
|
|
255
|
+
name: serverName,
|
|
256
|
+
client: null,
|
|
257
|
+
tools: [],
|
|
258
|
+
status: {
|
|
259
|
+
name: serverName,
|
|
260
|
+
status: "disabled",
|
|
261
|
+
config: this.toStatusConfig(config),
|
|
262
|
+
scope: config.type === "sdk" ? "sdk" : "session"
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
this.disabled.delete(serverName);
|
|
268
|
+
await this.reconnectServer(serverName);
|
|
269
|
+
}
|
|
270
|
+
async setServers(servers) {
|
|
271
|
+
const prevNames = new Set(Object.keys(this.configs));
|
|
272
|
+
const nextNames = new Set(Object.keys(servers));
|
|
273
|
+
const added = [...nextNames].filter((n) => !prevNames.has(n));
|
|
274
|
+
const removed = [...prevNames].filter((n) => !nextNames.has(n));
|
|
275
|
+
const errors = {};
|
|
276
|
+
for (const name of removed) {
|
|
277
|
+
await this.closeOne(name);
|
|
278
|
+
delete this.configs[name];
|
|
279
|
+
this.disabled.delete(name);
|
|
280
|
+
this.servers.delete(name);
|
|
281
|
+
}
|
|
282
|
+
for (const [name, config] of Object.entries(servers)) {
|
|
283
|
+
const prev = this.configs[name];
|
|
284
|
+
this.configs[name] = config;
|
|
285
|
+
if (this.disabled.has(name))
|
|
286
|
+
continue;
|
|
287
|
+
if (!prev || JSON.stringify(this.toStatusConfig(prev)) !== JSON.stringify(this.toStatusConfig(config))) {
|
|
288
|
+
await this.closeOne(name);
|
|
289
|
+
await this.connectOne(name, config);
|
|
290
|
+
}
|
|
291
|
+
const status = this.servers.get(name)?.status;
|
|
292
|
+
if (!status || status.status === "failed") {
|
|
293
|
+
errors[name] = status?.error ?? "Failed to connect";
|
|
174
294
|
}
|
|
175
295
|
}
|
|
296
|
+
return { added, removed, errors };
|
|
297
|
+
}
|
|
298
|
+
async closeOne(serverName) {
|
|
299
|
+
const existing = this.servers.get(serverName);
|
|
300
|
+
if (existing?.client) {
|
|
301
|
+
try {
|
|
302
|
+
await existing.client.close();
|
|
303
|
+
} catch {}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
async closeAll() {
|
|
307
|
+
for (const [name] of this.servers) {
|
|
308
|
+
await this.closeOne(name);
|
|
309
|
+
}
|
|
176
310
|
this.servers.clear();
|
|
177
311
|
}
|
|
178
312
|
}
|
package/dist/mcp/server.js
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
// @bun
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
2
4
|
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __toESM = (mod, isNodeMode, target) => {
|
|
8
|
+
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
9
|
+
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
10
|
+
for (let key of __getOwnPropNames(mod))
|
|
11
|
+
if (!__hasOwnProp.call(to, key))
|
|
12
|
+
__defProp(to, key, {
|
|
13
|
+
get: () => mod[key],
|
|
14
|
+
enumerable: true
|
|
15
|
+
});
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
3
18
|
var __export = (target, all) => {
|
|
4
19
|
for (var name in all)
|
|
5
20
|
__defProp(target, name, {
|
package/dist/mcp/types.d.ts
CHANGED
|
@@ -21,16 +21,28 @@ export type McpHttpConfig = {
|
|
|
21
21
|
url: string;
|
|
22
22
|
headers?: Record<string, string>;
|
|
23
23
|
};
|
|
24
|
+
export type McpClaudeAIProxyConfig = {
|
|
25
|
+
type: "claudeai-proxy";
|
|
26
|
+
url: string;
|
|
27
|
+
id: string;
|
|
28
|
+
};
|
|
24
29
|
export type McpSdkConfig = {
|
|
25
30
|
type: "sdk";
|
|
26
31
|
name: string;
|
|
27
32
|
instance: McpServerInstance;
|
|
28
33
|
};
|
|
29
34
|
export type McpServerConfig = McpStdioConfig | McpSseConfig | McpHttpConfig | McpSdkConfig;
|
|
35
|
+
export type McpServerConfigForProcessTransport = McpStdioConfig | McpSseConfig | McpHttpConfig | Omit<McpSdkConfig, "instance">;
|
|
36
|
+
export type McpServerStatusConfig = McpServerConfigForProcessTransport | McpClaudeAIProxyConfig;
|
|
30
37
|
export type McpToolInfo = {
|
|
31
38
|
name: string;
|
|
32
39
|
description?: string;
|
|
33
40
|
inputSchema?: Record<string, unknown>;
|
|
41
|
+
annotations?: {
|
|
42
|
+
readOnly?: boolean;
|
|
43
|
+
destructive?: boolean;
|
|
44
|
+
openWorld?: boolean;
|
|
45
|
+
};
|
|
34
46
|
};
|
|
35
47
|
export type McpResourceInfo = {
|
|
36
48
|
uri: string;
|
|
@@ -40,7 +52,13 @@ export type McpResourceInfo = {
|
|
|
40
52
|
};
|
|
41
53
|
export type McpServerStatus = {
|
|
42
54
|
name: string;
|
|
43
|
-
status: "connected" | "failed" | "pending" | "disabled";
|
|
55
|
+
status: "connected" | "failed" | "needs-auth" | "pending" | "disabled";
|
|
56
|
+
serverInfo?: {
|
|
57
|
+
name: string;
|
|
58
|
+
version: string;
|
|
59
|
+
};
|
|
60
|
+
config?: McpServerStatusConfig;
|
|
61
|
+
scope?: string;
|
|
44
62
|
tools?: McpToolInfo[];
|
|
45
63
|
error?: string;
|
|
46
64
|
};
|
package/dist/mcp/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,0EAA0E;AAC1E,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,iBAAiB,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG,YAAY,GAAG,aAAa,GAAG,YAAY,CAAC;AAE3F,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,0EAA0E;AAC1E,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,gBAAgB,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,iBAAiB,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG,YAAY,GAAG,aAAa,GAAG,YAAY,CAAC;AAE3F,MAAM,MAAM,kCAAkC,GAC1C,cAAc,GACd,YAAY,GACZ,aAAa,GACb,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAEnC,MAAM,MAAM,qBAAqB,GAAG,kCAAkC,GAAG,sBAAsB,CAAC;AAEhG,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE;QACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,GAAG,UAAU,CAAC;IACvE,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC"}
|
package/dist/memory/index.js
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
// @bun
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
2
4
|
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __toESM = (mod, isNodeMode, target) => {
|
|
8
|
+
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
9
|
+
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
10
|
+
for (let key of __getOwnPropNames(mod))
|
|
11
|
+
if (!__hasOwnProp.call(to, key))
|
|
12
|
+
__defProp(to, key, {
|
|
13
|
+
get: () => mod[key],
|
|
14
|
+
enumerable: true
|
|
15
|
+
});
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
3
18
|
var __export = (target, all) => {
|
|
4
19
|
for (var name in all)
|
|
5
20
|
__defProp(target, name, {
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
// @bun
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
2
4
|
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __toESM = (mod, isNodeMode, target) => {
|
|
8
|
+
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
9
|
+
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
10
|
+
for (let key of __getOwnPropNames(mod))
|
|
11
|
+
if (!__hasOwnProp.call(to, key))
|
|
12
|
+
__defProp(to, key, {
|
|
13
|
+
get: () => mod[key],
|
|
14
|
+
enumerable: true
|
|
15
|
+
});
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
3
18
|
var __export = (target, all) => {
|
|
4
19
|
for (var name in all)
|
|
5
20
|
__defProp(target, name, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EAGlB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AA+CrD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,eAAe,CAAC,CAAkB;gBAGxC,IAAI,GAAE,cAA0B,EAChC,UAAU,CAAC,EAAE,UAAU,EACvB,WAAW,CAAC,EAAE,iBAAiB,EAC/B,eAAe,CAAC,EAAE,eAAe;IAS7B,KAAK,CACT,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,EAAE;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GACpE,OAAO,CAAC,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EAGlB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AA+CrD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,IAAI,CAAiB;IAC7B,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,eAAe,CAAC,CAAkB;gBAGxC,IAAI,GAAE,cAA0B,EAChC,UAAU,CAAC,EAAE,UAAU,EACvB,WAAW,CAAC,EAAE,iBAAiB,EAC/B,eAAe,CAAC,EAAE,eAAe;IAS7B,KAAK,CACT,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,EAAE;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GACpE,OAAO,CAAC,gBAAgB,CAAC;IAwF5B,iEAAiE;IACjE,OAAO,CAAC,sBAAsB;IAiD9B,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAInC,OAAO,IAAI,cAAc;CAG1B"}
|
package/dist/permissions.js
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
// @bun
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
2
4
|
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __toESM = (mod, isNodeMode, target) => {
|
|
8
|
+
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
9
|
+
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
10
|
+
for (let key of __getOwnPropNames(mod))
|
|
11
|
+
if (!__hasOwnProp.call(to, key))
|
|
12
|
+
__defProp(to, key, {
|
|
13
|
+
get: () => mod[key],
|
|
14
|
+
enumerable: true
|
|
15
|
+
});
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
3
18
|
var __export = (target, all) => {
|
|
4
19
|
for (var name in all)
|
|
5
20
|
__defProp(target, name, {
|
|
@@ -13,8 +28,8 @@ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
|
13
28
|
var __require = import.meta.require;
|
|
14
29
|
|
|
15
30
|
// src/permissions.ts
|
|
16
|
-
var SAFE_TOOLS = new Set(["Read", "Glob", "Grep"]);
|
|
17
|
-
var EDIT_TOOLS = new Set(["Write", "Edit"]);
|
|
31
|
+
var SAFE_TOOLS = new Set(["Read", "Glob", "Grep", "WebFetch", "WebSearch"]);
|
|
32
|
+
var EDIT_TOOLS = new Set(["Write", "Edit", "NotebookEdit", "TodoWrite", "Config"]);
|
|
18
33
|
var FS_COMMANDS = ["mkdir", "touch", "rm", "mv", "cp"];
|
|
19
34
|
var DELEGATE_TOOLS = new Set(["Teammate", "Task", "TaskOutput", "TaskStop"]);
|
|
20
35
|
function normalizeRules(rules) {
|
|
@@ -94,7 +109,11 @@ class PermissionManager {
|
|
|
94
109
|
}
|
|
95
110
|
}
|
|
96
111
|
if (this.canUseTool) {
|
|
97
|
-
const result = await this.canUseTool(toolName, input,
|
|
112
|
+
const result = await this.canUseTool(toolName, input, {
|
|
113
|
+
...options,
|
|
114
|
+
toolUseID: options.toolUseId,
|
|
115
|
+
agentID: options.agentId
|
|
116
|
+
});
|
|
98
117
|
if (result.behavior === "allow" && result.updatedPermissions) {
|
|
99
118
|
this.applyPermissionUpdates(result.updatedPermissions);
|
|
100
119
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,SAAS,EACT,eAAe,EAIhB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAiB9C,qBAAa,gBAAiB,YAAW,eAAe;IACtD,IAAI,SAAe;IACnB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,SAAS,CAAU;gBAEf,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAwBpD,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,SAAS,EACT,eAAe,EAIhB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAiB9C,qBAAa,gBAAiB,YAAW,eAAe;IACtD,IAAI,SAAe;IACnB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,SAAS,CAAU;gBAEf,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAwBpD,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC;IA2L5D,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM;IAIvD,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIvC,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO;IAiBlD,OAAO,CAAC,eAAe;IAiCvB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,aAAa;CActB"}
|