mcpgraph 0.1.26 → 0.1.28
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/config/loader.d.ts +1 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +17 -4
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts +42 -42
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +4 -3
- package/dist/config/schema.js.map +1 -1
- package/dist/config/serializer.d.ts +1 -0
- package/dist/config/serializer.d.ts.map +1 -1
- package/dist/config/serializer.js +20 -1
- package/dist/config/serializer.js.map +1 -1
- package/dist/execution/nodes/switch-executor.d.ts.map +1 -1
- package/dist/execution/nodes/switch-executor.js +11 -17
- package/dist/execution/nodes/switch-executor.js.map +1 -1
- package/dist/graph/graph.js +3 -3
- package/dist/graph/graph.js.map +1 -1
- package/dist/graph/validator.js +11 -2
- package/dist/graph/validator.js.map +1 -1
- package/dist/types/config.d.ts +11 -3
- package/dist/types/config.d.ts.map +1 -1
- package/docs/building.md +36 -4
- package/examples/loop_example.yaml +2 -2
- package/examples/switch_example.yaml +3 -3
- package/package.json +1 -1
package/dist/config/loader.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ import type { McpGraphConfig, ServerConfig } from "../types/config.js";
|
|
|
7
7
|
* @param graphFilePath - Path to the YAML graph configuration file
|
|
8
8
|
* @param mcpServersFromFile - Optional mcpServers loaded from an MCP JSON file
|
|
9
9
|
* @returns McpGraphConfig with merged mcpServers (graph servers override mcp file servers)
|
|
10
|
+
* Each server config is tagged with _source: 'graph' | 'external' to track origin
|
|
10
11
|
*/
|
|
11
12
|
export declare function loadConfig(graphFilePath: string, mcpServersFromFile?: Record<string, ServerConfig>): McpGraphConfig;
|
|
12
13
|
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAA0B,MAAM,oBAAoB,CAAC;AAE/F;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,aAAa,EAAE,MAAM,EACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,GAChD,cAAc,CA0BhB"}
|
package/dist/config/loader.js
CHANGED
|
@@ -7,15 +7,28 @@ import { parseYamlConfig } from "./serializer.js";
|
|
|
7
7
|
* @param graphFilePath - Path to the YAML graph configuration file
|
|
8
8
|
* @param mcpServersFromFile - Optional mcpServers loaded from an MCP JSON file
|
|
9
9
|
* @returns McpGraphConfig with merged mcpServers (graph servers override mcp file servers)
|
|
10
|
+
* Each server config is tagged with _source: 'graph' | 'external' to track origin
|
|
10
11
|
*/
|
|
11
12
|
export function loadConfig(graphFilePath, mcpServersFromFile) {
|
|
12
13
|
const config = parseYamlConfig(graphFilePath);
|
|
14
|
+
// Tag servers from graph file with _source: 'graph'
|
|
15
|
+
if (config.mcpServers) {
|
|
16
|
+
for (const serverConfig of Object.values(config.mcpServers)) {
|
|
17
|
+
serverConfig._source = 'graph';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
13
20
|
// Merge mcpServers: mcp file servers first, then graph servers (graph overrides)
|
|
14
21
|
if (mcpServersFromFile) {
|
|
15
|
-
config.mcpServers
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
22
|
+
if (!config.mcpServers) {
|
|
23
|
+
config.mcpServers = {};
|
|
24
|
+
}
|
|
25
|
+
// Add external servers first (they'll be overridden by graph servers if names match)
|
|
26
|
+
for (const [name, serverConfig] of Object.entries(mcpServersFromFile)) {
|
|
27
|
+
if (!(name in config.mcpServers)) {
|
|
28
|
+
config.mcpServers[name] = serverConfig;
|
|
29
|
+
config.mcpServers[name]._source = 'external';
|
|
30
|
+
}
|
|
31
|
+
}
|
|
19
32
|
}
|
|
20
33
|
return config;
|
|
21
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CACxB,aAAqB,EACrB,kBAAiD;IAEjD,MAAM,MAAM,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;IAE9C,oDAAoD;IACpD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5D,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC;QACjC,CAAC;IACH,CAAC;IAED,iFAAiF;IACjF,IAAI,kBAAkB,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACvB,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;QACzB,CAAC;QAED,qFAAqF;QACrF,KAAK,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACtE,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;gBACjC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC;gBACvC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,UAAU,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -128,7 +128,7 @@ export declare const mcpGraphConfigSchema: z.ZodObject<{
|
|
|
128
128
|
maxNodeExecutions?: number | undefined;
|
|
129
129
|
maxExecutionTimeMs?: number | undefined;
|
|
130
130
|
}>>;
|
|
131
|
-
tools: z.ZodArray<z.ZodObject<{
|
|
131
|
+
tools: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
132
132
|
name: z.ZodString;
|
|
133
133
|
description: z.ZodString;
|
|
134
134
|
inputSchema: z.ZodObject<{
|
|
@@ -269,35 +269,35 @@ export declare const mcpGraphConfigSchema: z.ZodObject<{
|
|
|
269
269
|
};
|
|
270
270
|
}>, z.ZodObject<{
|
|
271
271
|
id: z.ZodString;
|
|
272
|
-
next: z.ZodOptional<z.ZodString>;
|
|
273
272
|
} & {
|
|
274
273
|
type: z.ZodLiteral<"switch">;
|
|
275
274
|
conditions: z.ZodArray<z.ZodObject<{
|
|
276
|
-
rule: z.
|
|
277
|
-
|
|
275
|
+
rule: z.ZodUnknown;
|
|
276
|
+
next: z.ZodString;
|
|
278
277
|
}, "strip", z.ZodTypeAny, {
|
|
279
|
-
|
|
278
|
+
next: string;
|
|
280
279
|
rule?: unknown;
|
|
281
280
|
}, {
|
|
282
|
-
|
|
281
|
+
next: string;
|
|
283
282
|
rule?: unknown;
|
|
284
283
|
}>, "many">;
|
|
284
|
+
next: z.ZodString;
|
|
285
285
|
}, "strip", z.ZodTypeAny, {
|
|
286
286
|
type: "switch";
|
|
287
287
|
id: string;
|
|
288
|
+
next: string;
|
|
288
289
|
conditions: {
|
|
289
|
-
|
|
290
|
+
next: string;
|
|
290
291
|
rule?: unknown;
|
|
291
292
|
}[];
|
|
292
|
-
next?: string | undefined;
|
|
293
293
|
}, {
|
|
294
294
|
type: "switch";
|
|
295
295
|
id: string;
|
|
296
|
+
next: string;
|
|
296
297
|
conditions: {
|
|
297
|
-
|
|
298
|
+
next: string;
|
|
298
299
|
rule?: unknown;
|
|
299
300
|
}[];
|
|
300
|
-
next?: string | undefined;
|
|
301
301
|
}>]>, "many">;
|
|
302
302
|
}, "strip", z.ZodTypeAny, {
|
|
303
303
|
description: string;
|
|
@@ -345,11 +345,11 @@ export declare const mcpGraphConfigSchema: z.ZodObject<{
|
|
|
345
345
|
} | {
|
|
346
346
|
type: "switch";
|
|
347
347
|
id: string;
|
|
348
|
+
next: string;
|
|
348
349
|
conditions: {
|
|
349
|
-
|
|
350
|
+
next: string;
|
|
350
351
|
rule?: unknown;
|
|
351
352
|
}[];
|
|
352
|
-
next?: string | undefined;
|
|
353
353
|
})[];
|
|
354
354
|
}, {
|
|
355
355
|
description: string;
|
|
@@ -397,13 +397,13 @@ export declare const mcpGraphConfigSchema: z.ZodObject<{
|
|
|
397
397
|
} | {
|
|
398
398
|
type: "switch";
|
|
399
399
|
id: string;
|
|
400
|
+
next: string;
|
|
400
401
|
conditions: {
|
|
401
|
-
|
|
402
|
+
next: string;
|
|
402
403
|
rule?: unknown;
|
|
403
404
|
}[];
|
|
404
|
-
next?: string | undefined;
|
|
405
405
|
})[];
|
|
406
|
-
}>, "many"
|
|
406
|
+
}>, "many">>;
|
|
407
407
|
}, "strip", z.ZodTypeAny, {
|
|
408
408
|
version: string;
|
|
409
409
|
server: {
|
|
@@ -458,11 +458,11 @@ export declare const mcpGraphConfigSchema: z.ZodObject<{
|
|
|
458
458
|
} | {
|
|
459
459
|
type: "switch";
|
|
460
460
|
id: string;
|
|
461
|
+
next: string;
|
|
461
462
|
conditions: {
|
|
462
|
-
|
|
463
|
+
next: string;
|
|
463
464
|
rule?: unknown;
|
|
464
465
|
}[];
|
|
465
|
-
next?: string | undefined;
|
|
466
466
|
})[];
|
|
467
467
|
}[];
|
|
468
468
|
mcpServers?: Record<string, {
|
|
@@ -494,7 +494,28 @@ export declare const mcpGraphConfigSchema: z.ZodObject<{
|
|
|
494
494
|
title?: string | undefined;
|
|
495
495
|
instructions?: string | undefined;
|
|
496
496
|
};
|
|
497
|
-
|
|
497
|
+
mcpServers?: Record<string, {
|
|
498
|
+
command: string;
|
|
499
|
+
args: string[];
|
|
500
|
+
type?: "stdio" | undefined;
|
|
501
|
+
cwd?: string | undefined;
|
|
502
|
+
} | {
|
|
503
|
+
type: "sse";
|
|
504
|
+
url: string;
|
|
505
|
+
headers?: Record<string, string> | undefined;
|
|
506
|
+
eventSourceInit?: Record<string, unknown> | undefined;
|
|
507
|
+
requestInit?: Record<string, unknown> | undefined;
|
|
508
|
+
} | {
|
|
509
|
+
type: "streamableHttp";
|
|
510
|
+
url: string;
|
|
511
|
+
headers?: Record<string, string> | undefined;
|
|
512
|
+
requestInit?: Record<string, unknown> | undefined;
|
|
513
|
+
}> | undefined;
|
|
514
|
+
executionLimits?: {
|
|
515
|
+
maxNodeExecutions?: number | undefined;
|
|
516
|
+
maxExecutionTimeMs?: number | undefined;
|
|
517
|
+
} | undefined;
|
|
518
|
+
tools?: {
|
|
498
519
|
description: string;
|
|
499
520
|
name: string;
|
|
500
521
|
inputSchema: {
|
|
@@ -540,34 +561,13 @@ export declare const mcpGraphConfigSchema: z.ZodObject<{
|
|
|
540
561
|
} | {
|
|
541
562
|
type: "switch";
|
|
542
563
|
id: string;
|
|
564
|
+
next: string;
|
|
543
565
|
conditions: {
|
|
544
|
-
|
|
566
|
+
next: string;
|
|
545
567
|
rule?: unknown;
|
|
546
568
|
}[];
|
|
547
|
-
next?: string | undefined;
|
|
548
569
|
})[];
|
|
549
|
-
}[];
|
|
550
|
-
mcpServers?: Record<string, {
|
|
551
|
-
command: string;
|
|
552
|
-
args: string[];
|
|
553
|
-
type?: "stdio" | undefined;
|
|
554
|
-
cwd?: string | undefined;
|
|
555
|
-
} | {
|
|
556
|
-
type: "sse";
|
|
557
|
-
url: string;
|
|
558
|
-
headers?: Record<string, string> | undefined;
|
|
559
|
-
eventSourceInit?: Record<string, unknown> | undefined;
|
|
560
|
-
requestInit?: Record<string, unknown> | undefined;
|
|
561
|
-
} | {
|
|
562
|
-
type: "streamableHttp";
|
|
563
|
-
url: string;
|
|
564
|
-
headers?: Record<string, string> | undefined;
|
|
565
|
-
requestInit?: Record<string, unknown> | undefined;
|
|
566
|
-
}> | undefined;
|
|
567
|
-
executionLimits?: {
|
|
568
|
-
maxNodeExecutions?: number | undefined;
|
|
569
|
-
maxExecutionTimeMs?: number | undefined;
|
|
570
|
-
} | undefined;
|
|
570
|
+
}[] | undefined;
|
|
571
571
|
}>;
|
|
572
572
|
export type McpGraphConfigSchema = z.infer<typeof mcpGraphConfigSchema>;
|
|
573
573
|
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA4CxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAO7B,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA4CxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAO7B,CAAC;AAiEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM/B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
|
package/dist/config/schema.js
CHANGED
|
@@ -73,12 +73,13 @@ const transformNodeSchema = baseNodeSchema.extend({
|
|
|
73
73
|
next: z.string(),
|
|
74
74
|
});
|
|
75
75
|
const switchConditionSchema = z.object({
|
|
76
|
-
rule: z.unknown()
|
|
77
|
-
|
|
76
|
+
rule: z.unknown(), // Required - all conditions must have rules
|
|
77
|
+
next: z.string(),
|
|
78
78
|
});
|
|
79
79
|
const switchNodeSchema = baseNodeSchema.extend({
|
|
80
80
|
type: z.literal("switch"),
|
|
81
81
|
conditions: z.array(switchConditionSchema),
|
|
82
|
+
next: z.string(), // Required - default next node if no conditions match
|
|
82
83
|
});
|
|
83
84
|
const nodeSchema = z.discriminatedUnion("type", [
|
|
84
85
|
entryNodeSchema,
|
|
@@ -103,6 +104,6 @@ export const mcpGraphConfigSchema = z.object({
|
|
|
103
104
|
server: serverMetadataSchema,
|
|
104
105
|
mcpServers: z.record(serverConfigSchema).optional(),
|
|
105
106
|
executionLimits: executionLimitsSchema.optional(),
|
|
106
|
-
tools: z.array(toolDefinitionSchema),
|
|
107
|
+
tools: z.array(toolDefinitionSchema).default([]),
|
|
107
108
|
});
|
|
108
109
|
//# sourceMappingURL=schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ export declare function parseYamlConfig(filePath: string): McpGraphConfig;
|
|
|
13
13
|
* Write McpGraphConfig object to YAML file
|
|
14
14
|
* @param filePath - Path to the YAML configuration file
|
|
15
15
|
* @param config - McpGraphConfig object to write
|
|
16
|
+
* Only servers with _source: 'graph' are serialized (external servers are excluded)
|
|
16
17
|
*/
|
|
17
18
|
export declare function writeYamlConfig(filePath: string, config: McpGraphConfig): void;
|
|
18
19
|
//# sourceMappingURL=serializer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../src/config/serializer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIzD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CA6BhE;AAED
|
|
1
|
+
{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../src/config/serializer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIzD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CA6BhE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAuC9E"}
|
|
@@ -40,11 +40,30 @@ export function parseYamlConfig(filePath) {
|
|
|
40
40
|
* Write McpGraphConfig object to YAML file
|
|
41
41
|
* @param filePath - Path to the YAML configuration file
|
|
42
42
|
* @param config - McpGraphConfig object to write
|
|
43
|
+
* Only servers with _source: 'graph' are serialized (external servers are excluded)
|
|
43
44
|
*/
|
|
44
45
|
export function writeYamlConfig(filePath, config) {
|
|
45
46
|
try {
|
|
47
|
+
// Create a copy for serialization, filtering out external servers
|
|
48
|
+
const configToWrite = {
|
|
49
|
+
...config,
|
|
50
|
+
mcpServers: undefined,
|
|
51
|
+
};
|
|
52
|
+
if (config.mcpServers) {
|
|
53
|
+
for (const [name, serverConfig] of Object.entries(config.mcpServers)) {
|
|
54
|
+
// Only include servers from graph file (or undefined source, for backwards compatibility)
|
|
55
|
+
if (serverConfig._source !== 'external') {
|
|
56
|
+
// Create clean copy without _source metadata
|
|
57
|
+
const { _source, ...cleanConfig } = serverConfig;
|
|
58
|
+
if (!configToWrite.mcpServers) {
|
|
59
|
+
configToWrite.mcpServers = {};
|
|
60
|
+
}
|
|
61
|
+
configToWrite.mcpServers[name] = cleanConfig;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
46
65
|
// Use js-yaml dump with readable formatting
|
|
47
|
-
const yamlString = dump(
|
|
66
|
+
const yamlString = dump(configToWrite, {
|
|
48
67
|
indent: 2,
|
|
49
68
|
lineWidth: -1, // No line wrapping
|
|
50
69
|
noRefs: true, // Don't use YAML references
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../src/config/serializer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAEtE;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAY,CAAC;QAE7C,0BAA0B;QAC1B,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAErD,sDAAsD;QACtD,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,SAA2B,CAAC,CAAC;QAChF,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,aAAa,GAAG,gBAAgB,CAAC,GAAG,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,OAAO,EAAE,CAC9C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACb,MAAM,KAAK,GAAG,IAAI,KAAK,CACrB,gEAAgE,aAAa,EAAE,CAChF,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,KAAK,CAAC;QACd,CAAC;QAED,OAAO,SAA2B,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,MAAM,CAAC,KAAK,CAAC,gCAAgC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9D,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../src/config/serializer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switch-executor.d.ts","sourceRoot":"","sources":["../../../src/execution/nodes/switch-executor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAItD,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,gBAAgB,EACzB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"switch-executor.d.ts","sourceRoot":"","sources":["../../../src/execution/nodes/switch-executor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAItD,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,gBAAgB,EACzB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAkChD"}
|
|
@@ -12,31 +12,25 @@ export async function executeSwitchNode(node, context, startTime) {
|
|
|
12
12
|
// Evaluate conditions in order
|
|
13
13
|
for (let i = 0; i < node.conditions.length; i++) {
|
|
14
14
|
const condition = node.conditions[i];
|
|
15
|
-
// If no rule is specified, this is a default/fallback case
|
|
16
|
-
if (condition.rule === undefined || condition.rule === null) {
|
|
17
|
-
logger.debug(`Switch node ${node.id}: Using default/fallback target: ${condition.target}`);
|
|
18
|
-
const output = condition.target; // Output the target node ID
|
|
19
|
-
context.addHistory(node.id, "switch", output, startTime, endTime);
|
|
20
|
-
return {
|
|
21
|
-
output,
|
|
22
|
-
nextNode: condition.target,
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
15
|
// Evaluate the JSON Logic rule (now uses JSONata for var operations)
|
|
26
16
|
const ruleResult = await evaluateJsonLogic(condition.rule, exprContext, history, currentIndex);
|
|
27
17
|
if (ruleResult) {
|
|
28
|
-
logger.debug(`Switch node ${node.id}: Condition matched, routing to: ${condition.
|
|
29
|
-
const output = condition.
|
|
18
|
+
logger.debug(`Switch node ${node.id}: Condition matched, routing to: ${condition.next}`);
|
|
19
|
+
const output = condition.next; // Output the next node ID
|
|
30
20
|
context.addHistory(node.id, "switch", output, startTime, endTime);
|
|
31
21
|
return {
|
|
32
22
|
output,
|
|
33
|
-
nextNode: condition.
|
|
23
|
+
nextNode: condition.next,
|
|
34
24
|
};
|
|
35
25
|
}
|
|
36
26
|
}
|
|
37
|
-
// No conditions matched
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
27
|
+
// No conditions matched - use default next node
|
|
28
|
+
logger.debug(`Switch node ${node.id}: No conditions matched, using default next: ${node.next}`);
|
|
29
|
+
const output = node.next; // Output the default next node ID
|
|
30
|
+
context.addHistory(node.id, "switch", output, startTime, endTime);
|
|
31
|
+
return {
|
|
32
|
+
output,
|
|
33
|
+
nextNode: node.next,
|
|
34
|
+
};
|
|
41
35
|
}
|
|
42
36
|
//# sourceMappingURL=switch-executor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switch-executor.js","sourceRoot":"","sources":["../../../src/execution/nodes/switch-executor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAgB,EAChB,OAAyB,EACzB,SAAiB;IAEjB,MAAM,CAAC,KAAK,CAAC,0BAA0B,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAElD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IACrC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,qDAAqD;IAC1F,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE3B,+BAA+B;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"switch-executor.js","sourceRoot":"","sources":["../../../src/execution/nodes/switch-executor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAgB,EAChB,OAAyB,EACzB,SAAiB;IAEjB,MAAM,CAAC,KAAK,CAAC,0BAA0B,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAElD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IACrC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,qDAAqD;IAC1F,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE3B,+BAA+B;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAErC,qEAAqE;QACrE,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAE/F,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,EAAE,oCAAoC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YACzF,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,0BAA0B;YACzD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YAClE,OAAO;gBACL,MAAM;gBACN,QAAQ,EAAE,SAAS,CAAC,IAAI;aACzB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,gDAAgD;IAChD,MAAM,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,EAAE,gDAAgD,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAChG,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,kCAAkC;IAC5D,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAClE,OAAO;QACL,MAAM;QACN,QAAQ,EAAE,IAAI,CAAC,IAAI;KACpB,CAAC;AACJ,CAAC"}
|
package/dist/graph/graph.js
CHANGED
|
@@ -15,10 +15,10 @@ export class Graph {
|
|
|
15
15
|
current.push(node.next);
|
|
16
16
|
this.edges.set(node.id, current);
|
|
17
17
|
}
|
|
18
|
-
// Handle switch nodes with multiple
|
|
18
|
+
// Handle switch nodes with multiple next nodes (conditions + default)
|
|
19
19
|
if (node.type === "switch") {
|
|
20
|
-
const
|
|
21
|
-
this.edges.set(node.id,
|
|
20
|
+
const nextNodes = [...node.conditions.map((c) => c.next), node.next];
|
|
21
|
+
this.edges.set(node.id, nextNodes);
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
}
|
package/dist/graph/graph.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/graph/graph.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,OAAO,KAAK;IACR,KAAK,CAA8B;IACnC,KAAK,CAAwB,CAAC,mCAAmC;IAEzE,YAAY,KAAuB;QACjC,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;QAEvB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAE9B,cAAc;YACd,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBAChC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC9C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YACnC,CAAC;YAED,
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/graph/graph.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,OAAO,KAAK;IACR,KAAK,CAA8B;IACnC,KAAK,CAAwB,CAAC,mCAAmC;IAEzE,YAAY,KAAuB;QACjC,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;QAEvB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAE9B,cAAc;YACd,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBAChC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC9C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YACnC,CAAC;YAED,sEAAsE;YACtE,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC3B,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,MAAc;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,YAAY,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAED,WAAW;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,CAAC,MAAc;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;CACF"}
|
package/dist/graph/validator.js
CHANGED
|
@@ -53,15 +53,24 @@ function validateToolGraph(tool, config) {
|
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
if (node.type === "switch") {
|
|
56
|
+
// Validate all condition next nodes
|
|
56
57
|
for (const condition of node.conditions) {
|
|
57
|
-
if (!graph.hasNode(condition.
|
|
58
|
+
if (!graph.hasNode(condition.next)) {
|
|
58
59
|
errors.push({
|
|
59
|
-
message: `Switch node "${node.id}" in tool "${tool.name}" references non-existent
|
|
60
|
+
message: `Switch node "${node.id}" in tool "${tool.name}" references non-existent next node "${condition.next}"`,
|
|
60
61
|
nodeId: node.id,
|
|
61
62
|
toolName: tool.name,
|
|
62
63
|
});
|
|
63
64
|
}
|
|
64
65
|
}
|
|
66
|
+
// Validate default next node
|
|
67
|
+
if (!graph.hasNode(node.next)) {
|
|
68
|
+
errors.push({
|
|
69
|
+
message: `Switch node "${node.id}" in tool "${tool.name}" references non-existent default next node "${node.next}"`,
|
|
70
|
+
nodeId: node.id,
|
|
71
|
+
toolName: tool.name,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
65
74
|
}
|
|
66
75
|
}
|
|
67
76
|
// Validate mcp nodes reference valid servers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/graph/validator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/graph/validator.ts"],"names":[],"mappings":"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"}
|
package/dist/types/config.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ export interface ExecutionLimits {
|
|
|
8
8
|
export interface McpGraphConfig {
|
|
9
9
|
version: string;
|
|
10
10
|
server: ServerMetadata;
|
|
11
|
-
mcpServers?: Record<string,
|
|
11
|
+
mcpServers?: Record<string, ServerConfigWithSource>;
|
|
12
12
|
executionLimits?: ExecutionLimits;
|
|
13
13
|
tools: ToolDefinition[];
|
|
14
14
|
}
|
|
@@ -19,6 +19,13 @@ export interface ServerMetadata {
|
|
|
19
19
|
instructions?: string;
|
|
20
20
|
}
|
|
21
21
|
export type ServerConfig = StdioServerConfig | SseServerConfig | StreamableHttpServerConfig;
|
|
22
|
+
/**
|
|
23
|
+
* ServerConfig with optional source tracking metadata
|
|
24
|
+
* Used internally to track whether a server came from the graph file or external MCP file
|
|
25
|
+
*/
|
|
26
|
+
export type ServerConfigWithSource = ServerConfig & {
|
|
27
|
+
_source?: 'graph' | 'external';
|
|
28
|
+
};
|
|
22
29
|
export interface StdioServerConfig {
|
|
23
30
|
type?: "stdio";
|
|
24
31
|
command: string;
|
|
@@ -85,10 +92,11 @@ export interface TransformNode extends BaseNode {
|
|
|
85
92
|
export interface SwitchNode extends BaseNode {
|
|
86
93
|
type: "switch";
|
|
87
94
|
conditions: SwitchCondition[];
|
|
95
|
+
next: string;
|
|
88
96
|
}
|
|
89
97
|
export interface SwitchCondition {
|
|
90
|
-
rule
|
|
91
|
-
|
|
98
|
+
rule: JsonLogicRule;
|
|
99
|
+
next: string;
|
|
92
100
|
}
|
|
93
101
|
export type JsonLogicRule = unknown;
|
|
94
102
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"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"}
|
package/docs/building.md
CHANGED
|
@@ -122,7 +122,6 @@ tools.json - mcpServers for mcpGrahToolkit to use
|
|
|
122
122
|
{
|
|
123
123
|
"mcpServers": {
|
|
124
124
|
"fetch": {
|
|
125
|
-
"catalogId": "fetch:95ec80cc",
|
|
126
125
|
"type": "stdio",
|
|
127
126
|
"command": "uvx",
|
|
128
127
|
"args": [
|
|
@@ -131,7 +130,6 @@ tools.json - mcpServers for mcpGrahToolkit to use
|
|
|
131
130
|
]
|
|
132
131
|
},
|
|
133
132
|
"filesystem": {
|
|
134
|
-
"catalogId": "filesystem:df30a77e",
|
|
135
133
|
"type": "stdio",
|
|
136
134
|
"command": "npx",
|
|
137
135
|
"args": [
|
|
@@ -160,13 +158,47 @@ tools.json - mcpServers for mcpGrahToolkit to use
|
|
|
160
158
|
|
|
161
159
|
Install mcpgraph globally, verify it's installed
|
|
162
160
|
Install mcpGraphToolkit SKILL.md in agent
|
|
161
|
+
- /.claude/
|
|
163
162
|
Verify: No fetch or filesystem tool installed in agent
|
|
164
163
|
Install mcpGraphToolkit in agent
|
|
165
164
|
- place agent.yaml and mcp.json where installed mcpGraphToolkit can see them
|
|
166
165
|
- install
|
|
167
166
|
Prompt to create new tool
|
|
168
167
|
|
|
169
|
-
Prompt:
|
|
168
|
+
Prompt (two steps):
|
|
170
169
|
|
|
171
|
-
|
|
170
|
+
Create an mcpGraph tool to download a URL to a local file in the downloads directory of this project and return the filename and size
|
|
172
171
|
|
|
172
|
+
Use that tool to download https://world.hey.com/dhh/pay-yourself-first-e86f8147
|
|
173
|
+
|
|
174
|
+
Prompt (one-shot, create and use tool):
|
|
175
|
+
|
|
176
|
+
Download the text contents of the web page https://world.hey.com/dhh/pay-yourself-first-e86f8147 to a local file, return the filename and size
|
|
177
|
+
|
|
178
|
+
NOTES:
|
|
179
|
+
|
|
180
|
+
First pass had a "graph/node" structure, no input node, malformed graph/output node, dependsOn elements - basically crazytown, second pass was correct
|
|
181
|
+
- Agent detected error and rebuilt it correctly, so that's good
|
|
182
|
+
|
|
183
|
+
Check relative path support in .mcp.json mcpgraphtoolkit config
|
|
184
|
+
|
|
185
|
+
Test Claude-generated graph in UX (debug, validate)
|
|
186
|
+
|
|
187
|
+
Move entire test Claude project into mcpGraph repo?
|
|
188
|
+
- Might only make sense of relative paths worked
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
### 2. Valid Node Types & Keys
|
|
194
|
+
| Type | Required Keys | Linking Mechanism |
|
|
195
|
+
| :--- | :--- | :--- |
|
|
196
|
+
| **`entry`** | `id`, `type`, `next` | Uses `next` |
|
|
197
|
+
| **`mcp`** | `id`, `type`, `server`, `tool`, `args`, `next` | Uses `next` |
|
|
198
|
+
| **`transform`** | `id`, `type`, `transform: { expr }`, `next` | Uses `next` |
|
|
199
|
+
| **`switch`** | `id`, `type`, `conditions: [{ rule, target }]` | Uses `target` |
|
|
200
|
+
| **`exit`** | `id`, `type` | (Terminator) |
|
|
201
|
+
|
|
202
|
+
### 3. Execution Context Variable Syntax
|
|
203
|
+
- Use **`$.node_id`** to access data from the context.
|
|
204
|
+
- **DO NOT** use `$lookup(node_id, 'result')`. The context is a flat object; standard JSONata dot-notation (`$.node_id.key`) is the preferred method.
|
|
@@ -58,8 +58,8 @@ tools:
|
|
|
58
58
|
conditions:
|
|
59
59
|
- rule:
|
|
60
60
|
"<": [{"var": "$.increment_node.counter"}, {"var": "$.increment_node.target"}]
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
next: "increment_node"
|
|
62
|
+
next: "exit_sum" # Default: exit when counter >= target
|
|
63
63
|
|
|
64
64
|
# Exit node: Extracts the sum from increment_node
|
|
65
65
|
# Uses $previousNode() to verify it returns the switch node's output (target node ID)
|
|
@@ -39,13 +39,13 @@ tools:
|
|
|
39
39
|
">":
|
|
40
40
|
- { var: "entry.value" }
|
|
41
41
|
- 10
|
|
42
|
-
|
|
42
|
+
next: "high_path"
|
|
43
43
|
- rule:
|
|
44
44
|
">":
|
|
45
45
|
- { var: "entry.value" }
|
|
46
46
|
- 0
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
next: "low_path"
|
|
48
|
+
next: "zero_path" # Default: zero/negative path
|
|
49
49
|
|
|
50
50
|
# High path (> 10)
|
|
51
51
|
- id: "high_path"
|