@powerhousedao/reactor-mcp 4.1.0-dev.2 → 4.1.0-dev.21

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.
Files changed (51) hide show
  1. package/dist/src/cli.js +7 -3
  2. package/dist/src/cli.js.map +1 -1
  3. package/dist/src/express.d.ts +5 -0
  4. package/dist/src/express.d.ts.map +1 -0
  5. package/dist/src/express.js +59 -0
  6. package/dist/src/express.js.map +1 -0
  7. package/dist/src/index.d.ts +1 -1
  8. package/dist/src/index.d.ts.map +1 -1
  9. package/dist/src/index.js +1 -10
  10. package/dist/src/index.js.map +1 -1
  11. package/dist/src/logger.d.ts +3 -0
  12. package/dist/src/logger.d.ts.map +1 -0
  13. package/dist/src/logger.js +3 -0
  14. package/dist/src/logger.js.map +1 -0
  15. package/dist/src/sdk/chat.d.ts +19 -0
  16. package/dist/src/sdk/chat.d.ts.map +1 -0
  17. package/dist/src/sdk/chat.js +60 -0
  18. package/dist/src/sdk/chat.js.map +1 -0
  19. package/dist/src/server.d.ts +3 -2
  20. package/dist/src/server.d.ts.map +1 -1
  21. package/dist/src/server.js +38 -762
  22. package/dist/src/server.js.map +1 -1
  23. package/dist/src/stdio/index.d.ts +7 -0
  24. package/dist/src/stdio/index.d.ts.map +1 -0
  25. package/dist/src/stdio/index.js +84 -0
  26. package/dist/src/stdio/index.js.map +1 -0
  27. package/dist/src/stdio/loader.d.ts +18 -0
  28. package/dist/src/stdio/loader.d.ts.map +1 -0
  29. package/dist/src/stdio/loader.js +86 -0
  30. package/dist/src/stdio/loader.js.map +1 -0
  31. package/dist/src/tools/reactor.d.ts +847 -0
  32. package/dist/src/tools/reactor.d.ts.map +1 -0
  33. package/dist/src/tools/reactor.js +462 -0
  34. package/dist/src/tools/reactor.js.map +1 -0
  35. package/dist/src/tools/types.d.ts +24 -0
  36. package/dist/src/tools/types.d.ts.map +1 -0
  37. package/dist/src/tools/types.js +2 -0
  38. package/dist/src/tools/types.js.map +1 -0
  39. package/dist/src/tools/utils.d.ts +23 -0
  40. package/dist/src/tools/utils.d.ts.map +1 -0
  41. package/dist/src/{utils.js → tools/utils.js} +46 -3
  42. package/dist/src/tools/utils.js.map +1 -0
  43. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  44. package/package.json +18 -9
  45. package/dist/src/reactor.d.ts +0 -43
  46. package/dist/src/reactor.d.ts.map +0 -1
  47. package/dist/src/reactor.js +0 -142
  48. package/dist/src/reactor.js.map +0 -1
  49. package/dist/src/utils.d.ts +0 -10
  50. package/dist/src/utils.d.ts.map +0 -1
  51. package/dist/src/utils.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactor.d.ts","sourceRoot":"","sources":["../../../src/tools/reactor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,462 @@
1
+ import { generateId } from "document-model";
2
+ import { DocumentModelStateSchema } from "document-model/document-model/gen/schema/zod";
3
+ import { z } from "zod";
4
+ import { toolWithCallback, validateDocumentModelAction } from "./utils.js";
5
+ export const createDocumentTool = {
6
+ name: "createDocument",
7
+ description: `Create a new document.
8
+ Unless the user specifies otherwise, and a drive named "vetra" is available, add the document after creating it to that drive using "addActions" tool with a "ADD_FILE" action to the drive document.`,
9
+ inputSchema: {
10
+ documentType: z.string().describe("Type of the document to create"),
11
+ documentId: z.string().optional().describe("Optional ID for the document"),
12
+ },
13
+ outputSchema: {
14
+ documentId: z.string().describe("ID of the created document"),
15
+ },
16
+ };
17
+ export const getDocumentTool = {
18
+ name: "getDocument",
19
+ description: "Retrieve a document by its ID",
20
+ inputSchema: {
21
+ id: z.string().describe("ID of the document to retrieve"),
22
+ },
23
+ outputSchema: {
24
+ document: z.object({}).describe("The retrieved Document"),
25
+ },
26
+ };
27
+ export const getDocumentsTool = {
28
+ name: "getDocuments",
29
+ description: "List documents in a drive",
30
+ inputSchema: {
31
+ parentId: z.string().describe("ID of the drive"),
32
+ },
33
+ outputSchema: {
34
+ documentIds: z.array(z.string()).describe("Array of document IDs"),
35
+ },
36
+ };
37
+ export const deleteDocumentTool = {
38
+ name: "deleteDocument",
39
+ description: "Delete a document",
40
+ inputSchema: {
41
+ documentId: z.string().describe("ID of the document to delete"),
42
+ },
43
+ outputSchema: {
44
+ success: z.boolean().describe("Whether the deletion was successful"),
45
+ },
46
+ };
47
+ export const addActionsTool = {
48
+ name: "addActions",
49
+ description: "Adds actions to a document. Prefer adding multiples actions at once to reduce the number of steps.",
50
+ inputSchema: {
51
+ documentId: z.string().describe("ID of the document"),
52
+ actions: z
53
+ .array(z
54
+ .object({
55
+ type: z.string().describe("The name of the action"),
56
+ input: z.unknown().describe("The payload of the action"),
57
+ scope: z.string().describe("The scope of the action"),
58
+ context: z
59
+ .object({})
60
+ .optional()
61
+ .describe("Optional action context"), // TODO: Define context schema
62
+ })
63
+ .strict())
64
+ .describe("Action to add to the document"),
65
+ },
66
+ outputSchema: {
67
+ success: z.boolean().describe("Whether the actions were added"),
68
+ },
69
+ };
70
+ // export const addOperationTool = {
71
+ // name: "addOperation",
72
+ // description: "Add an operation to a document",
73
+ // inputSchema: {
74
+ // documentId: z.string().describe("ID of the document"),
75
+ // operation: z
76
+ // .object({
77
+ // type: z.string().describe("The name of the action"),
78
+ // input: z.unknown().describe("The payload of the action"),
79
+ // scope: z.string().describe("The scope of the action"),
80
+ // index: z.number().describe("Position of the operation in the history"),
81
+ // timestamp: z
82
+ // .string()
83
+ // .describe("Timestamp of when the operation was added"),
84
+ // hash: z.string().describe("Hash of the resulting document data"),
85
+ // skip: z.number().describe("The number of operations skipped"),
86
+ // error: z
87
+ // .string()
88
+ // .optional()
89
+ // .describe("Error message for a failed action"),
90
+ // id: z.string().optional().describe("Unique operation id"),
91
+ // context: z.object({}).optional().describe("Optional action context"), // TODO: Define context schema
92
+ // })
93
+ // .strict()
94
+ // .describe("Operation to add to the document"),
95
+ // },
96
+ // outputSchema: {
97
+ // result: z
98
+ // .object({
99
+ // status: z
100
+ // .enum(["SUCCESS", "CONFLICT", "MISSING", "ERROR"])
101
+ // .describe("Operation status"),
102
+ // error: z
103
+ // .string()
104
+ // .optional()
105
+ // .describe("Error details if operation failed"), // TODO: Define error schema
106
+ // operations: z
107
+ // .array(z.object({}))
108
+ // .describe("Array of operations created"), // TODO: Define operation schema
109
+ // document: z.object({}).optional().describe("Updated document"), // TODO: Define document schema
110
+ // signals: z.array(z.object({})).describe("Array of signals generated"), // TODO: Define signal schema
111
+ // })
112
+ // .describe("Operation result"),
113
+ // },
114
+ // } as const satisfies ToolSchema;
115
+ // Drive Operation Tools
116
+ export const getDrivesTool = {
117
+ name: "getDrives",
118
+ description: "List all drives",
119
+ inputSchema: {},
120
+ outputSchema: {
121
+ driveIds: z.array(z.string()).describe("Array of drive IDs"),
122
+ },
123
+ };
124
+ export const addDriveTool = {
125
+ name: "addDrive",
126
+ description: "Create a new drive",
127
+ inputSchema: {
128
+ driveInput: z
129
+ .object({
130
+ global: z
131
+ .object({
132
+ name: z.string().describe("Name of the drive"),
133
+ icon: z
134
+ .string()
135
+ .nullable()
136
+ .optional()
137
+ .describe("Optional icon for the drive"),
138
+ })
139
+ .describe("Global drive properties"),
140
+ id: z.string().optional().describe("Optional drive ID"),
141
+ slug: z.string().optional().describe("Optional drive slug"),
142
+ preferredEditor: z
143
+ .string()
144
+ .optional()
145
+ .describe("Optional preferred editor"),
146
+ local: z
147
+ .object({
148
+ availableOffline: z
149
+ .boolean()
150
+ .optional()
151
+ .describe("Whether drive is available offline"),
152
+ sharingType: z
153
+ .string()
154
+ .nullable()
155
+ .optional()
156
+ .describe("Sharing type"),
157
+ })
158
+ .optional()
159
+ .describe("Optional local state properties"),
160
+ })
161
+ .describe("Drive configuration"),
162
+ },
163
+ outputSchema: {
164
+ driveId: z.string().describe("ID of the created drive"),
165
+ },
166
+ };
167
+ export const getDriveTool = {
168
+ name: "getDrive",
169
+ description: "Get a specific drive",
170
+ inputSchema: {
171
+ driveId: z.string().describe("ID of the drive to retrieve"),
172
+ options: z
173
+ .object({
174
+ revisions: z
175
+ .record(z.number())
176
+ .optional()
177
+ .describe("Optional revision filter"),
178
+ checkHashes: z.boolean().optional().describe("Whether to check hashes"),
179
+ // TODO: Add other ReducerOptions if needed
180
+ })
181
+ .optional()
182
+ .describe("Optional get document options"),
183
+ },
184
+ outputSchema: {
185
+ drive: z.object({}).describe("Drive document"), // TODO: Define DocumentDriveDocument schema
186
+ },
187
+ };
188
+ export const deleteDriveTool = {
189
+ name: "deleteDrive",
190
+ description: "Delete a drive",
191
+ inputSchema: {
192
+ driveId: z.string().describe("ID of the drive to delete"),
193
+ },
194
+ outputSchema: {
195
+ success: z.boolean().describe("Whether the deletion was successful"),
196
+ },
197
+ };
198
+ export const addRemoteDriveTool = {
199
+ name: "addRemoteDrive",
200
+ description: "Connect to a remote drive",
201
+ inputSchema: {
202
+ url: z.string().describe("URL of the remote drive"),
203
+ options: z
204
+ .object({
205
+ availableOffline: z
206
+ .boolean()
207
+ .describe("Whether drive is available offline"),
208
+ sharingType: z.string().nullable().optional().describe("Sharing type"),
209
+ pullFilter: z
210
+ .object({
211
+ branch: z
212
+ .array(z.string())
213
+ .nullable()
214
+ .optional()
215
+ .describe("Branch filter"),
216
+ documentId: z
217
+ .array(z.string())
218
+ .nullable()
219
+ .optional()
220
+ .describe("Document ID filter"),
221
+ documentType: z
222
+ .array(z.string())
223
+ .nullable()
224
+ .optional()
225
+ .describe("Document type filter"),
226
+ scope: z
227
+ .array(z.string())
228
+ .nullable()
229
+ .optional()
230
+ .describe("Scope filter"),
231
+ })
232
+ .optional()
233
+ .describe("Optional pull filter"),
234
+ pullInterval: z
235
+ .number()
236
+ .optional()
237
+ .describe("Pull interval in milliseconds"),
238
+ })
239
+ .describe("Remote drive options"),
240
+ },
241
+ outputSchema: {
242
+ driveId: z.string().describe("ID of the added remote drive"),
243
+ },
244
+ };
245
+ export const getDocumentModelSchemaTool = {
246
+ name: "getDocumentModelSchema",
247
+ description: "Get the schema of a document model",
248
+ inputSchema: {
249
+ type: z.string().describe("Type of the document model"),
250
+ },
251
+ outputSchema: {
252
+ schema: DocumentModelStateSchema().describe("Schema of the document model"),
253
+ },
254
+ };
255
+ export const getDocumentModelsTool = {
256
+ name: "getDocumentModels",
257
+ description: "Get the list of document models",
258
+ inputSchema: {},
259
+ outputSchema: {
260
+ documentModels: z
261
+ .array(z.object({
262
+ name: z.string().describe("Name of the document model"),
263
+ type: z.string().describe("Type of the document model"),
264
+ description: z.string().describe("Description of the document model"),
265
+ extension: z.string().describe("Extension of the document model"),
266
+ authorName: z.string().describe("Author name of the document model"),
267
+ authorWebsite: z
268
+ .string()
269
+ .describe("Author website of the document model"),
270
+ }))
271
+ .describe("List of available document models"),
272
+ },
273
+ };
274
+ // All tools array for type inference
275
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
276
+ const allTools = [
277
+ getDocumentTool,
278
+ createDocumentTool,
279
+ getDocumentsTool,
280
+ deleteDocumentTool,
281
+ addActionsTool,
282
+ // addOperationTool,
283
+ getDrivesTool,
284
+ addDriveTool,
285
+ getDriveTool,
286
+ deleteDriveTool,
287
+ addRemoteDriveTool,
288
+ getDocumentModelSchemaTool,
289
+ getDocumentModelsTool,
290
+ ];
291
+ export async function createReactorMcpProvider(reactor) {
292
+ await reactor.initialize();
293
+ function getDocumentModelModule(documentType) {
294
+ const documentModels = reactor.getDocumentModelModules();
295
+ const documentModel = documentModels.find((model) => model.documentModel.id === documentType);
296
+ return documentModel;
297
+ }
298
+ const tools = {
299
+ getDocument: toolWithCallback(getDocumentTool, async (params) => {
300
+ const { header, state } = await reactor.getDocument(params.id);
301
+ return { document: { header, state } };
302
+ }),
303
+ createDocument: toolWithCallback(createDocumentTool, async (params) => {
304
+ // Create document input based on provided parameters
305
+ const createInput = {
306
+ documentType: params.documentType,
307
+ id: params.documentId ?? generateId(),
308
+ };
309
+ const result = await reactor.queueDocument(createInput);
310
+ if (result.status !== "SUCCESS") {
311
+ throw new Error(`${result.status}: ${result.error?.message}`);
312
+ }
313
+ if (!result.document?.header.id) {
314
+ throw new Error("Created document doesn't have an Id");
315
+ }
316
+ return {
317
+ documentId: result.document.header.id,
318
+ };
319
+ }),
320
+ getDocuments: toolWithCallback(getDocumentsTool, async (params) => {
321
+ const documentIds = await reactor.getDocuments(params.parentId);
322
+ return { documentIds };
323
+ }),
324
+ deleteDocument: toolWithCallback(deleteDocumentTool, async (params) => {
325
+ try {
326
+ await reactor.deleteDocument(params.documentId);
327
+ return { success: true };
328
+ }
329
+ catch {
330
+ return { success: false };
331
+ }
332
+ }),
333
+ addActions: toolWithCallback(addActionsTool, async (params) => {
334
+ const document = await reactor.getDocument(params.documentId);
335
+ const documentModel = getDocumentModelModule(document.header.documentType);
336
+ if (!documentModel) {
337
+ throw new Error(`Document model for document type '${document.header.documentType}' not found`);
338
+ }
339
+ const actions = params.actions.map((paramAction) => {
340
+ const action = {
341
+ id: generateId(),
342
+ timestamp: new Date().toISOString(),
343
+ ...paramAction,
344
+ input: paramAction.input ?? {},
345
+ };
346
+ const actionValidation = validateDocumentModelAction(documentModel, action);
347
+ if (!actionValidation.isValid) {
348
+ throw new Error(`Invalid action ${JSON.stringify(action)}: ${actionValidation.errors.join(", ")}`);
349
+ }
350
+ return action;
351
+ });
352
+ const result = await reactor.addActions(params.documentId, actions);
353
+ if (result.status !== "SUCCESS") {
354
+ throw new Error(`${result.status}: ${result.error?.message}`);
355
+ }
356
+ const operationErrors = result.operations
357
+ .filter((operation) => operation.error !== undefined)
358
+ .map((operation) => ({
359
+ type: operation.action.type,
360
+ input: operation.action.input,
361
+ error: operation.error,
362
+ }));
363
+ if (operationErrors.length > 0) {
364
+ throw new Error(`Some of the actions failed: ${JSON.stringify(operationErrors)}`);
365
+ }
366
+ return {
367
+ success: true,
368
+ };
369
+ }),
370
+ // addOperation: toolWithCallback(addOperationTool, async (params) => {
371
+ // const result = await reactor.addOperation(params.documentId, {
372
+ // ...params.operation,
373
+ // input: params.operation.input ?? {},
374
+ // });
375
+ // return {
376
+ // result: {
377
+ // ...result,
378
+ // error:
379
+ // typeof result.error === "string"
380
+ // ? result.error
381
+ // : result.error?.message,
382
+ // },
383
+ // };
384
+ // }),
385
+ // Drive operation implementations
386
+ getDrives: toolWithCallback(getDrivesTool, async () => {
387
+ const driveIds = await reactor.getDrives();
388
+ return { driveIds };
389
+ }),
390
+ addDrive: toolWithCallback(addDriveTool, async (params) => {
391
+ // Extract preferredEditor and create proper DriveInput
392
+ const { preferredEditor, ...driveInput } = params.driveInput;
393
+ const result = await reactor.addDrive(driveInput, preferredEditor);
394
+ return { driveId: result.header.id };
395
+ }),
396
+ getDrive: toolWithCallback(getDriveTool, async (params) => {
397
+ const { header, state } = await reactor.getDrive(params.driveId, params.options);
398
+ return { drive: { header, state } };
399
+ }),
400
+ deleteDrive: toolWithCallback(deleteDriveTool, async (params) => {
401
+ try {
402
+ await reactor.deleteDrive(params.driveId);
403
+ return { success: true };
404
+ }
405
+ catch {
406
+ return { success: false };
407
+ }
408
+ }),
409
+ addRemoteDrive: toolWithCallback(addRemoteDriveTool, async (params) => {
410
+ const { sharingType, pullFilter, ...restOptions } = params.options;
411
+ const drive = await reactor.addRemoteDrive(params.url, {
412
+ ...restOptions,
413
+ listeners: [],
414
+ triggers: [],
415
+ sharingType: sharingType ?? null,
416
+ ...(pullFilter && {
417
+ pullFilter: {
418
+ branch: pullFilter.branch === undefined ? [] : pullFilter.branch,
419
+ documentId: pullFilter.documentId === undefined ? [] : pullFilter.documentId,
420
+ documentType: pullFilter.documentType === undefined
421
+ ? []
422
+ : pullFilter.documentType,
423
+ scope: pullFilter.scope === undefined ? [] : pullFilter.scope,
424
+ },
425
+ }),
426
+ });
427
+ return { driveId: drive.header.id };
428
+ }),
429
+ getDocumentModels: toolWithCallback(getDocumentModelsTool, () => {
430
+ const documentModels = reactor.getDocumentModelModules();
431
+ return {
432
+ documentModels: documentModels.map((model) => {
433
+ const schema = model.documentModel;
434
+ return {
435
+ name: schema.name,
436
+ type: schema.id,
437
+ description: schema.description,
438
+ extension: schema.extension,
439
+ authorName: schema.author.name,
440
+ authorWebsite: schema.author.website ?? "",
441
+ };
442
+ }),
443
+ };
444
+ }),
445
+ getDocumentModelSchema: toolWithCallback(getDocumentModelSchemaTool, (params) => {
446
+ const documentModel = getDocumentModelModule(params.type);
447
+ const schema = documentModel?.documentModel;
448
+ if (!schema) {
449
+ throw new Error(`Document model '${params.type}' not found`);
450
+ }
451
+ return { schema };
452
+ }),
453
+ };
454
+ const resources = {};
455
+ const prompts = {};
456
+ return {
457
+ tools,
458
+ resources,
459
+ prompts,
460
+ };
461
+ }
462
+ //# sourceMappingURL=reactor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactor.js","sourceRoot":"","sources":["../../../src/tools/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/tools/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/tools/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ import { type CallToolResult } from "@modelcontextprotocol/sdk/types.js";
2
+ import { type Action, type DocumentModelModule } from "document-model";
3
+ import { type z } from "zod";
4
+ import type { ResolveZodSchema, ToolSchema } from "./types.js";
5
+ export declare class InvalidToolOutputError extends Error {
6
+ constructor(zodError: z.ZodError);
7
+ }
8
+ /**
9
+ * Creates a tool with a callback function that handles the tool execution,
10
+ * ensuring the output is valid and errors are handled and returned correctly.
11
+ * @param tool The tool schema to wrap.
12
+ * @param toolCallback The callback function to execute when the tool is called.
13
+ * @returns A CallToolResult with structuredContent if OutputSchema is defined or content if undefined. If the
14
+ * callback throws an error, the result will have isError set to true and the error message in the content.
15
+ */
16
+ export declare function toolWithCallback<T extends ToolSchema>(tool: T, toolCallback: (args: ResolveZodSchema<T["inputSchema"]>) => ResolveZodSchema<T["outputSchema"]> | Promise<ResolveZodSchema<T["outputSchema"]>>): T & {
17
+ callback: (args: ResolveZodSchema<T["inputSchema"]>) => Promise<CallToolResult>;
18
+ };
19
+ export declare function validateDocumentModelAction(documentModelModule: DocumentModelModule, action: Action): {
20
+ isValid: boolean;
21
+ errors: string[];
22
+ };
23
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/tools/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAEvE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,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;qBAGxC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,KACvC,OAAO,CAAC,cAAc,CAAC;EA8B3B;AAED,wBAAgB,2BAA2B,CACzC,mBAAmB,EAAE,mBAAmB,EACxC,MAAM,EAAE,MAAM,GACb;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAyExC"}
@@ -1,8 +1,51 @@
1
1
  import { camelCase } from "change-case";
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
+ }
2
9
  /**
3
- * Validates a document model action against the document model state.
4
- * Checks if the action type is valid and the input structure is correct.
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.
5
16
  */
17
+ export function toolWithCallback(tool, toolCallback) {
18
+ const wrappedCallback = async (args) => {
19
+ try {
20
+ const result = await toolCallback(args);
21
+ return {
22
+ content: [
23
+ {
24
+ type: "text",
25
+ text: JSON.stringify(result),
26
+ },
27
+ ],
28
+ structuredContent: result,
29
+ };
30
+ }
31
+ catch (error) {
32
+ const errorString = error instanceof Error ? error.message : String(error);
33
+ return {
34
+ isError: true,
35
+ content: [
36
+ {
37
+ type: "text",
38
+ text: `Error: ${errorString}`,
39
+ },
40
+ ],
41
+ };
42
+ }
43
+ };
44
+ return {
45
+ ...tool,
46
+ callback: wrappedCallback,
47
+ };
48
+ }
6
49
  export function validateDocumentModelAction(documentModelModule, action) {
7
50
  const errors = [];
8
51
  const documentModelState = documentModelModule.documentModel;
@@ -34,7 +77,7 @@ export function validateDocumentModelAction(documentModelModule, action) {
34
77
  errors.push(`Action creator "${camelCaseActionType}" for action type "${action.type}" is not defined in documentModelDocumentModelModule.actions`);
35
78
  return { isValid: false, errors };
36
79
  }
37
- // Validate the operation using the action creator
80
+ // Validate the operation using the action creator. TODO: Use document model exported validators directly
38
81
  let inputError = null;
39
82
  try {
40
83
  actionCreator(action.input);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/tools/utils.ts"],"names":[],"mappings":"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"}