@powerhousedao/reactor-mcp 4.1.0-dev.2 → 4.1.0-dev.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/dist/src/mcp/reactor.d.ts +630 -0
- package/dist/src/mcp/reactor.d.ts.map +1 -0
- package/dist/src/mcp/reactor.js +408 -0
- package/dist/src/mcp/reactor.js.map +1 -0
- package/dist/src/mcp/types.d.ts +24 -0
- package/dist/src/mcp/types.d.ts.map +1 -0
- package/dist/src/mcp/types.js +2 -0
- package/dist/src/mcp/types.js.map +1 -0
- package/dist/src/mcp/utils.d.ts +36 -0
- package/dist/src/mcp/utils.d.ts.map +1 -0
- package/dist/src/mcp/utils.js +62 -0
- package/dist/src/mcp/utils.js.map +1 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/package.json +10 -6
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { toolWithCallback } from "./utils.js";
|
|
3
|
+
export const getDocumentTool = {
|
|
4
|
+
name: "getDocument",
|
|
5
|
+
description: "Retrieve a document by its ID",
|
|
6
|
+
inputSchema: {
|
|
7
|
+
id: z.string().describe("ID of the document to retrieve"),
|
|
8
|
+
},
|
|
9
|
+
outputSchema: {
|
|
10
|
+
document: z.object({}).describe("Document object"), // TODO: Define document schema
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
export const createDocumentTool = {
|
|
14
|
+
name: "createDocument",
|
|
15
|
+
description: "Create a new document",
|
|
16
|
+
inputSchema: {
|
|
17
|
+
documentType: z.string().describe("Type of the document to create"),
|
|
18
|
+
documentId: z.string().optional().describe("Optional ID for the document"),
|
|
19
|
+
},
|
|
20
|
+
outputSchema: {
|
|
21
|
+
result: z
|
|
22
|
+
.object({
|
|
23
|
+
status: z
|
|
24
|
+
.enum(["SUCCESS", "CONFLICT", "MISSING", "ERROR"])
|
|
25
|
+
.describe("Operation status"),
|
|
26
|
+
error: z
|
|
27
|
+
.string()
|
|
28
|
+
.optional()
|
|
29
|
+
.describe("Error details if operation failed"), // TODO: Define error schema
|
|
30
|
+
operations: z
|
|
31
|
+
.array(z.object({}))
|
|
32
|
+
.describe("Array of operations created"), // TODO: Define operation schema
|
|
33
|
+
document: z.object({}).optional().describe("Updated document"), // TODO: Define document schema
|
|
34
|
+
signals: z.array(z.object({})).describe("Array of signals generated"), // TODO: Define signal schema
|
|
35
|
+
})
|
|
36
|
+
.describe("Operation result"),
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
export const getDocumentsTool = {
|
|
40
|
+
name: "getDocuments",
|
|
41
|
+
description: "List documents in a drive",
|
|
42
|
+
inputSchema: {
|
|
43
|
+
parentId: z.string().describe("ID of the drive"),
|
|
44
|
+
},
|
|
45
|
+
outputSchema: {
|
|
46
|
+
documentIds: z.array(z.string()).describe("Array of document IDs"),
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
export const deleteDocumentTool = {
|
|
50
|
+
name: "deleteDocument",
|
|
51
|
+
description: "Delete a document",
|
|
52
|
+
inputSchema: {
|
|
53
|
+
documentId: z.string().describe("ID of the document to delete"),
|
|
54
|
+
},
|
|
55
|
+
outputSchema: {
|
|
56
|
+
success: z.boolean().describe("Whether the deletion was successful"),
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
export const addActionTool = {
|
|
60
|
+
name: "addAction",
|
|
61
|
+
description: "Add an action to a document",
|
|
62
|
+
inputSchema: {
|
|
63
|
+
documentId: z.string().describe("ID of the document"),
|
|
64
|
+
action: z
|
|
65
|
+
.object({
|
|
66
|
+
type: z.string().describe("The name of the action"),
|
|
67
|
+
input: z
|
|
68
|
+
.union([
|
|
69
|
+
z.string(),
|
|
70
|
+
z.number(),
|
|
71
|
+
z.boolean(),
|
|
72
|
+
z.object({}),
|
|
73
|
+
z.array(z.any()),
|
|
74
|
+
z.null(),
|
|
75
|
+
])
|
|
76
|
+
.describe("The payload of the action"),
|
|
77
|
+
scope: z.string().describe("The scope of the action"),
|
|
78
|
+
context: z.object({}).optional().describe("Optional action context"), // TODO: Define context schema
|
|
79
|
+
})
|
|
80
|
+
.strict()
|
|
81
|
+
.describe("Action to add to the document"),
|
|
82
|
+
},
|
|
83
|
+
outputSchema: {
|
|
84
|
+
result: z
|
|
85
|
+
.object({
|
|
86
|
+
status: z
|
|
87
|
+
.enum(["SUCCESS", "CONFLICT", "MISSING", "ERROR"])
|
|
88
|
+
.describe("Operation status"),
|
|
89
|
+
error: z
|
|
90
|
+
.string()
|
|
91
|
+
.optional()
|
|
92
|
+
.describe("Error details if operation failed"), // TODO: Define error schema
|
|
93
|
+
operations: z
|
|
94
|
+
.array(z.object({}))
|
|
95
|
+
.describe("Array of operations created"), // TODO: Define operation schema
|
|
96
|
+
document: z.object({}).optional().describe("Updated document"), // TODO: Define document schema
|
|
97
|
+
signals: z.array(z.object({})).describe("Array of signals generated"), // TODO: Define signal schema
|
|
98
|
+
})
|
|
99
|
+
.describe("Operation result"),
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
export const addOperationTool = {
|
|
103
|
+
name: "addOperation",
|
|
104
|
+
description: "Add an operation to a document",
|
|
105
|
+
inputSchema: {
|
|
106
|
+
documentId: z.string().describe("ID of the document"),
|
|
107
|
+
operation: z
|
|
108
|
+
.object({
|
|
109
|
+
type: z.string().describe("The name of the action"),
|
|
110
|
+
input: z
|
|
111
|
+
.union([
|
|
112
|
+
z.string(),
|
|
113
|
+
z.number(),
|
|
114
|
+
z.boolean(),
|
|
115
|
+
z.object({}),
|
|
116
|
+
z.array(z.any()),
|
|
117
|
+
z.null(),
|
|
118
|
+
])
|
|
119
|
+
.describe("The payload of the action"),
|
|
120
|
+
scope: z.string().describe("The scope of the action"),
|
|
121
|
+
index: z.number().describe("Position of the operation in the history"),
|
|
122
|
+
timestamp: z
|
|
123
|
+
.string()
|
|
124
|
+
.describe("Timestamp of when the operation was added"),
|
|
125
|
+
hash: z.string().describe("Hash of the resulting document data"),
|
|
126
|
+
skip: z.number().describe("The number of operations skipped"),
|
|
127
|
+
error: z
|
|
128
|
+
.string()
|
|
129
|
+
.optional()
|
|
130
|
+
.describe("Error message for a failed action"),
|
|
131
|
+
id: z.string().optional().describe("Unique operation id"),
|
|
132
|
+
context: z.object({}).optional().describe("Optional action context"), // TODO: Define context schema
|
|
133
|
+
})
|
|
134
|
+
.strict()
|
|
135
|
+
.describe("Operation to add to the document"),
|
|
136
|
+
},
|
|
137
|
+
outputSchema: {
|
|
138
|
+
result: z
|
|
139
|
+
.object({
|
|
140
|
+
status: z
|
|
141
|
+
.enum(["SUCCESS", "CONFLICT", "MISSING", "ERROR"])
|
|
142
|
+
.describe("Operation status"),
|
|
143
|
+
error: z
|
|
144
|
+
.string()
|
|
145
|
+
.optional()
|
|
146
|
+
.describe("Error details if operation failed"), // TODO: Define error schema
|
|
147
|
+
operations: z
|
|
148
|
+
.array(z.object({}))
|
|
149
|
+
.describe("Array of operations created"), // TODO: Define operation schema
|
|
150
|
+
document: z.object({}).optional().describe("Updated document"), // TODO: Define document schema
|
|
151
|
+
signals: z.array(z.object({})).describe("Array of signals generated"), // TODO: Define signal schema
|
|
152
|
+
})
|
|
153
|
+
.describe("Operation result"),
|
|
154
|
+
},
|
|
155
|
+
};
|
|
156
|
+
// Drive Operation Tools
|
|
157
|
+
export const getDrivesTool = {
|
|
158
|
+
name: "getDrives",
|
|
159
|
+
description: "List all drives",
|
|
160
|
+
inputSchema: {},
|
|
161
|
+
outputSchema: {
|
|
162
|
+
driveIds: z.array(z.string()).describe("Array of drive IDs"),
|
|
163
|
+
},
|
|
164
|
+
};
|
|
165
|
+
export const addDriveTool = {
|
|
166
|
+
name: "addDrive",
|
|
167
|
+
description: "Create a new drive",
|
|
168
|
+
inputSchema: {
|
|
169
|
+
driveInput: z
|
|
170
|
+
.object({
|
|
171
|
+
global: z
|
|
172
|
+
.object({
|
|
173
|
+
name: z.string().describe("Name of the drive"),
|
|
174
|
+
icon: z
|
|
175
|
+
.string()
|
|
176
|
+
.nullable()
|
|
177
|
+
.optional()
|
|
178
|
+
.describe("Optional icon for the drive"),
|
|
179
|
+
})
|
|
180
|
+
.describe("Global drive properties"),
|
|
181
|
+
id: z.string().optional().describe("Optional drive ID"),
|
|
182
|
+
slug: z.string().optional().describe("Optional drive slug"),
|
|
183
|
+
preferredEditor: z
|
|
184
|
+
.string()
|
|
185
|
+
.optional()
|
|
186
|
+
.describe("Optional preferred editor"),
|
|
187
|
+
local: z
|
|
188
|
+
.object({
|
|
189
|
+
availableOffline: z
|
|
190
|
+
.boolean()
|
|
191
|
+
.optional()
|
|
192
|
+
.describe("Whether drive is available offline"),
|
|
193
|
+
sharingType: z
|
|
194
|
+
.string()
|
|
195
|
+
.nullable()
|
|
196
|
+
.optional()
|
|
197
|
+
.describe("Sharing type"),
|
|
198
|
+
})
|
|
199
|
+
.optional()
|
|
200
|
+
.describe("Optional local state properties"),
|
|
201
|
+
})
|
|
202
|
+
.describe("Drive configuration"),
|
|
203
|
+
},
|
|
204
|
+
outputSchema: {
|
|
205
|
+
drive: z.object({}).describe("Created drive document"), // TODO: Define DocumentDriveDocument schema
|
|
206
|
+
},
|
|
207
|
+
};
|
|
208
|
+
export const getDriveTool = {
|
|
209
|
+
name: "getDrive",
|
|
210
|
+
description: "Get a specific drive",
|
|
211
|
+
inputSchema: {
|
|
212
|
+
driveId: z.string().describe("ID of the drive to retrieve"),
|
|
213
|
+
options: z
|
|
214
|
+
.object({
|
|
215
|
+
revisions: z
|
|
216
|
+
.record(z.number())
|
|
217
|
+
.optional()
|
|
218
|
+
.describe("Optional revision filter"),
|
|
219
|
+
checkHashes: z.boolean().optional().describe("Whether to check hashes"),
|
|
220
|
+
// TODO: Add other ReducerOptions if needed
|
|
221
|
+
})
|
|
222
|
+
.optional()
|
|
223
|
+
.describe("Optional get document options"),
|
|
224
|
+
},
|
|
225
|
+
outputSchema: {
|
|
226
|
+
drive: z.object({}).describe("Drive document"), // TODO: Define DocumentDriveDocument schema
|
|
227
|
+
},
|
|
228
|
+
};
|
|
229
|
+
export const deleteDriveTool = {
|
|
230
|
+
name: "deleteDrive",
|
|
231
|
+
description: "Delete a drive",
|
|
232
|
+
inputSchema: {
|
|
233
|
+
driveId: z.string().describe("ID of the drive to delete"),
|
|
234
|
+
},
|
|
235
|
+
outputSchema: {
|
|
236
|
+
success: z.boolean().describe("Whether the deletion was successful"),
|
|
237
|
+
},
|
|
238
|
+
};
|
|
239
|
+
export const addRemoteDriveTool = {
|
|
240
|
+
name: "addRemoteDrive",
|
|
241
|
+
description: "Connect to a remote drive",
|
|
242
|
+
inputSchema: {
|
|
243
|
+
url: z.string().describe("URL of the remote drive"),
|
|
244
|
+
options: z
|
|
245
|
+
.object({
|
|
246
|
+
availableOffline: z
|
|
247
|
+
.boolean()
|
|
248
|
+
.describe("Whether drive is available offline"),
|
|
249
|
+
sharingType: z.string().nullable().optional().describe("Sharing type"),
|
|
250
|
+
pullFilter: z
|
|
251
|
+
.object({
|
|
252
|
+
branch: z
|
|
253
|
+
.array(z.string())
|
|
254
|
+
.nullable()
|
|
255
|
+
.optional()
|
|
256
|
+
.describe("Branch filter"),
|
|
257
|
+
documentId: z
|
|
258
|
+
.array(z.string())
|
|
259
|
+
.nullable()
|
|
260
|
+
.optional()
|
|
261
|
+
.describe("Document ID filter"),
|
|
262
|
+
documentType: z
|
|
263
|
+
.array(z.string())
|
|
264
|
+
.nullable()
|
|
265
|
+
.optional()
|
|
266
|
+
.describe("Document type filter"),
|
|
267
|
+
scope: z
|
|
268
|
+
.array(z.string())
|
|
269
|
+
.nullable()
|
|
270
|
+
.optional()
|
|
271
|
+
.describe("Scope filter"),
|
|
272
|
+
})
|
|
273
|
+
.optional()
|
|
274
|
+
.describe("Optional pull filter"),
|
|
275
|
+
pullInterval: z
|
|
276
|
+
.number()
|
|
277
|
+
.optional()
|
|
278
|
+
.describe("Pull interval in milliseconds"),
|
|
279
|
+
})
|
|
280
|
+
.describe("Remote drive options"),
|
|
281
|
+
},
|
|
282
|
+
outputSchema: {
|
|
283
|
+
drive: z.object({}).describe("Connected remote drive document"), // TODO: Define DocumentDriveDocument schema
|
|
284
|
+
},
|
|
285
|
+
};
|
|
286
|
+
// All tools array for type inference
|
|
287
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
288
|
+
const allTools = [
|
|
289
|
+
getDocumentTool,
|
|
290
|
+
createDocumentTool,
|
|
291
|
+
getDocumentsTool,
|
|
292
|
+
deleteDocumentTool,
|
|
293
|
+
addActionTool,
|
|
294
|
+
addOperationTool,
|
|
295
|
+
getDrivesTool,
|
|
296
|
+
addDriveTool,
|
|
297
|
+
getDriveTool,
|
|
298
|
+
deleteDriveTool,
|
|
299
|
+
addRemoteDriveTool,
|
|
300
|
+
];
|
|
301
|
+
export async function createReactorMcpProvider(reactor) {
|
|
302
|
+
await reactor.initialize();
|
|
303
|
+
const tools = {
|
|
304
|
+
getDocument: toolWithCallback(getDocumentTool, async (params) => {
|
|
305
|
+
const doc = await reactor.getDocument(params.id);
|
|
306
|
+
return { document: doc };
|
|
307
|
+
}),
|
|
308
|
+
createDocument: toolWithCallback(createDocumentTool, async (params) => {
|
|
309
|
+
// Create document input based on provided parameters
|
|
310
|
+
const createInput = {
|
|
311
|
+
documentType: params.documentType,
|
|
312
|
+
...(params.documentId && { id: params.documentId }),
|
|
313
|
+
};
|
|
314
|
+
const result = await reactor.queueDocument(createInput);
|
|
315
|
+
return {
|
|
316
|
+
result: {
|
|
317
|
+
...result,
|
|
318
|
+
error: result.error?.message,
|
|
319
|
+
},
|
|
320
|
+
};
|
|
321
|
+
}),
|
|
322
|
+
getDocuments: toolWithCallback(getDocumentsTool, async (params) => {
|
|
323
|
+
const documentIds = await reactor.getDocuments(params.parentId);
|
|
324
|
+
return { documentIds };
|
|
325
|
+
}),
|
|
326
|
+
deleteDocument: toolWithCallback(deleteDocumentTool, async (params) => {
|
|
327
|
+
try {
|
|
328
|
+
await reactor.deleteDocument(params.documentId);
|
|
329
|
+
return { success: true };
|
|
330
|
+
}
|
|
331
|
+
catch {
|
|
332
|
+
return { success: false };
|
|
333
|
+
}
|
|
334
|
+
}),
|
|
335
|
+
addAction: toolWithCallback(addActionTool, async (params) => {
|
|
336
|
+
const result = await reactor.addAction(params.documentId, params.action);
|
|
337
|
+
return {
|
|
338
|
+
result: {
|
|
339
|
+
...result,
|
|
340
|
+
error: result.error?.message,
|
|
341
|
+
},
|
|
342
|
+
};
|
|
343
|
+
}),
|
|
344
|
+
addOperation: toolWithCallback(addOperationTool, async (params) => {
|
|
345
|
+
const result = await reactor.addOperation(params.documentId, params.operation);
|
|
346
|
+
return {
|
|
347
|
+
result: {
|
|
348
|
+
...result,
|
|
349
|
+
error: typeof result.error === "string"
|
|
350
|
+
? result.error
|
|
351
|
+
: result.error?.message,
|
|
352
|
+
},
|
|
353
|
+
};
|
|
354
|
+
}),
|
|
355
|
+
// Drive operation implementations
|
|
356
|
+
getDrives: toolWithCallback(getDrivesTool, async () => {
|
|
357
|
+
const driveIds = await reactor.getDrives();
|
|
358
|
+
return { driveIds };
|
|
359
|
+
}),
|
|
360
|
+
addDrive: toolWithCallback(addDriveTool, async (params) => {
|
|
361
|
+
// Extract preferredEditor and create proper DriveInput
|
|
362
|
+
const { preferredEditor, ...driveInput } = params.driveInput;
|
|
363
|
+
const drive = await reactor.addDrive(driveInput, preferredEditor);
|
|
364
|
+
return { drive };
|
|
365
|
+
}),
|
|
366
|
+
getDrive: toolWithCallback(getDriveTool, async (params) => {
|
|
367
|
+
const drive = await reactor.getDrive(params.driveId, params.options);
|
|
368
|
+
return { drive };
|
|
369
|
+
}),
|
|
370
|
+
deleteDrive: toolWithCallback(deleteDriveTool, async (params) => {
|
|
371
|
+
try {
|
|
372
|
+
await reactor.deleteDrive(params.driveId);
|
|
373
|
+
return { success: true };
|
|
374
|
+
}
|
|
375
|
+
catch {
|
|
376
|
+
return { success: false };
|
|
377
|
+
}
|
|
378
|
+
}),
|
|
379
|
+
addRemoteDrive: toolWithCallback(addRemoteDriveTool, async (params) => {
|
|
380
|
+
const { sharingType, pullFilter, ...restOptions } = params.options;
|
|
381
|
+
const drive = await reactor.addRemoteDrive(params.url, {
|
|
382
|
+
...restOptions,
|
|
383
|
+
listeners: [],
|
|
384
|
+
triggers: [],
|
|
385
|
+
sharingType: sharingType ?? null,
|
|
386
|
+
...(pullFilter && {
|
|
387
|
+
pullFilter: {
|
|
388
|
+
branch: pullFilter.branch === undefined ? [] : pullFilter.branch,
|
|
389
|
+
documentId: pullFilter.documentId === undefined ? [] : pullFilter.documentId,
|
|
390
|
+
documentType: pullFilter.documentType === undefined
|
|
391
|
+
? []
|
|
392
|
+
: pullFilter.documentType,
|
|
393
|
+
scope: pullFilter.scope === undefined ? [] : pullFilter.scope,
|
|
394
|
+
},
|
|
395
|
+
}),
|
|
396
|
+
});
|
|
397
|
+
return { drive };
|
|
398
|
+
}),
|
|
399
|
+
};
|
|
400
|
+
const resources = {};
|
|
401
|
+
const prompts = {};
|
|
402
|
+
return {
|
|
403
|
+
tools,
|
|
404
|
+
resources,
|
|
405
|
+
prompts,
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
//# sourceMappingURL=reactor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactor.js","sourceRoot":"","sources":["../../../src/mcp/reactor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ToolCallback } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { Prompt, Resource, ToolAnnotations } from "@modelcontextprotocol/sdk/types.js";
|
|
3
|
+
import type { z, ZodRawShape } from "zod";
|
|
4
|
+
export type ExtractCallbackFromTool<T extends ToolSchema> = T extends {
|
|
5
|
+
inputSchema: infer S;
|
|
6
|
+
} ? ToolCallback<S extends ZodRawShape ? S : undefined> : ToolCallback;
|
|
7
|
+
export type ToolWithCallback<T extends ToolSchema = ToolSchema> = T & {
|
|
8
|
+
callback: ExtractCallbackFromTool<T>;
|
|
9
|
+
};
|
|
10
|
+
export type ToolSchema<InputArgs extends ZodRawShape = ZodRawShape, OutputArgs extends ZodRawShape = ZodRawShape> = {
|
|
11
|
+
name: string;
|
|
12
|
+
title?: string;
|
|
13
|
+
description?: string;
|
|
14
|
+
inputSchema?: InputArgs;
|
|
15
|
+
outputSchema?: OutputArgs;
|
|
16
|
+
annotations?: ToolAnnotations;
|
|
17
|
+
};
|
|
18
|
+
export type ResolveZodSchema<T> = T extends z.ZodRawShape ? z.infer<z.ZodObject<T>> : T;
|
|
19
|
+
export interface IMcpProvider<T extends ToolWithCallback = ToolWithCallback, R extends Resource = Resource, P extends Prompt = Prompt> {
|
|
20
|
+
tools: Record<T["name"], ToolWithCallback<T>>;
|
|
21
|
+
resources: Record<R["name"], R>;
|
|
22
|
+
prompts: Record<P["name"], P>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/mcp/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,KAAK,EACV,MAAM,EACN,QAAQ,EACR,eAAe,EAChB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAE1C,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,UAAU,IAAI,CAAC,SAAS;IACpE,WAAW,EAAE,MAAM,CAAC,CAAC;CACtB,GACG,YAAY,CAAC,CAAC,SAAS,WAAW,GAAG,CAAC,GAAG,SAAS,CAAC,GACnD,YAAY,CAAC;AAEjB,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,IAAI,CAAC,GAAG;IACpE,QAAQ,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,UAAU,CACpB,SAAS,SAAS,WAAW,GAAG,WAAW,EAC3C,UAAU,SAAS,WAAW,GAAG,WAAW,IAC1C;IACF,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,GACrD,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GACvB,CAAC,CAAC;AAEN,MAAM,WAAW,YAAY,CAC3B,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,EAC7C,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,CAAC,SAAS,MAAM,GAAG,MAAM;IAEzB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;CAC/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/mcp/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { ResolveZodSchema, ToolSchema } from "./types.js";
|
|
3
|
+
export declare class InvalidToolOutputError extends Error {
|
|
4
|
+
constructor(zodError: z.ZodError);
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Creates a tool with a callback function that handles the tool execution,
|
|
8
|
+
* ensuring the output is valid and errors are handled and returned correctly.
|
|
9
|
+
* @param tool The tool schema to wrap.
|
|
10
|
+
* @param toolCallback The callback function to execute when the tool is called.
|
|
11
|
+
* @returns A CallToolResult with structuredContent if OutputSchema is defined or content if undefined. If the
|
|
12
|
+
* callback throws an error, the result will have isError set to true and the error message in the content.
|
|
13
|
+
*/
|
|
14
|
+
export declare function toolWithCallback<T extends ToolSchema>(tool: T, toolCallback: (args: ResolveZodSchema<T["inputSchema"]>) => ResolveZodSchema<T["outputSchema"]> | Promise<ResolveZodSchema<T["outputSchema"]>>): T & {
|
|
15
|
+
callback: (args: ResolveZodSchema<T["inputSchema"]>) => Promise<{
|
|
16
|
+
readonly content: {
|
|
17
|
+
type: "text";
|
|
18
|
+
text: string;
|
|
19
|
+
mimeType: string;
|
|
20
|
+
}[];
|
|
21
|
+
readonly structuredContent: {
|
|
22
|
+
[x: string]: any;
|
|
23
|
+
} | undefined;
|
|
24
|
+
isError?: undefined;
|
|
25
|
+
} | {
|
|
26
|
+
readonly isError: true;
|
|
27
|
+
readonly content: [{
|
|
28
|
+
readonly type: "text";
|
|
29
|
+
readonly text: `Error: ${string}`;
|
|
30
|
+
}];
|
|
31
|
+
readonly structuredContent: {
|
|
32
|
+
readonly error: string;
|
|
33
|
+
};
|
|
34
|
+
}>;
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/mcp/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE/D,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,QAAQ,EAAE,CAAC,CAAC,QAAQ;CAKjC;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,UAAU,EACnD,IAAI,EAAE,CAAC,EACP,YAAY,EAAE,CACZ,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,KAEtC,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,GACnC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;qBAKX,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;EAyCxE"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export class InvalidToolOutputError extends Error {
|
|
3
|
+
constructor(zodError) {
|
|
4
|
+
super("Invalid tool output\n" + zodError.message);
|
|
5
|
+
this.name = "InvalidToolOutputError";
|
|
6
|
+
this.cause = zodError;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Creates a tool with a callback function that handles the tool execution,
|
|
11
|
+
* ensuring the output is valid and errors are handled and returned correctly.
|
|
12
|
+
* @param tool The tool schema to wrap.
|
|
13
|
+
* @param toolCallback The callback function to execute when the tool is called.
|
|
14
|
+
* @returns A CallToolResult with structuredContent if OutputSchema is defined or content if undefined. If the
|
|
15
|
+
* callback throws an error, the result will have isError set to true and the error message in the content.
|
|
16
|
+
*/
|
|
17
|
+
export function toolWithCallback(tool, toolCallback) {
|
|
18
|
+
const outputSchema = tool.outputSchema
|
|
19
|
+
? z.object(tool.outputSchema)
|
|
20
|
+
: undefined;
|
|
21
|
+
const wrappedCallback = async (args) => {
|
|
22
|
+
try {
|
|
23
|
+
const result = await toolCallback(args);
|
|
24
|
+
const validResult = outputSchema?.safeParse(result);
|
|
25
|
+
if (validResult && !validResult.success) {
|
|
26
|
+
throw new InvalidToolOutputError(validResult.error);
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
content: outputSchema
|
|
30
|
+
? []
|
|
31
|
+
: [
|
|
32
|
+
{
|
|
33
|
+
type: "text",
|
|
34
|
+
text: JSON.stringify(result),
|
|
35
|
+
mimeType: "application/json",
|
|
36
|
+
},
|
|
37
|
+
],
|
|
38
|
+
structuredContent: outputSchema ? result : undefined,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
const errorString = error instanceof Error ? error.message : String(error);
|
|
43
|
+
return {
|
|
44
|
+
isError: true,
|
|
45
|
+
content: [
|
|
46
|
+
{
|
|
47
|
+
type: "text",
|
|
48
|
+
text: `Error: ${errorString}`,
|
|
49
|
+
},
|
|
50
|
+
],
|
|
51
|
+
structuredContent: {
|
|
52
|
+
error: errorString,
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
return {
|
|
58
|
+
...tool,
|
|
59
|
+
callback: wrappedCallback,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/mcp/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,QAAoB;QAC9B,KAAK,CAAC,uBAAuB,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;IACxB,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAO,EACP,YAIgD;IAEhD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY;QACpC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;QAC7B,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,eAAe,GAAG,KAAK,EAAE,IAAwC,EAAE,EAAE;QACzE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;YAExC,MAAM,WAAW,GAAG,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;YACpD,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;gBACxC,MAAM,IAAI,sBAAsB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACtD,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,YAAY;oBACnB,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC;wBACE;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;4BAC5B,QAAQ,EAAE,kBAAkB;yBAC7B;qBACF;gBACL,iBAAiB,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;aACnB,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,WAAW,GACf,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACzD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,UAAU,WAAW,EAAE;qBAC9B;iBACF;gBACD,iBAAiB,EAAE;oBACjB,KAAK,EAAE,WAAW;iBACnB;aACgC,CAAC;QACtC,CAAC;IACH,CAAC,CAAC;IACF,OAAO;QACL,GAAG,IAAI;QACP,QAAQ,EAAE,eAAe;KAC1B,CAAC;AACJ,CAAC"}
|