@powerhousedao/reactor-mcp 4.1.0-dev.2 → 4.1.0-dev.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.
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -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"}