@walkeros/mcp 0.3.0 → 0.4.0-next-1771257332985
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/README.md +6 -12
- package/dist/index.js +250 -124
- package/dist/index.js.map +1 -1
- package/package.json +9 -5
package/README.md
CHANGED
|
@@ -68,12 +68,15 @@ Validate walkerOS events, flow configurations, or mapping rules.
|
|
|
68
68
|
|
|
69
69
|
#### `bundle`
|
|
70
70
|
|
|
71
|
-
Bundle a walkerOS flow configuration into deployable JavaScript.
|
|
71
|
+
Bundle a walkerOS flow configuration into deployable JavaScript. Supports both
|
|
72
|
+
local bundling (via CLI) and remote cloud bundling (via API).
|
|
72
73
|
|
|
73
|
-
- `configPath` (
|
|
74
|
+
- `configPath` (optional): Path to the flow configuration file (local mode)
|
|
74
75
|
- `flow` (optional): Specific flow name to bundle
|
|
75
76
|
- `stats` (optional): Include bundle statistics in output
|
|
76
77
|
- `output` (optional): Output file path for the bundle
|
|
78
|
+
- `remote` (optional): Use remote cloud bundling (requires `WALKEROS_TOKEN`)
|
|
79
|
+
- `content` (optional): Flow.Setup JSON content (required when `remote: true`)
|
|
77
80
|
|
|
78
81
|
#### `simulate`
|
|
79
82
|
|
|
@@ -160,7 +163,7 @@ Create a new flow configuration.
|
|
|
160
163
|
|
|
161
164
|
#### `update-flow`
|
|
162
165
|
|
|
163
|
-
Update a flow name and/or content.
|
|
166
|
+
Update a flow name and/or content.
|
|
164
167
|
|
|
165
168
|
- `flowId` (required): Flow ID (`cfg_...`)
|
|
166
169
|
- `name` (optional): New flow name
|
|
@@ -182,15 +185,6 @@ Create a copy of an existing flow configuration.
|
|
|
182
185
|
- `name` (optional): Name for the copy
|
|
183
186
|
- `projectId` (optional): Project ID
|
|
184
187
|
|
|
185
|
-
### Bundle (Remote)
|
|
186
|
-
|
|
187
|
-
#### `bundle-remote`
|
|
188
|
-
|
|
189
|
-
Bundle a flow configuration using the walkerOS cloud service. No local build
|
|
190
|
-
tools needed.
|
|
191
|
-
|
|
192
|
-
- `content` (required): Flow.Setup JSON content
|
|
193
|
-
|
|
194
188
|
## Local Development
|
|
195
189
|
|
|
196
190
|
### Smoke Test
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,7 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
5
5
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
6
6
|
|
|
7
7
|
// src/tools/bundle.ts
|
|
8
|
+
import { z as z2 } from "zod";
|
|
8
9
|
import { schemas } from "@walkeros/cli/dev";
|
|
9
10
|
|
|
10
11
|
// src/schemas/output.ts
|
|
@@ -103,6 +104,14 @@ var ListFlowsOutputShape = {
|
|
|
103
104
|
var DeleteOutputShape = {
|
|
104
105
|
success: z.literal(true).describe("Deletion succeeded")
|
|
105
106
|
};
|
|
107
|
+
var PackageSchemaOutputShape = {
|
|
108
|
+
package: z.string().describe("Package name"),
|
|
109
|
+
version: z.string().describe("Package version"),
|
|
110
|
+
type: z.string().describe("Package type (destination, source, transformer)"),
|
|
111
|
+
platform: z.string().describe("Target platform (web, server)"),
|
|
112
|
+
schemas: z.record(z.string(), z.unknown()).describe("JSON Schemas for settings and mapping"),
|
|
113
|
+
examples: z.record(z.string(), z.unknown()).optional().describe("Configuration examples")
|
|
114
|
+
};
|
|
106
115
|
var BundleRemoteOutputShape = {
|
|
107
116
|
success: z.boolean().describe("Whether bundling succeeded"),
|
|
108
117
|
bundle: z.string().describe("Compiled JavaScript bundle"),
|
|
@@ -110,14 +119,47 @@ var BundleRemoteOutputShape = {
|
|
|
110
119
|
stats: z.record(z.string(), z.unknown()).optional().describe("Bundle statistics from server")
|
|
111
120
|
};
|
|
112
121
|
|
|
122
|
+
// src/tools/helpers.ts
|
|
123
|
+
function apiResult(result) {
|
|
124
|
+
return {
|
|
125
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
126
|
+
structuredContent: result
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
function apiError(error) {
|
|
130
|
+
return {
|
|
131
|
+
content: [
|
|
132
|
+
{
|
|
133
|
+
type: "text",
|
|
134
|
+
text: JSON.stringify({
|
|
135
|
+
error: error instanceof Error ? error.message : "Unknown error"
|
|
136
|
+
})
|
|
137
|
+
}
|
|
138
|
+
],
|
|
139
|
+
isError: true
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
function structuredResult(result) {
|
|
143
|
+
return {
|
|
144
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
145
|
+
structuredContent: result
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
|
|
113
149
|
// src/tools/bundle.ts
|
|
114
150
|
function registerBundleTool(server2) {
|
|
115
151
|
server2.registerTool(
|
|
116
152
|
"bundle",
|
|
117
153
|
{
|
|
118
154
|
title: "Bundle",
|
|
119
|
-
description: "Bundle a walkerOS flow configuration into deployable JavaScript. Resolves all destinations, sources, and transformers, then outputs a tree-shaken production bundle. Returns bundle statistics.",
|
|
120
|
-
inputSchema:
|
|
155
|
+
description: "Bundle a walkerOS flow configuration into deployable JavaScript. Resolves all destinations, sources, and transformers, then outputs a tree-shaken production bundle. Returns bundle statistics. Set remote: true to use the walkerOS cloud service instead of local build tools.",
|
|
156
|
+
inputSchema: {
|
|
157
|
+
...schemas.BundleInputShape,
|
|
158
|
+
remote: z2.boolean().optional().describe(
|
|
159
|
+
"Use remote cloud bundling (requires WALKEROS_TOKEN). Default: false (local)"
|
|
160
|
+
),
|
|
161
|
+
content: z2.record(z2.string(), z2.unknown()).optional().describe("Flow.Setup JSON content (required when remote: true)")
|
|
162
|
+
},
|
|
121
163
|
outputSchema: BundleOutputShape,
|
|
122
164
|
annotations: {
|
|
123
165
|
readOnlyHint: false,
|
|
@@ -126,8 +168,17 @@ function registerBundleTool(server2) {
|
|
|
126
168
|
openWorldHint: false
|
|
127
169
|
}
|
|
128
170
|
},
|
|
129
|
-
async ({ configPath, flow, stats, output }) => {
|
|
171
|
+
async ({ configPath, flow, stats, output, remote, content }) => {
|
|
130
172
|
try {
|
|
173
|
+
if (remote) {
|
|
174
|
+
if (!content)
|
|
175
|
+
throw new Error("content is required when remote: true");
|
|
176
|
+
const { bundleRemote } = await import("@walkeros/cli");
|
|
177
|
+
const result2 = await bundleRemote({
|
|
178
|
+
content
|
|
179
|
+
});
|
|
180
|
+
return structuredResult({ success: true, ...result2 });
|
|
181
|
+
}
|
|
131
182
|
const { bundle } = await import("@walkeros/cli");
|
|
132
183
|
const result = await bundle(configPath, {
|
|
133
184
|
flowName: flow,
|
|
@@ -346,6 +397,7 @@ function registerAuthTools(server2) {
|
|
|
346
397
|
title: "Who Am I",
|
|
347
398
|
description: "Verify your API token and see your identity. Returns user ID, email, and project ID (if token is project-scoped). Use this to confirm your token works and discover your project ID.",
|
|
348
399
|
inputSchema: {},
|
|
400
|
+
outputSchema: WhoamiOutputShape,
|
|
349
401
|
annotations: {
|
|
350
402
|
readOnlyHint: true,
|
|
351
403
|
destructiveHint: false,
|
|
@@ -356,49 +408,16 @@ function registerAuthTools(server2) {
|
|
|
356
408
|
async () => {
|
|
357
409
|
try {
|
|
358
410
|
const { whoami } = await import("@walkeros/cli");
|
|
359
|
-
|
|
360
|
-
return {
|
|
361
|
-
content: [
|
|
362
|
-
{ type: "text", text: JSON.stringify(result, null, 2) }
|
|
363
|
-
]
|
|
364
|
-
};
|
|
411
|
+
return apiResult(await whoami());
|
|
365
412
|
} catch (error) {
|
|
366
|
-
return
|
|
367
|
-
content: [
|
|
368
|
-
{
|
|
369
|
-
type: "text",
|
|
370
|
-
text: JSON.stringify({
|
|
371
|
-
error: error instanceof Error ? error.message : "Unknown error"
|
|
372
|
-
})
|
|
373
|
-
}
|
|
374
|
-
],
|
|
375
|
-
isError: true
|
|
376
|
-
};
|
|
413
|
+
return apiError(error);
|
|
377
414
|
}
|
|
378
415
|
}
|
|
379
416
|
);
|
|
380
417
|
}
|
|
381
418
|
|
|
382
419
|
// src/tools/projects.ts
|
|
383
|
-
import { z as
|
|
384
|
-
function apiResult(result) {
|
|
385
|
-
return {
|
|
386
|
-
content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
|
|
387
|
-
};
|
|
388
|
-
}
|
|
389
|
-
function apiError(error) {
|
|
390
|
-
return {
|
|
391
|
-
content: [
|
|
392
|
-
{
|
|
393
|
-
type: "text",
|
|
394
|
-
text: JSON.stringify({
|
|
395
|
-
error: error instanceof Error ? error.message : "Unknown error"
|
|
396
|
-
})
|
|
397
|
-
}
|
|
398
|
-
],
|
|
399
|
-
isError: true
|
|
400
|
-
};
|
|
401
|
-
}
|
|
420
|
+
import { z as z3 } from "zod";
|
|
402
421
|
function registerProjectTools(server2) {
|
|
403
422
|
server2.registerTool(
|
|
404
423
|
"list-projects",
|
|
@@ -406,6 +425,7 @@ function registerProjectTools(server2) {
|
|
|
406
425
|
title: "List Projects",
|
|
407
426
|
description: "List all projects you have access to. Returns project IDs, names, and your role.",
|
|
408
427
|
inputSchema: {},
|
|
428
|
+
outputSchema: ListProjectsOutputShape,
|
|
409
429
|
annotations: {
|
|
410
430
|
readOnlyHint: true,
|
|
411
431
|
destructiveHint: false,
|
|
@@ -428,8 +448,9 @@ function registerProjectTools(server2) {
|
|
|
428
448
|
title: "Get Project",
|
|
429
449
|
description: "Get details for a project. Uses WALKEROS_PROJECT_ID if projectId is omitted.",
|
|
430
450
|
inputSchema: {
|
|
431
|
-
projectId:
|
|
451
|
+
projectId: z3.string().optional().describe("Project ID (defaults to WALKEROS_PROJECT_ID)")
|
|
432
452
|
},
|
|
453
|
+
outputSchema: ProjectOutputShape,
|
|
433
454
|
annotations: {
|
|
434
455
|
readOnlyHint: true,
|
|
435
456
|
destructiveHint: false,
|
|
@@ -452,8 +473,9 @@ function registerProjectTools(server2) {
|
|
|
452
473
|
title: "Create Project",
|
|
453
474
|
description: "Create a new project.",
|
|
454
475
|
inputSchema: {
|
|
455
|
-
name:
|
|
476
|
+
name: z3.string().min(1).max(255).describe("Project name")
|
|
456
477
|
},
|
|
478
|
+
outputSchema: ProjectOutputShape,
|
|
457
479
|
annotations: {
|
|
458
480
|
readOnlyHint: false,
|
|
459
481
|
destructiveHint: false,
|
|
@@ -476,9 +498,10 @@ function registerProjectTools(server2) {
|
|
|
476
498
|
title: "Update Project",
|
|
477
499
|
description: "Update a project name. Uses WALKEROS_PROJECT_ID if projectId is omitted.",
|
|
478
500
|
inputSchema: {
|
|
479
|
-
projectId:
|
|
480
|
-
name:
|
|
501
|
+
projectId: z3.string().optional().describe("Project ID (defaults to WALKEROS_PROJECT_ID)"),
|
|
502
|
+
name: z3.string().min(1).max(255).describe("New project name")
|
|
481
503
|
},
|
|
504
|
+
outputSchema: ProjectOutputShape,
|
|
482
505
|
annotations: {
|
|
483
506
|
readOnlyHint: false,
|
|
484
507
|
destructiveHint: false,
|
|
@@ -499,10 +522,11 @@ function registerProjectTools(server2) {
|
|
|
499
522
|
"delete-project",
|
|
500
523
|
{
|
|
501
524
|
title: "Delete Project",
|
|
502
|
-
description: "Soft-delete a project and all its flows. Uses WALKEROS_PROJECT_ID if projectId is omitted.",
|
|
525
|
+
description: "Soft-delete a project and all its flows. WARNING: This deletes the project and ALL associated flows and data. Uses WALKEROS_PROJECT_ID if projectId is omitted.",
|
|
503
526
|
inputSchema: {
|
|
504
|
-
projectId:
|
|
527
|
+
projectId: z3.string().optional().describe("Project ID (defaults to WALKEROS_PROJECT_ID)")
|
|
505
528
|
},
|
|
529
|
+
outputSchema: DeleteOutputShape,
|
|
506
530
|
annotations: {
|
|
507
531
|
readOnlyHint: false,
|
|
508
532
|
destructiveHint: true,
|
|
@@ -522,25 +546,7 @@ function registerProjectTools(server2) {
|
|
|
522
546
|
}
|
|
523
547
|
|
|
524
548
|
// src/tools/flows.ts
|
|
525
|
-
import { z as
|
|
526
|
-
function apiResult2(result) {
|
|
527
|
-
return {
|
|
528
|
-
content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
|
|
529
|
-
};
|
|
530
|
-
}
|
|
531
|
-
function apiError2(error) {
|
|
532
|
-
return {
|
|
533
|
-
content: [
|
|
534
|
-
{
|
|
535
|
-
type: "text",
|
|
536
|
-
text: JSON.stringify({
|
|
537
|
-
error: error instanceof Error ? error.message : "Unknown error"
|
|
538
|
-
})
|
|
539
|
-
}
|
|
540
|
-
],
|
|
541
|
-
isError: true
|
|
542
|
-
};
|
|
543
|
-
}
|
|
549
|
+
import { z as z4 } from "zod";
|
|
544
550
|
function registerFlowTools(server2) {
|
|
545
551
|
server2.registerTool(
|
|
546
552
|
"list-flows",
|
|
@@ -548,11 +554,12 @@ function registerFlowTools(server2) {
|
|
|
548
554
|
title: "List Flows",
|
|
549
555
|
description: "List all flow configurations in a project.",
|
|
550
556
|
inputSchema: {
|
|
551
|
-
projectId:
|
|
552
|
-
sort:
|
|
553
|
-
order:
|
|
554
|
-
includeDeleted:
|
|
557
|
+
projectId: z4.string().optional().describe("Project ID (defaults to WALKEROS_PROJECT_ID)"),
|
|
558
|
+
sort: z4.enum(["name", "updated_at", "created_at"]).optional().describe("Sort field (default: updated_at)"),
|
|
559
|
+
order: z4.enum(["asc", "desc"]).optional().describe("Sort order (default: desc)"),
|
|
560
|
+
includeDeleted: z4.boolean().optional().describe("Include soft-deleted flows (default: false)")
|
|
555
561
|
},
|
|
562
|
+
outputSchema: ListFlowsOutputShape,
|
|
556
563
|
annotations: {
|
|
557
564
|
readOnlyHint: true,
|
|
558
565
|
destructiveHint: false,
|
|
@@ -563,11 +570,11 @@ function registerFlowTools(server2) {
|
|
|
563
570
|
async ({ projectId: projectId2, sort, order, includeDeleted }) => {
|
|
564
571
|
try {
|
|
565
572
|
const { listFlows } = await import("@walkeros/cli");
|
|
566
|
-
return
|
|
573
|
+
return apiResult(
|
|
567
574
|
await listFlows({ projectId: projectId2, sort, order, includeDeleted })
|
|
568
575
|
);
|
|
569
576
|
} catch (error) {
|
|
570
|
-
return
|
|
577
|
+
return apiError(error);
|
|
571
578
|
}
|
|
572
579
|
}
|
|
573
580
|
);
|
|
@@ -577,9 +584,10 @@ function registerFlowTools(server2) {
|
|
|
577
584
|
title: "Get Flow",
|
|
578
585
|
description: "Get a flow configuration with its full content (Flow.Setup JSON).",
|
|
579
586
|
inputSchema: {
|
|
580
|
-
flowId:
|
|
581
|
-
projectId:
|
|
587
|
+
flowId: z4.string().describe("Flow ID (cfg_...)"),
|
|
588
|
+
projectId: z4.string().optional().describe("Project ID (defaults to WALKEROS_PROJECT_ID)")
|
|
582
589
|
},
|
|
590
|
+
outputSchema: FlowOutputShape,
|
|
583
591
|
annotations: {
|
|
584
592
|
readOnlyHint: true,
|
|
585
593
|
destructiveHint: false,
|
|
@@ -590,9 +598,9 @@ function registerFlowTools(server2) {
|
|
|
590
598
|
async ({ flowId: flowId2, projectId: projectId2 }) => {
|
|
591
599
|
try {
|
|
592
600
|
const { getFlow } = await import("@walkeros/cli");
|
|
593
|
-
return
|
|
601
|
+
return apiResult(await getFlow({ flowId: flowId2, projectId: projectId2 }));
|
|
594
602
|
} catch (error) {
|
|
595
|
-
return
|
|
603
|
+
return apiError(error);
|
|
596
604
|
}
|
|
597
605
|
}
|
|
598
606
|
);
|
|
@@ -602,10 +610,11 @@ function registerFlowTools(server2) {
|
|
|
602
610
|
title: "Create Flow",
|
|
603
611
|
description: "Create a new flow configuration in a project.",
|
|
604
612
|
inputSchema: {
|
|
605
|
-
name:
|
|
606
|
-
content:
|
|
607
|
-
projectId:
|
|
613
|
+
name: z4.string().min(1).max(255).describe("Flow name"),
|
|
614
|
+
content: z4.record(z4.string(), z4.unknown()).describe("Flow.Setup JSON content (must have version: 1)"),
|
|
615
|
+
projectId: z4.string().optional().describe("Project ID (defaults to WALKEROS_PROJECT_ID)")
|
|
608
616
|
},
|
|
617
|
+
outputSchema: FlowOutputShape,
|
|
609
618
|
annotations: {
|
|
610
619
|
readOnlyHint: false,
|
|
611
620
|
destructiveHint: false,
|
|
@@ -616,9 +625,9 @@ function registerFlowTools(server2) {
|
|
|
616
625
|
async ({ name, content, projectId: projectId2 }) => {
|
|
617
626
|
try {
|
|
618
627
|
const { createFlow } = await import("@walkeros/cli");
|
|
619
|
-
return
|
|
628
|
+
return apiResult(await createFlow({ name, content, projectId: projectId2 }));
|
|
620
629
|
} catch (error) {
|
|
621
|
-
return
|
|
630
|
+
return apiError(error);
|
|
622
631
|
}
|
|
623
632
|
}
|
|
624
633
|
);
|
|
@@ -626,13 +635,14 @@ function registerFlowTools(server2) {
|
|
|
626
635
|
"update-flow",
|
|
627
636
|
{
|
|
628
637
|
title: "Update Flow",
|
|
629
|
-
description: "Update a flow configuration name and/or content.
|
|
638
|
+
description: "Update a flow configuration name and/or content.",
|
|
630
639
|
inputSchema: {
|
|
631
|
-
flowId:
|
|
632
|
-
name:
|
|
633
|
-
content:
|
|
634
|
-
projectId:
|
|
640
|
+
flowId: z4.string().describe("Flow ID (cfg_...)"),
|
|
641
|
+
name: z4.string().min(1).max(255).optional().describe("New flow name"),
|
|
642
|
+
content: z4.record(z4.string(), z4.unknown()).optional().describe("New Flow.Setup JSON content"),
|
|
643
|
+
projectId: z4.string().optional().describe("Project ID (defaults to WALKEROS_PROJECT_ID)")
|
|
635
644
|
},
|
|
645
|
+
outputSchema: FlowOutputShape,
|
|
636
646
|
annotations: {
|
|
637
647
|
readOnlyHint: false,
|
|
638
648
|
destructiveHint: false,
|
|
@@ -643,11 +653,11 @@ function registerFlowTools(server2) {
|
|
|
643
653
|
async ({ flowId: flowId2, name, content, projectId: projectId2 }) => {
|
|
644
654
|
try {
|
|
645
655
|
const { updateFlow } = await import("@walkeros/cli");
|
|
646
|
-
return
|
|
656
|
+
return apiResult(
|
|
647
657
|
await updateFlow({ flowId: flowId2, name, content, projectId: projectId2 })
|
|
648
658
|
);
|
|
649
659
|
} catch (error) {
|
|
650
|
-
return
|
|
660
|
+
return apiError(error);
|
|
651
661
|
}
|
|
652
662
|
}
|
|
653
663
|
);
|
|
@@ -655,11 +665,12 @@ function registerFlowTools(server2) {
|
|
|
655
665
|
"delete-flow",
|
|
656
666
|
{
|
|
657
667
|
title: "Delete Flow",
|
|
658
|
-
description: "Soft-delete a flow configuration. Can be restored later.",
|
|
668
|
+
description: "Soft-delete a flow configuration. WARNING: This removes the flow configuration. Can be restored later. Requires flowId.",
|
|
659
669
|
inputSchema: {
|
|
660
|
-
flowId:
|
|
661
|
-
projectId:
|
|
670
|
+
flowId: z4.string().describe("Flow ID (cfg_...)"),
|
|
671
|
+
projectId: z4.string().optional().describe("Project ID (defaults to WALKEROS_PROJECT_ID)")
|
|
662
672
|
},
|
|
673
|
+
outputSchema: DeleteOutputShape,
|
|
663
674
|
annotations: {
|
|
664
675
|
readOnlyHint: false,
|
|
665
676
|
destructiveHint: true,
|
|
@@ -670,9 +681,9 @@ function registerFlowTools(server2) {
|
|
|
670
681
|
async ({ flowId: flowId2, projectId: projectId2 }) => {
|
|
671
682
|
try {
|
|
672
683
|
const { deleteFlow } = await import("@walkeros/cli");
|
|
673
|
-
return
|
|
684
|
+
return apiResult(await deleteFlow({ flowId: flowId2, projectId: projectId2 }));
|
|
674
685
|
} catch (error) {
|
|
675
|
-
return
|
|
686
|
+
return apiError(error);
|
|
676
687
|
}
|
|
677
688
|
}
|
|
678
689
|
);
|
|
@@ -682,10 +693,11 @@ function registerFlowTools(server2) {
|
|
|
682
693
|
title: "Duplicate Flow",
|
|
683
694
|
description: "Create a copy of an existing flow configuration.",
|
|
684
695
|
inputSchema: {
|
|
685
|
-
flowId:
|
|
686
|
-
name:
|
|
687
|
-
projectId:
|
|
696
|
+
flowId: z4.string().describe("Flow ID to duplicate (cfg_...)"),
|
|
697
|
+
name: z4.string().optional().describe('Name for the copy (defaults to "Copy of ...")'),
|
|
698
|
+
projectId: z4.string().optional().describe("Project ID (defaults to WALKEROS_PROJECT_ID)")
|
|
688
699
|
},
|
|
700
|
+
outputSchema: FlowOutputShape,
|
|
689
701
|
annotations: {
|
|
690
702
|
readOnlyHint: false,
|
|
691
703
|
destructiveHint: false,
|
|
@@ -696,26 +708,53 @@ function registerFlowTools(server2) {
|
|
|
696
708
|
async ({ flowId: flowId2, name, projectId: projectId2 }) => {
|
|
697
709
|
try {
|
|
698
710
|
const { duplicateFlow } = await import("@walkeros/cli");
|
|
699
|
-
return
|
|
711
|
+
return apiResult(await duplicateFlow({ flowId: flowId2, name, projectId: projectId2 }));
|
|
700
712
|
} catch (error) {
|
|
701
|
-
return
|
|
713
|
+
return apiError(error);
|
|
702
714
|
}
|
|
703
715
|
}
|
|
704
716
|
);
|
|
705
717
|
}
|
|
706
718
|
|
|
707
|
-
// src/tools/
|
|
708
|
-
import { z as
|
|
709
|
-
|
|
710
|
-
|
|
719
|
+
// src/tools/get-package-schema.ts
|
|
720
|
+
import { z as z5 } from "zod";
|
|
721
|
+
|
|
722
|
+
// ../core/dist/index.mjs
|
|
723
|
+
var e = Object.defineProperty;
|
|
724
|
+
var c = {};
|
|
725
|
+
((t, n) => {
|
|
726
|
+
for (var o in n) e(t, o, { get: n[o], enumerable: true });
|
|
727
|
+
})(c, { Level: () => u });
|
|
728
|
+
var u = ((e2) => (e2[e2.ERROR = 0] = "ERROR", e2[e2.INFO = 1] = "INFO", e2[e2.DEBUG = 2] = "DEBUG", e2))(u || {});
|
|
729
|
+
var Ce = "dist/walkerOS.json";
|
|
730
|
+
async function Re(e2, t) {
|
|
731
|
+
const n = t?.version || "latest", o = `https://cdn.jsdelivr.net/npm/${e2}@${n}`, r = new AbortController(), i = setTimeout(() => r.abort(), t?.timeout || 1e4);
|
|
732
|
+
try {
|
|
733
|
+
const t2 = await fetch(`${o}/package.json`, { signal: r.signal });
|
|
734
|
+
if (!t2.ok) throw new Error(`Package "${e2}" not found on npm (HTTP ${t2.status})`);
|
|
735
|
+
const i2 = await t2.json(), s = await fetch(`${o}/${Ce}`, { signal: r.signal });
|
|
736
|
+
if (!s.ok) throw new Error(`walkerOS.json not found at ${Ce} (HTTP ${s.status}). This package may not support the walkerOS.json convention yet.`);
|
|
737
|
+
const a = await s.json(), c2 = a.$meta || {};
|
|
738
|
+
return { packageName: e2, version: i2.version || n, type: c2.type, platform: c2.platform, schemas: a.schemas || {}, examples: a.examples || {} };
|
|
739
|
+
} finally {
|
|
740
|
+
clearTimeout(i);
|
|
741
|
+
}
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
// src/tools/get-package-schema.ts
|
|
745
|
+
function registerGetPackageSchemaTool(server2) {
|
|
711
746
|
server2.registerTool(
|
|
712
|
-
"
|
|
747
|
+
"get-package-schema",
|
|
713
748
|
{
|
|
714
|
-
title: "
|
|
715
|
-
description: "
|
|
749
|
+
title: "Get Package Schema",
|
|
750
|
+
description: "Fetch walkerOS package schemas and examples from npm via jsdelivr CDN. Returns JSON Schemas for settings and mapping configuration, plus examples. Use this to understand how to configure a destination, source, or transformer when building a flow.json.",
|
|
716
751
|
inputSchema: {
|
|
717
|
-
|
|
752
|
+
package: z5.string().min(1).describe(
|
|
753
|
+
"Exact npm package name (e.g., @walkeros/web-destination-snowplow)"
|
|
754
|
+
),
|
|
755
|
+
version: z5.string().optional().describe("Package version (default: latest)")
|
|
718
756
|
},
|
|
757
|
+
outputSchema: PackageSchemaOutputShape,
|
|
719
758
|
annotations: {
|
|
720
759
|
readOnlyHint: true,
|
|
721
760
|
destructiveHint: false,
|
|
@@ -723,30 +762,22 @@ function registerBundleRemoteTool(server2) {
|
|
|
723
762
|
openWorldHint: true
|
|
724
763
|
}
|
|
725
764
|
},
|
|
726
|
-
async ({
|
|
765
|
+
async ({ package: packageName, version }) => {
|
|
727
766
|
try {
|
|
728
|
-
const
|
|
729
|
-
method: "POST",
|
|
730
|
-
body: JSON.stringify({ flow: content }),
|
|
731
|
-
responseFormat: "raw"
|
|
732
|
-
});
|
|
733
|
-
const js = await response.text();
|
|
734
|
-
const statsHeader = response.headers.get("X-Bundle-Stats");
|
|
767
|
+
const info = await Re(packageName, { version });
|
|
735
768
|
const result = {
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
769
|
+
package: info.packageName,
|
|
770
|
+
version: info.version,
|
|
771
|
+
type: info.type,
|
|
772
|
+
platform: info.platform,
|
|
773
|
+
schemas: info.schemas,
|
|
774
|
+
examples: info.examples
|
|
739
775
|
};
|
|
740
|
-
if (statsHeader) {
|
|
741
|
-
try {
|
|
742
|
-
result.stats = JSON.parse(statsHeader);
|
|
743
|
-
} catch {
|
|
744
|
-
}
|
|
745
|
-
}
|
|
746
776
|
return {
|
|
747
777
|
content: [
|
|
748
778
|
{ type: "text", text: JSON.stringify(result, null, 2) }
|
|
749
|
-
]
|
|
779
|
+
],
|
|
780
|
+
structuredContent: result
|
|
750
781
|
};
|
|
751
782
|
} catch (error) {
|
|
752
783
|
return {
|
|
@@ -765,10 +796,103 @@ function registerBundleRemoteTool(server2) {
|
|
|
765
796
|
);
|
|
766
797
|
}
|
|
767
798
|
|
|
799
|
+
// src/resources/package-schemas.ts
|
|
800
|
+
import { ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
801
|
+
var KNOWN_PACKAGES = [
|
|
802
|
+
"@walkeros/web-destination-google-ga4",
|
|
803
|
+
"@walkeros/web-destination-meta-pixel",
|
|
804
|
+
"@walkeros/web-destination-plausible",
|
|
805
|
+
"@walkeros/web-destination-snowplow",
|
|
806
|
+
"@walkeros/web-destination-piwikpro",
|
|
807
|
+
"@walkeros/web-destination-etag",
|
|
808
|
+
"@walkeros/web-destination-bigquery",
|
|
809
|
+
"@walkeros/web-source-walker",
|
|
810
|
+
"@walkeros/web-source-datalayer"
|
|
811
|
+
];
|
|
812
|
+
function registerPackageSchemaResources(server2) {
|
|
813
|
+
const template = new ResourceTemplate("walkeros://schema/{packageName}", {
|
|
814
|
+
list: async () => ({
|
|
815
|
+
resources: KNOWN_PACKAGES.map((pkg) => ({
|
|
816
|
+
uri: `walkeros://schema/${encodeURIComponent(pkg)}`,
|
|
817
|
+
name: pkg,
|
|
818
|
+
description: `Schema and examples for ${pkg}`,
|
|
819
|
+
mimeType: "application/json"
|
|
820
|
+
}))
|
|
821
|
+
})
|
|
822
|
+
});
|
|
823
|
+
server2.registerResource(
|
|
824
|
+
"package-schema",
|
|
825
|
+
template,
|
|
826
|
+
{
|
|
827
|
+
title: "walkerOS Package Schema",
|
|
828
|
+
description: "JSON Schema and configuration examples for walkerOS packages",
|
|
829
|
+
mimeType: "application/json"
|
|
830
|
+
},
|
|
831
|
+
async (uri, { packageName }) => {
|
|
832
|
+
const info = await Re(
|
|
833
|
+
decodeURIComponent(packageName)
|
|
834
|
+
);
|
|
835
|
+
return {
|
|
836
|
+
contents: [
|
|
837
|
+
{
|
|
838
|
+
uri: uri.toString(),
|
|
839
|
+
mimeType: "application/json",
|
|
840
|
+
text: JSON.stringify(info, null, 2)
|
|
841
|
+
}
|
|
842
|
+
]
|
|
843
|
+
};
|
|
844
|
+
}
|
|
845
|
+
);
|
|
846
|
+
}
|
|
847
|
+
|
|
848
|
+
// src/resources/flows.ts
|
|
849
|
+
import { ResourceTemplate as ResourceTemplate2 } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
850
|
+
function registerFlowResources(server2) {
|
|
851
|
+
const template = new ResourceTemplate2("walkeros://flow/{flowId}", {
|
|
852
|
+
list: async () => {
|
|
853
|
+
try {
|
|
854
|
+
const { listFlows } = await import("@walkeros/cli");
|
|
855
|
+
const { flows } = await listFlows({});
|
|
856
|
+
return {
|
|
857
|
+
resources: flows.map((f) => ({
|
|
858
|
+
uri: `walkeros://flow/${f.id}`,
|
|
859
|
+
name: f.name,
|
|
860
|
+
mimeType: "application/json"
|
|
861
|
+
}))
|
|
862
|
+
};
|
|
863
|
+
} catch {
|
|
864
|
+
return { resources: [] };
|
|
865
|
+
}
|
|
866
|
+
}
|
|
867
|
+
});
|
|
868
|
+
server2.registerResource(
|
|
869
|
+
"flow-config",
|
|
870
|
+
template,
|
|
871
|
+
{
|
|
872
|
+
title: "walkerOS Flow Configuration",
|
|
873
|
+
description: "Flow configurations from your walkerOS project",
|
|
874
|
+
mimeType: "application/json"
|
|
875
|
+
},
|
|
876
|
+
async (uri, { flowId: flowId2 }) => {
|
|
877
|
+
const { getFlow } = await import("@walkeros/cli");
|
|
878
|
+
const flow = await getFlow({ flowId: flowId2 });
|
|
879
|
+
return {
|
|
880
|
+
contents: [
|
|
881
|
+
{
|
|
882
|
+
uri: uri.toString(),
|
|
883
|
+
mimeType: "application/json",
|
|
884
|
+
text: JSON.stringify(flow, null, 2)
|
|
885
|
+
}
|
|
886
|
+
]
|
|
887
|
+
};
|
|
888
|
+
}
|
|
889
|
+
);
|
|
890
|
+
}
|
|
891
|
+
|
|
768
892
|
// src/index.ts
|
|
769
893
|
var server = new McpServer({
|
|
770
894
|
name: "walkeros",
|
|
771
|
-
version: "0.
|
|
895
|
+
version: "0.4.0-next-1771257332985"
|
|
772
896
|
});
|
|
773
897
|
registerBundleTool(server);
|
|
774
898
|
registerSimulateTool(server);
|
|
@@ -777,7 +901,9 @@ registerValidateTool(server);
|
|
|
777
901
|
registerAuthTools(server);
|
|
778
902
|
registerProjectTools(server);
|
|
779
903
|
registerFlowTools(server);
|
|
780
|
-
|
|
904
|
+
registerGetPackageSchemaTool(server);
|
|
905
|
+
registerPackageSchemaResources(server);
|
|
906
|
+
registerFlowResources(server);
|
|
781
907
|
async function main() {
|
|
782
908
|
const transport = new StdioServerTransport();
|
|
783
909
|
await server.connect(transport);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/tools/bundle.ts","../src/schemas/output.ts","../src/tools/simulate.ts","../src/tools/push.ts","../src/tools/validate.ts","../src/tools/auth.ts","../src/tools/projects.ts","../src/tools/flows.ts","../src/tools/bundle-remote.ts"],"sourcesContent":["import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\n// Local CLI tools\nimport { registerBundleTool } from './tools/bundle.js';\nimport { registerSimulateTool } from './tools/simulate.js';\nimport { registerPushTool } from './tools/push.js';\nimport { registerValidateTool } from './tools/validate.js';\n// API tools\nimport { registerAuthTools } from './tools/auth.js';\nimport { registerProjectTools } from './tools/projects.js';\nimport { registerFlowTools } from './tools/flows.js';\nimport { registerBundleRemoteTool } from './tools/bundle-remote.js';\n\ndeclare const __VERSION__: string;\n\nconst server = new McpServer({\n name: 'walkeros',\n version: __VERSION__,\n});\n\n// Local CLI tools\nregisterBundleTool(server);\nregisterSimulateTool(server);\nregisterPushTool(server);\nregisterValidateTool(server);\n\n// API tools\nregisterAuthTools(server);\nregisterProjectTools(server);\nregisterFlowTools(server);\nregisterBundleRemoteTool(server);\n\nasync function main() {\n const transport = new StdioServerTransport();\n await server.connect(transport);\n console.error('walkerOS MCP server running on stdio');\n}\n\nmain().catch((error) => {\n console.error('Failed to start MCP server:', error);\n process.exit(1);\n});\n","import { schemas } from '@walkeros/cli/dev';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { BundleOutputShape } from '../schemas/output.js';\n\nexport function registerBundleTool(server: McpServer) {\n server.registerTool(\n 'bundle',\n {\n title: 'Bundle',\n description:\n 'Bundle a walkerOS flow configuration into deployable JavaScript. ' +\n 'Resolves all destinations, sources, and transformers, then outputs ' +\n 'a tree-shaken production bundle. Returns bundle statistics.',\n inputSchema: schemas.BundleInputShape,\n outputSchema: BundleOutputShape,\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n async ({ configPath, flow, stats, output }) => {\n try {\n // Dynamic import to handle peer dependency\n const { bundle } = await import('@walkeros/cli');\n\n const result = await bundle(configPath, {\n flowName: flow,\n stats: stats ?? true,\n buildOverrides: output ? { output } : undefined,\n });\n\n const output_ = (result as unknown as Record<string, unknown>) ?? {\n success: true,\n message: 'Bundle created',\n };\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(output_, null, 2),\n },\n ],\n structuredContent: output_,\n };\n } catch (error) {\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify({\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error',\n }),\n },\n ],\n isError: true,\n };\n }\n },\n );\n}\n","import { z } from 'zod';\n\n// Shared primitives\nconst timestamp = z.string().describe('ISO 8601 timestamp');\nconst projectId = z.string().describe('Project ID (proj_...)');\nconst flowId = z.string().describe('Flow ID (cfg_...)');\n\n// Error shape (for reference)\nexport const ErrorOutputShape = {\n error: z.string().describe('Error message'),\n};\n\n// CLI tool output shapes\nexport const ValidateOutputShape = {\n valid: z.boolean().describe('Whether validation passed'),\n type: z.enum(['event', 'flow', 'mapping']).describe('What was validated'),\n errors: z\n .array(\n z.object({\n path: z.string(),\n message: z.string(),\n value: z.unknown().optional(),\n code: z.string().optional(),\n }),\n )\n .describe('Validation errors'),\n warnings: z\n .array(\n z.object({\n path: z.string(),\n message: z.string(),\n suggestion: z.string().optional(),\n }),\n )\n .describe('Validation warnings'),\n details: z\n .record(z.string(), z.unknown())\n .describe('Additional validation details'),\n};\n\nexport const BundleOutputShape = {\n success: z.boolean().describe('Whether bundling succeeded'),\n totalSize: z.number().optional().describe('Total bundle size in bytes'),\n buildTime: z.number().optional().describe('Build time in milliseconds'),\n packages: z\n .array(\n z.object({\n name: z.string(),\n size: z.number(),\n }),\n )\n .optional()\n .describe('Per-package size breakdown'),\n treeshakingEffective: z\n .boolean()\n .optional()\n .describe('Whether tree-shaking was effective'),\n message: z.string().optional().describe('Status message'),\n};\n\nexport const SimulateOutputShape = {\n success: z.boolean().describe('Whether simulation succeeded'),\n error: z.string().optional().describe('Error message if simulation failed'),\n collector: z\n .unknown()\n .optional()\n .describe('Collector state after simulation'),\n elbResult: z.unknown().optional().describe('Push result from the collector'),\n logs: z.array(z.unknown()).optional().describe('Log entries from simulation'),\n usage: z\n .record(z.string(), z.array(z.unknown()))\n .optional()\n .describe('API call usage per destination'),\n duration: z\n .number()\n .optional()\n .describe('Simulation duration in milliseconds'),\n};\n\nexport const PushOutputShape = {\n success: z.boolean().describe('Whether push succeeded'),\n elbResult: z.unknown().optional().describe('Push result from the collector'),\n duration: z.number().describe('Push duration in milliseconds'),\n error: z.string().optional().describe('Error message if push failed'),\n};\n\n// Auth output shapes\nexport const WhoamiOutputShape = {\n userId: z.string().describe('User ID'),\n email: z.string().describe('User email address'),\n projectId: z\n .string()\n .nullable()\n .describe('Project ID if token is project-scoped'),\n};\n\n// Project output shapes\nconst projectFields = {\n id: projectId,\n name: z.string().describe('Project name'),\n role: z.enum(['owner', 'member']).describe('Your role in this project'),\n createdAt: timestamp,\n updatedAt: timestamp,\n};\n\nexport const ProjectOutputShape = { ...projectFields };\n\nexport const ListProjectsOutputShape = {\n projects: z.array(z.object(projectFields)).describe('List of projects'),\n total: z.number().describe('Total number of projects'),\n};\n\n// Flow output shapes\nconst flowFields = {\n id: flowId,\n name: z.string().describe('Flow name'),\n content: z\n .record(z.string(), z.unknown())\n .describe('Flow.Setup JSON content'),\n createdAt: timestamp,\n updatedAt: timestamp,\n deletedAt: z\n .string()\n .nullable()\n .optional()\n .describe('Deletion timestamp if soft-deleted'),\n};\n\nexport const FlowOutputShape = { ...flowFields };\n\nconst flowSummaryFields = {\n id: flowId,\n name: z.string().describe('Flow name'),\n createdAt: timestamp,\n updatedAt: timestamp,\n deletedAt: z\n .string()\n .nullable()\n .describe('Deletion timestamp if soft-deleted'),\n};\n\nexport const ListFlowsOutputShape = {\n flows: z\n .array(z.object(flowSummaryFields))\n .describe('List of flow summaries'),\n total: z.number().describe('Total number of flows'),\n};\n\n// Delete output shape (shared)\nexport const DeleteOutputShape = {\n success: z.literal(true).describe('Deletion succeeded'),\n};\n\n// Bundle Remote output shape\nexport const BundleRemoteOutputShape = {\n success: z.boolean().describe('Whether bundling succeeded'),\n bundle: z.string().describe('Compiled JavaScript bundle'),\n size: z.number().describe('Bundle size in bytes'),\n stats: z\n .record(z.string(), z.unknown())\n .optional()\n .describe('Bundle statistics from server'),\n};\n","import { schemas } from '@walkeros/cli/dev';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { SimulateOutputShape } from '../schemas/output.js';\n\nexport function registerSimulateTool(server: McpServer) {\n server.registerTool(\n 'simulate',\n {\n title: 'Simulate',\n description:\n 'Simulate events through a walkerOS flow without making real API calls. ' +\n 'Processes events through the full pipeline including transformers and destinations, ' +\n 'returning detailed results with logs and usage statistics.',\n inputSchema: schemas.SimulateInputShape,\n outputSchema: SimulateOutputShape,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n async ({ configPath, event, flow, platform }) => {\n try {\n const { simulate } = await import('@walkeros/cli');\n\n // Parse event if JSON string\n let parsedEvent: unknown = event;\n if (event.startsWith('{') || event.startsWith('[')) {\n try {\n parsedEvent = JSON.parse(event);\n } catch {\n // Keep as string (file path or URL)\n }\n }\n\n const result = await simulate(configPath, parsedEvent, {\n json: true,\n flow,\n platform,\n });\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(result, null, 2),\n },\n ],\n structuredContent: result as unknown as Record<string, unknown>,\n };\n } catch (error) {\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify({\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error',\n }),\n },\n ],\n isError: true,\n };\n }\n },\n );\n}\n","import { schemas } from '@walkeros/cli/dev';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { PushOutputShape } from '../schemas/output.js';\n\nexport function registerPushTool(server: McpServer) {\n server.registerTool(\n 'push',\n {\n title: 'Push',\n description:\n 'Push a real event through a walkerOS flow to actual destinations. ' +\n 'WARNING: This makes real API calls to real endpoints. ' +\n 'Events will be sent to configured destinations (analytics, CRM, etc.).',\n inputSchema: schemas.PushInputShape,\n outputSchema: PushOutputShape,\n annotations: {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async ({ configPath, event, flow, platform }) => {\n try {\n const { push } = await import('@walkeros/cli');\n\n // Parse event if JSON string\n let parsedEvent: unknown = event;\n if (event.startsWith('{') || event.startsWith('[')) {\n try {\n parsedEvent = JSON.parse(event);\n } catch {\n // Keep as string (file path or URL)\n }\n }\n\n const result = await push(configPath, parsedEvent, {\n json: true,\n flow,\n platform,\n });\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(result, null, 2),\n },\n ],\n structuredContent: result as unknown as Record<string, unknown>,\n };\n } catch (error) {\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify({\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error',\n }),\n },\n ],\n isError: true,\n };\n }\n },\n );\n}\n","import { schemas } from '@walkeros/cli/dev';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { ValidateOutputShape } from '../schemas/output.js';\n\nexport function registerValidateTool(server: McpServer) {\n server.registerTool(\n 'validate',\n {\n title: 'Validate',\n description:\n 'Validate walkerOS events, flow configurations, or mapping rules. ' +\n 'Accepts JSON strings, file paths, or URLs as input. ' +\n 'Returns validation results with errors, warnings, and details.',\n inputSchema: schemas.ValidateInputShape,\n outputSchema: ValidateOutputShape,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n async ({ type, input, flow }) => {\n try {\n // Dynamic import to handle peer dependency\n const { validate } = await import('@walkeros/cli');\n\n // Parse input if it looks like JSON\n let parsedInput: unknown = input;\n if (input.startsWith('{') || input.startsWith('[')) {\n try {\n parsedInput = JSON.parse(input);\n } catch {\n // Keep as string (file path or URL)\n }\n }\n\n const result = await validate(type, parsedInput, { flow });\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(result, null, 2),\n },\n ],\n structuredContent: result as unknown as Record<string, unknown>,\n };\n } catch (error) {\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify({\n valid: false,\n error: error instanceof Error ? error.message : 'Unknown error',\n }),\n },\n ],\n isError: true,\n };\n }\n },\n );\n}\n","import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n\nexport function registerAuthTools(server: McpServer) {\n server.registerTool(\n 'whoami',\n {\n title: 'Who Am I',\n description:\n 'Verify your API token and see your identity. ' +\n 'Returns user ID, email, and project ID (if token is project-scoped). ' +\n 'Use this to confirm your token works and discover your project ID.',\n inputSchema: {},\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async () => {\n try {\n const { whoami } = await import('@walkeros/cli');\n const result = await whoami();\n return {\n content: [\n { type: 'text' as const, text: JSON.stringify(result, null, 2) },\n ],\n };\n } catch (error) {\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : 'Unknown error',\n }),\n },\n ],\n isError: true,\n };\n }\n },\n );\n}\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n\nfunction apiResult(result: unknown) {\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n}\n\nfunction apiError(error: unknown) {\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : 'Unknown error',\n }),\n },\n ],\n isError: true as const,\n };\n}\n\nexport function registerProjectTools(server: McpServer) {\n server.registerTool(\n 'list-projects',\n {\n title: 'List Projects',\n description:\n 'List all projects you have access to. Returns project IDs, names, and your role.',\n inputSchema: {},\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async () => {\n try {\n const { listProjects } = await import('@walkeros/cli');\n return apiResult(await listProjects());\n } catch (error) {\n return apiError(error);\n }\n },\n );\n\n server.registerTool(\n 'get-project',\n {\n title: 'Get Project',\n description:\n 'Get details for a project. Uses WALKEROS_PROJECT_ID if projectId is omitted.',\n inputSchema: {\n projectId: z\n .string()\n .optional()\n .describe('Project ID (defaults to WALKEROS_PROJECT_ID)'),\n },\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async ({ projectId }) => {\n try {\n const { getProject } = await import('@walkeros/cli');\n return apiResult(await getProject({ projectId }));\n } catch (error) {\n return apiError(error);\n }\n },\n );\n\n server.registerTool(\n 'create-project',\n {\n title: 'Create Project',\n description: 'Create a new project.',\n inputSchema: {\n name: z.string().min(1).max(255).describe('Project name'),\n },\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async ({ name }) => {\n try {\n const { createProject } = await import('@walkeros/cli');\n return apiResult(await createProject({ name }));\n } catch (error) {\n return apiError(error);\n }\n },\n );\n\n server.registerTool(\n 'update-project',\n {\n title: 'Update Project',\n description:\n 'Update a project name. Uses WALKEROS_PROJECT_ID if projectId is omitted.',\n inputSchema: {\n projectId: z\n .string()\n .optional()\n .describe('Project ID (defaults to WALKEROS_PROJECT_ID)'),\n name: z.string().min(1).max(255).describe('New project name'),\n },\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async ({ projectId, name }) => {\n try {\n const { updateProject } = await import('@walkeros/cli');\n return apiResult(await updateProject({ projectId, name }));\n } catch (error) {\n return apiError(error);\n }\n },\n );\n\n server.registerTool(\n 'delete-project',\n {\n title: 'Delete Project',\n description:\n 'Soft-delete a project and all its flows. Uses WALKEROS_PROJECT_ID if projectId is omitted.',\n inputSchema: {\n projectId: z\n .string()\n .optional()\n .describe('Project ID (defaults to WALKEROS_PROJECT_ID)'),\n },\n annotations: {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async ({ projectId }) => {\n try {\n const { deleteProject } = await import('@walkeros/cli');\n return apiResult(await deleteProject({ projectId }));\n } catch (error) {\n return apiError(error);\n }\n },\n );\n}\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n\nfunction apiResult(result: unknown) {\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n };\n}\n\nfunction apiError(error: unknown) {\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : 'Unknown error',\n }),\n },\n ],\n isError: true as const,\n };\n}\n\nexport function registerFlowTools(server: McpServer) {\n server.registerTool(\n 'list-flows',\n {\n title: 'List Flows',\n description: 'List all flow configurations in a project.',\n inputSchema: {\n projectId: z\n .string()\n .optional()\n .describe('Project ID (defaults to WALKEROS_PROJECT_ID)'),\n sort: z\n .enum(['name', 'updated_at', 'created_at'])\n .optional()\n .describe('Sort field (default: updated_at)'),\n order: z\n .enum(['asc', 'desc'])\n .optional()\n .describe('Sort order (default: desc)'),\n includeDeleted: z\n .boolean()\n .optional()\n .describe('Include soft-deleted flows (default: false)'),\n },\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async ({ projectId, sort, order, includeDeleted }) => {\n try {\n const { listFlows } = await import('@walkeros/cli');\n return apiResult(\n await listFlows({ projectId, sort, order, includeDeleted }),\n );\n } catch (error) {\n return apiError(error);\n }\n },\n );\n\n server.registerTool(\n 'get-flow',\n {\n title: 'Get Flow',\n description:\n 'Get a flow configuration with its full content (Flow.Setup JSON).',\n inputSchema: {\n flowId: z.string().describe('Flow ID (cfg_...)'),\n projectId: z\n .string()\n .optional()\n .describe('Project ID (defaults to WALKEROS_PROJECT_ID)'),\n },\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async ({ flowId, projectId }) => {\n try {\n const { getFlow } = await import('@walkeros/cli');\n return apiResult(await getFlow({ flowId, projectId }));\n } catch (error) {\n return apiError(error);\n }\n },\n );\n\n server.registerTool(\n 'create-flow',\n {\n title: 'Create Flow',\n description: 'Create a new flow configuration in a project.',\n inputSchema: {\n name: z.string().min(1).max(255).describe('Flow name'),\n content: z\n .record(z.string(), z.unknown())\n .describe('Flow.Setup JSON content (must have version: 1)'),\n projectId: z\n .string()\n .optional()\n .describe('Project ID (defaults to WALKEROS_PROJECT_ID)'),\n },\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async ({ name, content, projectId }) => {\n try {\n const { createFlow } = await import('@walkeros/cli');\n return apiResult(await createFlow({ name, content, projectId }));\n } catch (error) {\n return apiError(error);\n }\n },\n );\n\n server.registerTool(\n 'update-flow',\n {\n title: 'Update Flow',\n description:\n 'Update a flow configuration name and/or content. Creates a version snapshot automatically.',\n inputSchema: {\n flowId: z.string().describe('Flow ID (cfg_...)'),\n name: z.string().min(1).max(255).optional().describe('New flow name'),\n content: z\n .record(z.string(), z.unknown())\n .optional()\n .describe('New Flow.Setup JSON content'),\n projectId: z\n .string()\n .optional()\n .describe('Project ID (defaults to WALKEROS_PROJECT_ID)'),\n },\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async ({ flowId, name, content, projectId }) => {\n try {\n const { updateFlow } = await import('@walkeros/cli');\n return apiResult(\n await updateFlow({ flowId, name, content, projectId }),\n );\n } catch (error) {\n return apiError(error);\n }\n },\n );\n\n server.registerTool(\n 'delete-flow',\n {\n title: 'Delete Flow',\n description: 'Soft-delete a flow configuration. Can be restored later.',\n inputSchema: {\n flowId: z.string().describe('Flow ID (cfg_...)'),\n projectId: z\n .string()\n .optional()\n .describe('Project ID (defaults to WALKEROS_PROJECT_ID)'),\n },\n annotations: {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async ({ flowId, projectId }) => {\n try {\n const { deleteFlow } = await import('@walkeros/cli');\n return apiResult(await deleteFlow({ flowId, projectId }));\n } catch (error) {\n return apiError(error);\n }\n },\n );\n\n server.registerTool(\n 'duplicate-flow',\n {\n title: 'Duplicate Flow',\n description: 'Create a copy of an existing flow configuration.',\n inputSchema: {\n flowId: z.string().describe('Flow ID to duplicate (cfg_...)'),\n name: z\n .string()\n .optional()\n .describe('Name for the copy (defaults to \"Copy of ...\")'),\n projectId: z\n .string()\n .optional()\n .describe('Project ID (defaults to WALKEROS_PROJECT_ID)'),\n },\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async ({ flowId, name, projectId }) => {\n try {\n const { duplicateFlow } = await import('@walkeros/cli');\n return apiResult(await duplicateFlow({ flowId, name, projectId }));\n } catch (error) {\n return apiError(error);\n }\n },\n );\n}\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { apiRequest } from '@walkeros/cli';\n\nexport function registerBundleRemoteTool(server: McpServer) {\n server.registerTool(\n 'bundle-remote',\n {\n title: 'Bundle Remote',\n description:\n 'Bundle a flow configuration into deployable JavaScript using the walkerOS cloud service. ' +\n 'Sends config JSON and receives a compiled .mjs bundle. No local build tools needed.',\n inputSchema: {\n content: z\n .record(z.string(), z.unknown())\n .describe('Flow.Setup JSON content (must have version: 1)'),\n },\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async ({ content }) => {\n try {\n const response = (await apiRequest('/api/bundle', {\n method: 'POST',\n body: JSON.stringify({ flow: content }),\n responseFormat: 'raw',\n })) as Response;\n\n const js = await response.text();\n const statsHeader = response.headers.get('X-Bundle-Stats');\n const result: Record<string, unknown> = {\n success: true,\n bundle: js,\n size: js.length,\n };\n if (statsHeader) {\n try {\n result.stats = JSON.parse(statsHeader);\n } catch {}\n }\n\n return {\n content: [\n { type: 'text' as const, text: JSON.stringify(result, null, 2) },\n ],\n };\n } catch (error) {\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : 'Unknown error',\n }),\n },\n ],\n isError: true,\n };\n }\n },\n );\n}\n"],"mappings":"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","names":["server","schemas","server","schemas","schemas","server","schemas","schemas","server","schemas","server","z","server","projectId","z","apiResult","apiError","server","projectId","flowId","z","server"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/tools/bundle.ts","../src/schemas/output.ts","../src/tools/helpers.ts","../src/tools/simulate.ts","../src/tools/push.ts","../src/tools/validate.ts","../src/tools/auth.ts","../src/tools/projects.ts","../src/tools/flows.ts","../src/tools/get-package-schema.ts","../src/resources/package-schemas.ts","../src/resources/flows.ts"],"sourcesContent":["import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\n// Local CLI tools\nimport { registerBundleTool } from './tools/bundle.js';\nimport { registerSimulateTool } from './tools/simulate.js';\nimport { registerPushTool } from './tools/push.js';\nimport { registerValidateTool } from './tools/validate.js';\n// API tools\nimport { registerAuthTools } from './tools/auth.js';\nimport { registerProjectTools } from './tools/projects.js';\nimport { registerFlowTools } from './tools/flows.js';\n// CDN tools\nimport { registerGetPackageSchemaTool } from './tools/get-package-schema.js';\n// Resources\nimport { registerPackageSchemaResources } from './resources/package-schemas.js';\nimport { registerFlowResources } from './resources/flows.js';\n\ndeclare const __VERSION__: string;\n\nconst server = new McpServer({\n name: 'walkeros',\n version: __VERSION__,\n});\n\n// Local CLI tools\nregisterBundleTool(server);\nregisterSimulateTool(server);\nregisterPushTool(server);\nregisterValidateTool(server);\n\n// API tools\nregisterAuthTools(server);\nregisterProjectTools(server);\nregisterFlowTools(server);\n\n// CDN tools\nregisterGetPackageSchemaTool(server);\n\n// Resources\nregisterPackageSchemaResources(server);\nregisterFlowResources(server);\n\nasync function main() {\n const transport = new StdioServerTransport();\n await server.connect(transport);\n console.error('walkerOS MCP server running on stdio');\n}\n\nmain().catch((error) => {\n console.error('Failed to start MCP server:', error);\n process.exit(1);\n});\n","import { z } from 'zod';\nimport { schemas } from '@walkeros/cli/dev';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { BundleOutputShape } from '../schemas/output.js';\nimport { structuredResult } from './helpers.js';\n\nexport function registerBundleTool(server: McpServer) {\n server.registerTool(\n 'bundle',\n {\n title: 'Bundle',\n description:\n 'Bundle a walkerOS flow configuration into deployable JavaScript. ' +\n 'Resolves all destinations, sources, and transformers, then outputs ' +\n 'a tree-shaken production bundle. Returns bundle statistics. ' +\n 'Set remote: true to use the walkerOS cloud service instead of local build tools.',\n inputSchema: {\n ...schemas.BundleInputShape,\n remote: z\n .boolean()\n .optional()\n .describe(\n 'Use remote cloud bundling (requires WALKEROS_TOKEN). Default: false (local)',\n ),\n content: z\n .record(z.string(), z.unknown())\n .optional()\n .describe('Flow.Setup JSON content (required when remote: true)'),\n },\n outputSchema: BundleOutputShape,\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n async ({ configPath, flow, stats, output, remote, content }) => {\n try {\n if (remote) {\n if (!content)\n throw new Error('content is required when remote: true');\n const { bundleRemote } = await import('@walkeros/cli');\n const result = await bundleRemote({\n content: content as Record<string, unknown>,\n });\n return structuredResult({ success: true, ...result });\n }\n\n // Local bundle path\n const { bundle } = await import('@walkeros/cli');\n\n const result = await bundle(configPath, {\n flowName: flow,\n stats: stats ?? true,\n buildOverrides: output ? { output } : undefined,\n });\n\n const output_ = (result as unknown as Record<string, unknown>) ?? {\n success: true,\n message: 'Bundle created',\n };\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(output_, null, 2),\n },\n ],\n structuredContent: output_,\n };\n } catch (error) {\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify({\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error',\n }),\n },\n ],\n isError: true,\n };\n }\n },\n );\n}\n","import { z } from 'zod';\n\n// Shared primitives\nconst timestamp = z.string().describe('ISO 8601 timestamp');\nconst projectId = z.string().describe('Project ID (proj_...)');\nconst flowId = z.string().describe('Flow ID (cfg_...)');\n\n// Error shape (for reference)\nexport const ErrorOutputShape = {\n error: z.string().describe('Error message'),\n};\n\n// CLI tool output shapes\nexport const ValidateOutputShape = {\n valid: z.boolean().describe('Whether validation passed'),\n type: z.enum(['event', 'flow', 'mapping']).describe('What was validated'),\n errors: z\n .array(\n z.object({\n path: z.string(),\n message: z.string(),\n value: z.unknown().optional(),\n code: z.string().optional(),\n }),\n )\n .describe('Validation errors'),\n warnings: z\n .array(\n z.object({\n path: z.string(),\n message: z.string(),\n suggestion: z.string().optional(),\n }),\n )\n .describe('Validation warnings'),\n details: z\n .record(z.string(), z.unknown())\n .describe('Additional validation details'),\n};\n\nexport const BundleOutputShape = {\n success: z.boolean().describe('Whether bundling succeeded'),\n totalSize: z.number().optional().describe('Total bundle size in bytes'),\n buildTime: z.number().optional().describe('Build time in milliseconds'),\n packages: z\n .array(\n z.object({\n name: z.string(),\n size: z.number(),\n }),\n )\n .optional()\n .describe('Per-package size breakdown'),\n treeshakingEffective: z\n .boolean()\n .optional()\n .describe('Whether tree-shaking was effective'),\n message: z.string().optional().describe('Status message'),\n};\n\nexport const SimulateOutputShape = {\n success: z.boolean().describe('Whether simulation succeeded'),\n error: z.string().optional().describe('Error message if simulation failed'),\n collector: z\n .unknown()\n .optional()\n .describe('Collector state after simulation'),\n elbResult: z.unknown().optional().describe('Push result from the collector'),\n logs: z.array(z.unknown()).optional().describe('Log entries from simulation'),\n usage: z\n .record(z.string(), z.array(z.unknown()))\n .optional()\n .describe('API call usage per destination'),\n duration: z\n .number()\n .optional()\n .describe('Simulation duration in milliseconds'),\n};\n\nexport const PushOutputShape = {\n success: z.boolean().describe('Whether push succeeded'),\n elbResult: z.unknown().optional().describe('Push result from the collector'),\n duration: z.number().describe('Push duration in milliseconds'),\n error: z.string().optional().describe('Error message if push failed'),\n};\n\n// Auth output shapes\nexport const WhoamiOutputShape = {\n userId: z.string().describe('User ID'),\n email: z.string().describe('User email address'),\n projectId: z\n .string()\n .nullable()\n .describe('Project ID if token is project-scoped'),\n};\n\n// Project output shapes\nconst projectFields = {\n id: projectId,\n name: z.string().describe('Project name'),\n role: z.enum(['owner', 'member']).describe('Your role in this project'),\n createdAt: timestamp,\n updatedAt: timestamp,\n};\n\nexport const ProjectOutputShape = { ...projectFields };\n\nexport const ListProjectsOutputShape = {\n projects: z.array(z.object(projectFields)).describe('List of projects'),\n total: z.number().describe('Total number of projects'),\n};\n\n// Flow output shapes\nconst flowFields = {\n id: flowId,\n name: z.string().describe('Flow name'),\n content: z\n .record(z.string(), z.unknown())\n .describe('Flow.Setup JSON content'),\n createdAt: timestamp,\n updatedAt: timestamp,\n deletedAt: z\n .string()\n .nullable()\n .optional()\n .describe('Deletion timestamp if soft-deleted'),\n};\n\nexport const FlowOutputShape = { ...flowFields };\n\nconst flowSummaryFields = {\n id: flowId,\n name: z.string().describe('Flow name'),\n createdAt: timestamp,\n updatedAt: timestamp,\n deletedAt: z\n .string()\n .nullable()\n .describe('Deletion timestamp if soft-deleted'),\n};\n\nexport const ListFlowsOutputShape = {\n flows: z\n .array(z.object(flowSummaryFields))\n .describe('List of flow summaries'),\n total: z.number().describe('Total number of flows'),\n};\n\n// Delete output shape (shared)\nexport const DeleteOutputShape = {\n success: z.literal(true).describe('Deletion succeeded'),\n};\n\n// Package Schema output shape\nexport const PackageSchemaOutputShape = {\n package: z.string().describe('Package name'),\n version: z.string().describe('Package version'),\n type: z.string().describe('Package type (destination, source, transformer)'),\n platform: z.string().describe('Target platform (web, server)'),\n schemas: z\n .record(z.string(), z.unknown())\n .describe('JSON Schemas for settings and mapping'),\n examples: z\n .record(z.string(), z.unknown())\n .optional()\n .describe('Configuration examples'),\n};\n\n// Bundle Remote output shape\nexport const BundleRemoteOutputShape = {\n success: z.boolean().describe('Whether bundling succeeded'),\n bundle: z.string().describe('Compiled JavaScript bundle'),\n size: z.number().describe('Bundle size in bytes'),\n stats: z\n .record(z.string(), z.unknown())\n .optional()\n .describe('Bundle statistics from server'),\n};\n","export function apiResult(result: unknown) {\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n structuredContent: result as Record<string, unknown>,\n };\n}\n\nexport function apiError(error: unknown) {\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : 'Unknown error',\n }),\n },\n ],\n isError: true as const,\n };\n}\n\nexport function structuredResult(result: unknown) {\n return {\n content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],\n structuredContent: result as Record<string, unknown>,\n };\n}\n","import { schemas } from '@walkeros/cli/dev';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { SimulateOutputShape } from '../schemas/output.js';\n\nexport function registerSimulateTool(server: McpServer) {\n server.registerTool(\n 'simulate',\n {\n title: 'Simulate',\n description:\n 'Simulate events through a walkerOS flow without making real API calls. ' +\n 'Processes events through the full pipeline including transformers and destinations, ' +\n 'returning detailed results with logs and usage statistics.',\n inputSchema: schemas.SimulateInputShape,\n outputSchema: SimulateOutputShape,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n async ({ configPath, event, flow, platform }) => {\n try {\n const { simulate } = await import('@walkeros/cli');\n\n // Parse event if JSON string\n let parsedEvent: unknown = event;\n if (event.startsWith('{') || event.startsWith('[')) {\n try {\n parsedEvent = JSON.parse(event);\n } catch {\n // Keep as string (file path or URL)\n }\n }\n\n const result = await simulate(configPath, parsedEvent, {\n json: true,\n flow,\n platform,\n });\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(result, null, 2),\n },\n ],\n structuredContent: result as unknown as Record<string, unknown>,\n };\n } catch (error) {\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify({\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error',\n }),\n },\n ],\n isError: true,\n };\n }\n },\n );\n}\n","import { schemas } from '@walkeros/cli/dev';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { PushOutputShape } from '../schemas/output.js';\n\nexport function registerPushTool(server: McpServer) {\n server.registerTool(\n 'push',\n {\n title: 'Push',\n description:\n 'Push a real event through a walkerOS flow to actual destinations. ' +\n 'WARNING: This makes real API calls to real endpoints. ' +\n 'Events will be sent to configured destinations (analytics, CRM, etc.).',\n inputSchema: schemas.PushInputShape,\n outputSchema: PushOutputShape,\n annotations: {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async ({ configPath, event, flow, platform }) => {\n try {\n const { push } = await import('@walkeros/cli');\n\n // Parse event if JSON string\n let parsedEvent: unknown = event;\n if (event.startsWith('{') || event.startsWith('[')) {\n try {\n parsedEvent = JSON.parse(event);\n } catch {\n // Keep as string (file path or URL)\n }\n }\n\n const result = await push(configPath, parsedEvent, {\n json: true,\n flow,\n platform,\n });\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(result, null, 2),\n },\n ],\n structuredContent: result as unknown as Record<string, unknown>,\n };\n } catch (error) {\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify({\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error',\n }),\n },\n ],\n isError: true,\n };\n }\n },\n );\n}\n","import { schemas } from '@walkeros/cli/dev';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { ValidateOutputShape } from '../schemas/output.js';\n\nexport function registerValidateTool(server: McpServer) {\n server.registerTool(\n 'validate',\n {\n title: 'Validate',\n description:\n 'Validate walkerOS events, flow configurations, or mapping rules. ' +\n 'Accepts JSON strings, file paths, or URLs as input. ' +\n 'Returns validation results with errors, warnings, and details.',\n inputSchema: schemas.ValidateInputShape,\n outputSchema: ValidateOutputShape,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n async ({ type, input, flow }) => {\n try {\n // Dynamic import to handle peer dependency\n const { validate } = await import('@walkeros/cli');\n\n // Parse input if it looks like JSON\n let parsedInput: unknown = input;\n if (input.startsWith('{') || input.startsWith('[')) {\n try {\n parsedInput = JSON.parse(input);\n } catch {\n // Keep as string (file path or URL)\n }\n }\n\n const result = await validate(type, parsedInput, { flow });\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(result, null, 2),\n },\n ],\n structuredContent: result as unknown as Record<string, unknown>,\n };\n } catch (error) {\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify({\n valid: false,\n error: error instanceof Error ? error.message : 'Unknown error',\n }),\n },\n ],\n isError: true,\n };\n }\n },\n );\n}\n","import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { apiResult, apiError } from './helpers.js';\nimport { WhoamiOutputShape } from '../schemas/output.js';\n\nexport function registerAuthTools(server: McpServer) {\n server.registerTool(\n 'whoami',\n {\n title: 'Who Am I',\n description:\n 'Verify your API token and see your identity. ' +\n 'Returns user ID, email, and project ID (if token is project-scoped). ' +\n 'Use this to confirm your token works and discover your project ID.',\n inputSchema: {},\n outputSchema: WhoamiOutputShape,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async () => {\n try {\n const { whoami } = await import('@walkeros/cli');\n return apiResult(await whoami());\n } catch (error) {\n return apiError(error);\n }\n },\n );\n}\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { apiResult, apiError } from './helpers.js';\nimport {\n ListProjectsOutputShape,\n ProjectOutputShape,\n DeleteOutputShape,\n} from '../schemas/output.js';\n\nexport function registerProjectTools(server: McpServer) {\n server.registerTool(\n 'list-projects',\n {\n title: 'List Projects',\n description:\n 'List all projects you have access to. Returns project IDs, names, and your role.',\n inputSchema: {},\n outputSchema: ListProjectsOutputShape,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async () => {\n try {\n const { listProjects } = await import('@walkeros/cli');\n return apiResult(await listProjects());\n } catch (error) {\n return apiError(error);\n }\n },\n );\n\n server.registerTool(\n 'get-project',\n {\n title: 'Get Project',\n description:\n 'Get details for a project. Uses WALKEROS_PROJECT_ID if projectId is omitted.',\n inputSchema: {\n projectId: z\n .string()\n .optional()\n .describe('Project ID (defaults to WALKEROS_PROJECT_ID)'),\n },\n outputSchema: ProjectOutputShape,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async ({ projectId }) => {\n try {\n const { getProject } = await import('@walkeros/cli');\n return apiResult(await getProject({ projectId }));\n } catch (error) {\n return apiError(error);\n }\n },\n );\n\n server.registerTool(\n 'create-project',\n {\n title: 'Create Project',\n description: 'Create a new project.',\n inputSchema: {\n name: z.string().min(1).max(255).describe('Project name'),\n },\n outputSchema: ProjectOutputShape,\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async ({ name }) => {\n try {\n const { createProject } = await import('@walkeros/cli');\n return apiResult(await createProject({ name }));\n } catch (error) {\n return apiError(error);\n }\n },\n );\n\n server.registerTool(\n 'update-project',\n {\n title: 'Update Project',\n description:\n 'Update a project name. Uses WALKEROS_PROJECT_ID if projectId is omitted.',\n inputSchema: {\n projectId: z\n .string()\n .optional()\n .describe('Project ID (defaults to WALKEROS_PROJECT_ID)'),\n name: z.string().min(1).max(255).describe('New project name'),\n },\n outputSchema: ProjectOutputShape,\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async ({ projectId, name }) => {\n try {\n const { updateProject } = await import('@walkeros/cli');\n return apiResult(await updateProject({ projectId, name }));\n } catch (error) {\n return apiError(error);\n }\n },\n );\n\n server.registerTool(\n 'delete-project',\n {\n title: 'Delete Project',\n description:\n 'Soft-delete a project and all its flows. ' +\n 'WARNING: This deletes the project and ALL associated flows and data. ' +\n 'Uses WALKEROS_PROJECT_ID if projectId is omitted.',\n inputSchema: {\n projectId: z\n .string()\n .optional()\n .describe('Project ID (defaults to WALKEROS_PROJECT_ID)'),\n },\n outputSchema: DeleteOutputShape,\n annotations: {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async ({ projectId }) => {\n try {\n const { deleteProject } = await import('@walkeros/cli');\n return apiResult(await deleteProject({ projectId }));\n } catch (error) {\n return apiError(error);\n }\n },\n );\n}\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { apiResult, apiError } from './helpers.js';\nimport {\n ListFlowsOutputShape,\n FlowOutputShape,\n DeleteOutputShape,\n} from '../schemas/output.js';\n\nexport function registerFlowTools(server: McpServer) {\n server.registerTool(\n 'list-flows',\n {\n title: 'List Flows',\n description: 'List all flow configurations in a project.',\n inputSchema: {\n projectId: z\n .string()\n .optional()\n .describe('Project ID (defaults to WALKEROS_PROJECT_ID)'),\n sort: z\n .enum(['name', 'updated_at', 'created_at'])\n .optional()\n .describe('Sort field (default: updated_at)'),\n order: z\n .enum(['asc', 'desc'])\n .optional()\n .describe('Sort order (default: desc)'),\n includeDeleted: z\n .boolean()\n .optional()\n .describe('Include soft-deleted flows (default: false)'),\n },\n outputSchema: ListFlowsOutputShape,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async ({ projectId, sort, order, includeDeleted }) => {\n try {\n const { listFlows } = await import('@walkeros/cli');\n return apiResult(\n await listFlows({ projectId, sort, order, includeDeleted }),\n );\n } catch (error) {\n return apiError(error);\n }\n },\n );\n\n server.registerTool(\n 'get-flow',\n {\n title: 'Get Flow',\n description:\n 'Get a flow configuration with its full content (Flow.Setup JSON).',\n inputSchema: {\n flowId: z.string().describe('Flow ID (cfg_...)'),\n projectId: z\n .string()\n .optional()\n .describe('Project ID (defaults to WALKEROS_PROJECT_ID)'),\n },\n outputSchema: FlowOutputShape,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async ({ flowId, projectId }) => {\n try {\n const { getFlow } = await import('@walkeros/cli');\n return apiResult(await getFlow({ flowId, projectId }));\n } catch (error) {\n return apiError(error);\n }\n },\n );\n\n server.registerTool(\n 'create-flow',\n {\n title: 'Create Flow',\n description: 'Create a new flow configuration in a project.',\n inputSchema: {\n name: z.string().min(1).max(255).describe('Flow name'),\n content: z\n .record(z.string(), z.unknown())\n .describe('Flow.Setup JSON content (must have version: 1)'),\n projectId: z\n .string()\n .optional()\n .describe('Project ID (defaults to WALKEROS_PROJECT_ID)'),\n },\n outputSchema: FlowOutputShape,\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async ({ name, content, projectId }) => {\n try {\n const { createFlow } = await import('@walkeros/cli');\n return apiResult(await createFlow({ name, content, projectId }));\n } catch (error) {\n return apiError(error);\n }\n },\n );\n\n server.registerTool(\n 'update-flow',\n {\n title: 'Update Flow',\n description: 'Update a flow configuration name and/or content.',\n inputSchema: {\n flowId: z.string().describe('Flow ID (cfg_...)'),\n name: z.string().min(1).max(255).optional().describe('New flow name'),\n content: z\n .record(z.string(), z.unknown())\n .optional()\n .describe('New Flow.Setup JSON content'),\n projectId: z\n .string()\n .optional()\n .describe('Project ID (defaults to WALKEROS_PROJECT_ID)'),\n },\n outputSchema: FlowOutputShape,\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async ({ flowId, name, content, projectId }) => {\n try {\n const { updateFlow } = await import('@walkeros/cli');\n return apiResult(\n await updateFlow({ flowId, name, content, projectId }),\n );\n } catch (error) {\n return apiError(error);\n }\n },\n );\n\n server.registerTool(\n 'delete-flow',\n {\n title: 'Delete Flow',\n description:\n 'Soft-delete a flow configuration. ' +\n 'WARNING: This removes the flow configuration. Can be restored later. ' +\n 'Requires flowId.',\n inputSchema: {\n flowId: z.string().describe('Flow ID (cfg_...)'),\n projectId: z\n .string()\n .optional()\n .describe('Project ID (defaults to WALKEROS_PROJECT_ID)'),\n },\n outputSchema: DeleteOutputShape,\n annotations: {\n readOnlyHint: false,\n destructiveHint: true,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async ({ flowId, projectId }) => {\n try {\n const { deleteFlow } = await import('@walkeros/cli');\n return apiResult(await deleteFlow({ flowId, projectId }));\n } catch (error) {\n return apiError(error);\n }\n },\n );\n\n server.registerTool(\n 'duplicate-flow',\n {\n title: 'Duplicate Flow',\n description: 'Create a copy of an existing flow configuration.',\n inputSchema: {\n flowId: z.string().describe('Flow ID to duplicate (cfg_...)'),\n name: z\n .string()\n .optional()\n .describe('Name for the copy (defaults to \"Copy of ...\")'),\n projectId: z\n .string()\n .optional()\n .describe('Project ID (defaults to WALKEROS_PROJECT_ID)'),\n },\n outputSchema: FlowOutputShape,\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async ({ flowId, name, projectId }) => {\n try {\n const { duplicateFlow } = await import('@walkeros/cli');\n return apiResult(await duplicateFlow({ flowId, name, projectId }));\n } catch (error) {\n return apiError(error);\n }\n },\n );\n}\n","import { z } from 'zod';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { fetchPackageSchema } from '@walkeros/core';\nimport { PackageSchemaOutputShape } from '../schemas/output.js';\n\nexport function registerGetPackageSchemaTool(server: McpServer) {\n server.registerTool(\n 'get-package-schema',\n {\n title: 'Get Package Schema',\n description:\n 'Fetch walkerOS package schemas and examples from npm via jsdelivr CDN. ' +\n 'Returns JSON Schemas for settings and mapping configuration, plus examples. ' +\n 'Use this to understand how to configure a destination, source, or transformer ' +\n 'when building a flow.json.',\n inputSchema: {\n package: z\n .string()\n .min(1)\n .describe(\n 'Exact npm package name (e.g., @walkeros/web-destination-snowplow)',\n ),\n version: z\n .string()\n .optional()\n .describe('Package version (default: latest)'),\n },\n outputSchema: PackageSchemaOutputShape,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async ({ package: packageName, version }) => {\n try {\n const info = await fetchPackageSchema(packageName, { version });\n\n const result = {\n package: info.packageName,\n version: info.version,\n type: info.type,\n platform: info.platform,\n schemas: info.schemas,\n examples: info.examples,\n };\n\n return {\n content: [\n { type: 'text' as const, text: JSON.stringify(result, null, 2) },\n ],\n structuredContent: result as unknown as Record<string, unknown>,\n };\n } catch (error) {\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : 'Unknown error',\n }),\n },\n ],\n isError: true,\n };\n }\n },\n );\n}\n","import { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { fetchPackageSchema } from '@walkeros/core';\n\nconst KNOWN_PACKAGES = [\n '@walkeros/web-destination-google-ga4',\n '@walkeros/web-destination-meta-pixel',\n '@walkeros/web-destination-plausible',\n '@walkeros/web-destination-snowplow',\n '@walkeros/web-destination-piwikpro',\n '@walkeros/web-destination-etag',\n '@walkeros/web-destination-bigquery',\n '@walkeros/web-source-walker',\n '@walkeros/web-source-datalayer',\n];\n\nexport function registerPackageSchemaResources(server: McpServer) {\n const template = new ResourceTemplate('walkeros://schema/{packageName}', {\n list: async () => ({\n resources: KNOWN_PACKAGES.map((pkg) => ({\n uri: `walkeros://schema/${encodeURIComponent(pkg)}`,\n name: pkg,\n description: `Schema and examples for ${pkg}`,\n mimeType: 'application/json' as const,\n })),\n }),\n });\n\n server.registerResource(\n 'package-schema',\n template,\n {\n title: 'walkerOS Package Schema',\n description:\n 'JSON Schema and configuration examples for walkerOS packages',\n mimeType: 'application/json',\n },\n async (uri, { packageName }) => {\n const info = await fetchPackageSchema(\n decodeURIComponent(packageName as string),\n );\n return {\n contents: [\n {\n uri: uri.toString(),\n mimeType: 'application/json' as const,\n text: JSON.stringify(info, null, 2),\n },\n ],\n };\n },\n );\n}\n","import { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n\nexport function registerFlowResources(server: McpServer) {\n const template = new ResourceTemplate('walkeros://flow/{flowId}', {\n list: async () => {\n try {\n const { listFlows } = await import('@walkeros/cli');\n const { flows } = await listFlows({});\n return {\n resources: flows.map((f: { id: string; name: string }) => ({\n uri: `walkeros://flow/${f.id}`,\n name: f.name,\n mimeType: 'application/json' as const,\n })),\n };\n } catch {\n return { resources: [] };\n }\n },\n });\n\n server.registerResource(\n 'flow-config',\n template,\n {\n title: 'walkerOS Flow Configuration',\n description: 'Flow configurations from your walkerOS project',\n mimeType: 'application/json',\n },\n async (uri, { flowId }) => {\n const { getFlow } = await import('@walkeros/cli');\n const flow = await getFlow({ flowId: flowId as string });\n return {\n contents: [\n {\n uri: uri.toString(),\n mimeType: 'application/json' as const,\n text: JSON.stringify(flow, null, 2),\n },\n ],\n };\n },\n );\n}\n"],"mappings":"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","names":["z","server","z","result","schemas","server","schemas","schemas","server","schemas","schemas","server","schemas","server","z","server","z","projectId","z","server","z","projectId","flowId","z","server","z","server","ResourceTemplate","server","flowId"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@walkeros/mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0-next-1771257332985",
|
|
4
4
|
"description": "MCP server for walkerOS - validate, bundle, and simulate analytics events locally, plus manage projects and flows via the walkerOS API",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -24,18 +24,22 @@
|
|
|
24
24
|
"dev": "jest --watchAll --colors",
|
|
25
25
|
"start": "node dist/index.js",
|
|
26
26
|
"test": "jest",
|
|
27
|
-
"
|
|
27
|
+
"typecheck": "tsc --noEmit",
|
|
28
|
+
"lint": "eslint \"**/*.ts*\"",
|
|
28
29
|
"clean": "rm -rf .turbo && rm -rf dist && rm -rf coverage",
|
|
29
30
|
"prepublishOnly": "npm run build",
|
|
30
31
|
"update": "npx npm-check-updates -u && npm update"
|
|
31
32
|
},
|
|
32
33
|
"dependencies": {
|
|
33
34
|
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
34
|
-
"@walkeros/cli": "
|
|
35
|
+
"@walkeros/cli": "1.4.0-next-1771257332985"
|
|
36
|
+
},
|
|
37
|
+
"peerDependencies": {
|
|
38
|
+
"zod": "^4.0"
|
|
35
39
|
},
|
|
36
40
|
"devDependencies": {
|
|
37
41
|
"@types/node": "^20.0.0",
|
|
38
|
-
"@walkeros/config": "
|
|
42
|
+
"@walkeros/config": "1.1.0-next-1771257332985"
|
|
39
43
|
},
|
|
40
44
|
"repository": {
|
|
41
45
|
"url": "git+https://github.com/elbwalker/walkerOS.git",
|
|
@@ -50,7 +54,7 @@
|
|
|
50
54
|
"node": ">=18.0.0"
|
|
51
55
|
},
|
|
52
56
|
"keywords": [
|
|
53
|
-
"
|
|
57
|
+
"walkerOS",
|
|
54
58
|
"mcp",
|
|
55
59
|
"model-context-protocol",
|
|
56
60
|
"analytics",
|