@walkeros/mcp 0.3.0 → 0.4.0-next-1771252576264

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 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` (required): Path to the flow configuration file
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. Creates a version snapshot automatically.
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: schemas.BundleInputShape,
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
- const result = await whoami();
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 z2 } from "zod";
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: z2.string().optional().describe("Project ID (defaults to WALKEROS_PROJECT_ID)")
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: z2.string().min(1).max(255).describe("Project 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: z2.string().optional().describe("Project ID (defaults to WALKEROS_PROJECT_ID)"),
480
- name: z2.string().min(1).max(255).describe("New project 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: z2.string().optional().describe("Project ID (defaults to WALKEROS_PROJECT_ID)")
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 z3 } from "zod";
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: z3.string().optional().describe("Project ID (defaults to WALKEROS_PROJECT_ID)"),
552
- sort: z3.enum(["name", "updated_at", "created_at"]).optional().describe("Sort field (default: updated_at)"),
553
- order: z3.enum(["asc", "desc"]).optional().describe("Sort order (default: desc)"),
554
- includeDeleted: z3.boolean().optional().describe("Include soft-deleted flows (default: false)")
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 apiResult2(
573
+ return apiResult(
567
574
  await listFlows({ projectId: projectId2, sort, order, includeDeleted })
568
575
  );
569
576
  } catch (error) {
570
- return apiError2(error);
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: z3.string().describe("Flow ID (cfg_...)"),
581
- projectId: z3.string().optional().describe("Project ID (defaults to WALKEROS_PROJECT_ID)")
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 apiResult2(await getFlow({ flowId: flowId2, projectId: projectId2 }));
601
+ return apiResult(await getFlow({ flowId: flowId2, projectId: projectId2 }));
594
602
  } catch (error) {
595
- return apiError2(error);
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: z3.string().min(1).max(255).describe("Flow name"),
606
- content: z3.record(z3.string(), z3.unknown()).describe("Flow.Setup JSON content (must have version: 1)"),
607
- projectId: z3.string().optional().describe("Project ID (defaults to WALKEROS_PROJECT_ID)")
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 apiResult2(await createFlow({ name, content, projectId: projectId2 }));
628
+ return apiResult(await createFlow({ name, content, projectId: projectId2 }));
620
629
  } catch (error) {
621
- return apiError2(error);
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. Creates a version snapshot automatically.",
638
+ description: "Update a flow configuration name and/or content.",
630
639
  inputSchema: {
631
- flowId: z3.string().describe("Flow ID (cfg_...)"),
632
- name: z3.string().min(1).max(255).optional().describe("New flow name"),
633
- content: z3.record(z3.string(), z3.unknown()).optional().describe("New Flow.Setup JSON content"),
634
- projectId: z3.string().optional().describe("Project ID (defaults to WALKEROS_PROJECT_ID)")
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 apiResult2(
656
+ return apiResult(
647
657
  await updateFlow({ flowId: flowId2, name, content, projectId: projectId2 })
648
658
  );
649
659
  } catch (error) {
650
- return apiError2(error);
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: z3.string().describe("Flow ID (cfg_...)"),
661
- projectId: z3.string().optional().describe("Project ID (defaults to WALKEROS_PROJECT_ID)")
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 apiResult2(await deleteFlow({ flowId: flowId2, projectId: projectId2 }));
684
+ return apiResult(await deleteFlow({ flowId: flowId2, projectId: projectId2 }));
674
685
  } catch (error) {
675
- return apiError2(error);
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: z3.string().describe("Flow ID to duplicate (cfg_...)"),
686
- name: z3.string().optional().describe('Name for the copy (defaults to "Copy of ...")'),
687
- projectId: z3.string().optional().describe("Project ID (defaults to WALKEROS_PROJECT_ID)")
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 apiResult2(await duplicateFlow({ flowId: flowId2, name, projectId: projectId2 }));
711
+ return apiResult(await duplicateFlow({ flowId: flowId2, name, projectId: projectId2 }));
700
712
  } catch (error) {
701
- return apiError2(error);
713
+ return apiError(error);
702
714
  }
703
715
  }
704
716
  );
705
717
  }
706
718
 
707
- // src/tools/bundle-remote.ts
708
- import { z as z4 } from "zod";
709
- import { apiRequest } from "@walkeros/cli";
710
- function registerBundleRemoteTool(server2) {
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
- "bundle-remote",
747
+ "get-package-schema",
713
748
  {
714
- title: "Bundle Remote",
715
- description: "Bundle a flow configuration into deployable JavaScript using the walkerOS cloud service. Sends config JSON and receives a compiled .mjs bundle. No local build tools needed.",
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
- content: z4.record(z4.string(), z4.unknown()).describe("Flow.Setup JSON content (must have version: 1)")
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 ({ content }) => {
765
+ async ({ package: packageName, version }) => {
727
766
  try {
728
- const response = await apiRequest("/api/bundle", {
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
- success: true,
737
- bundle: js,
738
- size: js.length
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.3.0"
895
+ version: "0.4.0-next-1771252576264"
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
- registerBundleRemoteTool(server);
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":";;;AAAA,SAAS,iBAAiB;AAC1B,SAAS,4BAA4B;;;ACDrC,SAAS,eAAe;;;ACAxB,SAAS,SAAS;AAGlB,IAAM,YAAY,EAAE,OAAO,EAAE,SAAS,oBAAoB;AAC1D,IAAM,YAAY,EAAE,OAAO,EAAE,SAAS,uBAAuB;AAC7D,IAAM,SAAS,EAAE,OAAO,EAAE,SAAS,mBAAmB;AAG/C,IAAM,mBAAmB;AAAA,EAC9B,OAAO,EAAE,OAAO,EAAE,SAAS,eAAe;AAC5C;AAGO,IAAM,sBAAsB;AAAA,EACjC,OAAO,EAAE,QAAQ,EAAE,SAAS,2BAA2B;AAAA,EACvD,MAAM,EAAE,KAAK,CAAC,SAAS,QAAQ,SAAS,CAAC,EAAE,SAAS,oBAAoB;AAAA,EACxE,QAAQ,EACL;AAAA,IACC,EAAE,OAAO;AAAA,MACP,MAAM,EAAE,OAAO;AAAA,MACf,SAAS,EAAE,OAAO;AAAA,MAClB,OAAO,EAAE,QAAQ,EAAE,SAAS;AAAA,MAC5B,MAAM,EAAE,OAAO,EAAE,SAAS;AAAA,IAC5B,CAAC;AAAA,EACH,EACC,SAAS,mBAAmB;AAAA,EAC/B,UAAU,EACP;AAAA,IACC,EAAE,OAAO;AAAA,MACP,MAAM,EAAE,OAAO;AAAA,MACf,SAAS,EAAE,OAAO;AAAA,MAClB,YAAY,EAAE,OAAO,EAAE,SAAS;AAAA,IAClC,CAAC;AAAA,EACH,EACC,SAAS,qBAAqB;AAAA,EACjC,SAAS,EACN,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,EAC9B,SAAS,+BAA+B;AAC7C;AAEO,IAAM,oBAAoB;AAAA,EAC/B,SAAS,EAAE,QAAQ,EAAE,SAAS,4BAA4B;AAAA,EAC1D,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,4BAA4B;AAAA,EACtE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,4BAA4B;AAAA,EACtE,UAAU,EACP;AAAA,IACC,EAAE,OAAO;AAAA,MACP,MAAM,EAAE,OAAO;AAAA,MACf,MAAM,EAAE,OAAO;AAAA,IACjB,CAAC;AAAA,EACH,EACC,SAAS,EACT,SAAS,4BAA4B;AAAA,EACxC,sBAAsB,EACnB,QAAQ,EACR,SAAS,EACT,SAAS,oCAAoC;AAAA,EAChD,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,gBAAgB;AAC1D;AAEO,IAAM,sBAAsB;AAAA,EACjC,SAAS,EAAE,QAAQ,EAAE,SAAS,8BAA8B;AAAA,EAC5D,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,oCAAoC;AAAA,EAC1E,WAAW,EACR,QAAQ,EACR,SAAS,EACT,SAAS,kCAAkC;AAAA,EAC9C,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,gCAAgC;AAAA,EAC3E,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,6BAA6B;AAAA,EAC5E,OAAO,EACJ,OAAO,EAAE,OAAO,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,EACvC,SAAS,EACT,SAAS,gCAAgC;AAAA,EAC5C,UAAU,EACP,OAAO,EACP,SAAS,EACT,SAAS,qCAAqC;AACnD;AAEO,IAAM,kBAAkB;AAAA,EAC7B,SAAS,EAAE,QAAQ,EAAE,SAAS,wBAAwB;AAAA,EACtD,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,gCAAgC;AAAA,EAC3E,UAAU,EAAE,OAAO,EAAE,SAAS,+BAA+B;AAAA,EAC7D,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,8BAA8B;AACtE;AAGO,IAAM,oBAAoB;AAAA,EAC/B,QAAQ,EAAE,OAAO,EAAE,SAAS,SAAS;AAAA,EACrC,OAAO,EAAE,OAAO,EAAE,SAAS,oBAAoB;AAAA,EAC/C,WAAW,EACR,OAAO,EACP,SAAS,EACT,SAAS,uCAAuC;AACrD;AAGA,IAAM,gBAAgB;AAAA,EACpB,IAAI;AAAA,EACJ,MAAM,EAAE,OAAO,EAAE,SAAS,cAAc;AAAA,EACxC,MAAM,EAAE,KAAK,CAAC,SAAS,QAAQ,CAAC,EAAE,SAAS,2BAA2B;AAAA,EACtE,WAAW;AAAA,EACX,WAAW;AACb;AAEO,IAAM,qBAAqB,EAAE,GAAG,cAAc;AAE9C,IAAM,0BAA0B;AAAA,EACrC,UAAU,EAAE,MAAM,EAAE,OAAO,aAAa,CAAC,EAAE,SAAS,kBAAkB;AAAA,EACtE,OAAO,EAAE,OAAO,EAAE,SAAS,0BAA0B;AACvD;AAGA,IAAM,aAAa;AAAA,EACjB,IAAI;AAAA,EACJ,MAAM,EAAE,OAAO,EAAE,SAAS,WAAW;AAAA,EACrC,SAAS,EACN,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,EAC9B,SAAS,yBAAyB;AAAA,EACrC,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW,EACR,OAAO,EACP,SAAS,EACT,SAAS,EACT,SAAS,oCAAoC;AAClD;AAEO,IAAM,kBAAkB,EAAE,GAAG,WAAW;AAE/C,IAAM,oBAAoB;AAAA,EACxB,IAAI;AAAA,EACJ,MAAM,EAAE,OAAO,EAAE,SAAS,WAAW;AAAA,EACrC,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW,EACR,OAAO,EACP,SAAS,EACT,SAAS,oCAAoC;AAClD;AAEO,IAAM,uBAAuB;AAAA,EAClC,OAAO,EACJ,MAAM,EAAE,OAAO,iBAAiB,CAAC,EACjC,SAAS,wBAAwB;AAAA,EACpC,OAAO,EAAE,OAAO,EAAE,SAAS,uBAAuB;AACpD;AAGO,IAAM,oBAAoB;AAAA,EAC/B,SAAS,EAAE,QAAQ,IAAI,EAAE,SAAS,oBAAoB;AACxD;AAGO,IAAM,0BAA0B;AAAA,EACrC,SAAS,EAAE,QAAQ,EAAE,SAAS,4BAA4B;AAAA,EAC1D,QAAQ,EAAE,OAAO,EAAE,SAAS,4BAA4B;AAAA,EACxD,MAAM,EAAE,OAAO,EAAE,SAAS,sBAAsB;AAAA,EAChD,OAAO,EACJ,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,EAC9B,SAAS,EACT,SAAS,+BAA+B;AAC7C;;;AD9JO,SAAS,mBAAmBA,SAAmB;AACpD,EAAAA,QAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aACE;AAAA,MAGF,aAAa,QAAQ;AAAA,MACrB,cAAc;AAAA,MACd,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,OAAO,EAAE,YAAY,MAAM,OAAO,OAAO,MAAM;AAC7C,UAAI;AAEF,cAAM,EAAE,OAAO,IAAI,MAAM,OAAO,eAAe;AAE/C,cAAM,SAAS,MAAM,OAAO,YAAY;AAAA,UACtC,UAAU;AAAA,UACV,OAAO,SAAS;AAAA,UAChB,gBAAgB,SAAS,EAAE,OAAO,IAAI;AAAA,QACxC,CAAC;AAED,cAAM,UAAW,UAAiD;AAAA,UAChE,SAAS;AAAA,UACT,SAAS;AAAA,QACX;AAEA,eAAO;AAAA,UACL,SAAS;AAAA,YACP;AAAA,cACE,MAAM;AAAA,cACN,MAAM,KAAK,UAAU,SAAS,MAAM,CAAC;AAAA,YACvC;AAAA,UACF;AAAA,UACA,mBAAmB;AAAA,QACrB;AAAA,MACF,SAAS,OAAO;AACd,eAAO;AAAA,UACL,SAAS;AAAA,YACP;AAAA,cACE,MAAM;AAAA,cACN,MAAM,KAAK,UAAU;AAAA,gBACnB,SAAS;AAAA,gBACT,OAAO,iBAAiB,QAAQ,MAAM,UAAU;AAAA,cAClD,CAAC;AAAA,YACH;AAAA,UACF;AAAA,UACA,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AE/DA,SAAS,WAAAC,gBAAe;AAIjB,SAAS,qBAAqBC,SAAmB;AACtD,EAAAA,QAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aACE;AAAA,MAGF,aAAaC,SAAQ;AAAA,MACrB,cAAc;AAAA,MACd,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,OAAO,EAAE,YAAY,OAAO,MAAM,SAAS,MAAM;AAC/C,UAAI;AACF,cAAM,EAAE,SAAS,IAAI,MAAM,OAAO,eAAe;AAGjD,YAAI,cAAuB;AAC3B,YAAI,MAAM,WAAW,GAAG,KAAK,MAAM,WAAW,GAAG,GAAG;AAClD,cAAI;AACF,0BAAc,KAAK,MAAM,KAAK;AAAA,UAChC,QAAQ;AAAA,UAER;AAAA,QACF;AAEA,cAAM,SAAS,MAAM,SAAS,YAAY,aAAa;AAAA,UACrD,MAAM;AAAA,UACN;AAAA,UACA;AAAA,QACF,CAAC;AAED,eAAO;AAAA,UACL,SAAS;AAAA,YACP;AAAA,cACE,MAAM;AAAA,cACN,MAAM,KAAK,UAAU,QAAQ,MAAM,CAAC;AAAA,YACtC;AAAA,UACF;AAAA,UACA,mBAAmB;AAAA,QACrB;AAAA,MACF,SAAS,OAAO;AACd,eAAO;AAAA,UACL,SAAS;AAAA,YACP;AAAA,cACE,MAAM;AAAA,cACN,MAAM,KAAK,UAAU;AAAA,gBACnB,SAAS;AAAA,gBACT,OAAO,iBAAiB,QAAQ,MAAM,UAAU;AAAA,cAClD,CAAC;AAAA,YACH;AAAA,UACF;AAAA,UACA,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACnEA,SAAS,WAAAC,gBAAe;AAIjB,SAAS,iBAAiBC,SAAmB;AAClD,EAAAA,QAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aACE;AAAA,MAGF,aAAaC,SAAQ;AAAA,MACrB,cAAc;AAAA,MACd,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,OAAO,EAAE,YAAY,OAAO,MAAM,SAAS,MAAM;AAC/C,UAAI;AACF,cAAM,EAAE,KAAK,IAAI,MAAM,OAAO,eAAe;AAG7C,YAAI,cAAuB;AAC3B,YAAI,MAAM,WAAW,GAAG,KAAK,MAAM,WAAW,GAAG,GAAG;AAClD,cAAI;AACF,0BAAc,KAAK,MAAM,KAAK;AAAA,UAChC,QAAQ;AAAA,UAER;AAAA,QACF;AAEA,cAAM,SAAS,MAAM,KAAK,YAAY,aAAa;AAAA,UACjD,MAAM;AAAA,UACN;AAAA,UACA;AAAA,QACF,CAAC;AAED,eAAO;AAAA,UACL,SAAS;AAAA,YACP;AAAA,cACE,MAAM;AAAA,cACN,MAAM,KAAK,UAAU,QAAQ,MAAM,CAAC;AAAA,YACtC;AAAA,UACF;AAAA,UACA,mBAAmB;AAAA,QACrB;AAAA,MACF,SAAS,OAAO;AACd,eAAO;AAAA,UACL,SAAS;AAAA,YACP;AAAA,cACE,MAAM;AAAA,cACN,MAAM,KAAK,UAAU;AAAA,gBACnB,SAAS;AAAA,gBACT,OAAO,iBAAiB,QAAQ,MAAM,UAAU;AAAA,cAClD,CAAC;AAAA,YACH;AAAA,UACF;AAAA,UACA,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ACnEA,SAAS,WAAAC,gBAAe;AAIjB,SAAS,qBAAqBC,SAAmB;AACtD,EAAAA,QAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aACE;AAAA,MAGF,aAAaC,SAAQ;AAAA,MACrB,cAAc;AAAA,MACd,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,OAAO,EAAE,MAAM,OAAO,KAAK,MAAM;AAC/B,UAAI;AAEF,cAAM,EAAE,SAAS,IAAI,MAAM,OAAO,eAAe;AAGjD,YAAI,cAAuB;AAC3B,YAAI,MAAM,WAAW,GAAG,KAAK,MAAM,WAAW,GAAG,GAAG;AAClD,cAAI;AACF,0BAAc,KAAK,MAAM,KAAK;AAAA,UAChC,QAAQ;AAAA,UAER;AAAA,QACF;AAEA,cAAM,SAAS,MAAM,SAAS,MAAM,aAAa,EAAE,KAAK,CAAC;AAEzD,eAAO;AAAA,UACL,SAAS;AAAA,YACP;AAAA,cACE,MAAM;AAAA,cACN,MAAM,KAAK,UAAU,QAAQ,MAAM,CAAC;AAAA,YACtC;AAAA,UACF;AAAA,UACA,mBAAmB;AAAA,QACrB;AAAA,MACF,SAAS,OAAO;AACd,eAAO;AAAA,UACL,SAAS;AAAA,YACP;AAAA,cACE,MAAM;AAAA,cACN,MAAM,KAAK,UAAU;AAAA,gBACnB,OAAO;AAAA,gBACP,OAAO,iBAAiB,QAAQ,MAAM,UAAU;AAAA,cAClD,CAAC;AAAA,YACH;AAAA,UACF;AAAA,UACA,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AC9DO,SAAS,kBAAkBC,SAAmB;AACnD,EAAAA,QAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aACE;AAAA,MAGF,aAAa,CAAC;AAAA,MACd,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,YAAY;AACV,UAAI;AACF,cAAM,EAAE,OAAO,IAAI,MAAM,OAAO,eAAe;AAC/C,cAAM,SAAS,MAAM,OAAO;AAC5B,eAAO;AAAA,UACL,SAAS;AAAA,YACP,EAAE,MAAM,QAAiB,MAAM,KAAK,UAAU,QAAQ,MAAM,CAAC,EAAE;AAAA,UACjE;AAAA,QACF;AAAA,MACF,SAAS,OAAO;AACd,eAAO;AAAA,UACL,SAAS;AAAA,YACP;AAAA,cACE,MAAM;AAAA,cACN,MAAM,KAAK,UAAU;AAAA,gBACnB,OAAO,iBAAiB,QAAQ,MAAM,UAAU;AAAA,cAClD,CAAC;AAAA,YACH;AAAA,UACF;AAAA,UACA,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AC3CA,SAAS,KAAAC,UAAS;AAGlB,SAAS,UAAU,QAAiB;AAClC,SAAO;AAAA,IACL,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,KAAK,UAAU,QAAQ,MAAM,CAAC,EAAE,CAAC;AAAA,EAC5E;AACF;AAEA,SAAS,SAAS,OAAgB;AAChC,SAAO;AAAA,IACL,SAAS;AAAA,MACP;AAAA,QACE,MAAM;AAAA,QACN,MAAM,KAAK,UAAU;AAAA,UACnB,OAAO,iBAAiB,QAAQ,MAAM,UAAU;AAAA,QAClD,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,SAAS;AAAA,EACX;AACF;AAEO,SAAS,qBAAqBC,SAAmB;AACtD,EAAAA,QAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aACE;AAAA,MACF,aAAa,CAAC;AAAA,MACd,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,YAAY;AACV,UAAI;AACF,cAAM,EAAE,aAAa,IAAI,MAAM,OAAO,eAAe;AACrD,eAAO,UAAU,MAAM,aAAa,CAAC;AAAA,MACvC,SAAS,OAAO;AACd,eAAO,SAAS,KAAK;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AAEA,EAAAA,QAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aACE;AAAA,MACF,aAAa;AAAA,QACX,WAAWD,GACR,OAAO,EACP,SAAS,EACT,SAAS,8CAA8C;AAAA,MAC5D;AAAA,MACA,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,OAAO,EAAE,WAAAE,WAAU,MAAM;AACvB,UAAI;AACF,cAAM,EAAE,WAAW,IAAI,MAAM,OAAO,eAAe;AACnD,eAAO,UAAU,MAAM,WAAW,EAAE,WAAAA,WAAU,CAAC,CAAC;AAAA,MAClD,SAAS,OAAO;AACd,eAAO,SAAS,KAAK;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AAEA,EAAAD,QAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aAAa;AAAA,MACb,aAAa;AAAA,QACX,MAAMD,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS,cAAc;AAAA,MAC1D;AAAA,MACA,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,OAAO,EAAE,KAAK,MAAM;AAClB,UAAI;AACF,cAAM,EAAE,cAAc,IAAI,MAAM,OAAO,eAAe;AACtD,eAAO,UAAU,MAAM,cAAc,EAAE,KAAK,CAAC,CAAC;AAAA,MAChD,SAAS,OAAO;AACd,eAAO,SAAS,KAAK;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AAEA,EAAAC,QAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aACE;AAAA,MACF,aAAa;AAAA,QACX,WAAWD,GACR,OAAO,EACP,SAAS,EACT,SAAS,8CAA8C;AAAA,QAC1D,MAAMA,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS,kBAAkB;AAAA,MAC9D;AAAA,MACA,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,OAAO,EAAE,WAAAE,YAAW,KAAK,MAAM;AAC7B,UAAI;AACF,cAAM,EAAE,cAAc,IAAI,MAAM,OAAO,eAAe;AACtD,eAAO,UAAU,MAAM,cAAc,EAAE,WAAAA,YAAW,KAAK,CAAC,CAAC;AAAA,MAC3D,SAAS,OAAO;AACd,eAAO,SAAS,KAAK;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AAEA,EAAAD,QAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aACE;AAAA,MACF,aAAa;AAAA,QACX,WAAWD,GACR,OAAO,EACP,SAAS,EACT,SAAS,8CAA8C;AAAA,MAC5D;AAAA,MACA,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,OAAO,EAAE,WAAAE,WAAU,MAAM;AACvB,UAAI;AACF,cAAM,EAAE,cAAc,IAAI,MAAM,OAAO,eAAe;AACtD,eAAO,UAAU,MAAM,cAAc,EAAE,WAAAA,WAAU,CAAC,CAAC;AAAA,MACrD,SAAS,OAAO;AACd,eAAO,SAAS,KAAK;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AACF;;;AChKA,SAAS,KAAAC,UAAS;AAGlB,SAASC,WAAU,QAAiB;AAClC,SAAO;AAAA,IACL,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,KAAK,UAAU,QAAQ,MAAM,CAAC,EAAE,CAAC;AAAA,EAC5E;AACF;AAEA,SAASC,UAAS,OAAgB;AAChC,SAAO;AAAA,IACL,SAAS;AAAA,MACP;AAAA,QACE,MAAM;AAAA,QACN,MAAM,KAAK,UAAU;AAAA,UACnB,OAAO,iBAAiB,QAAQ,MAAM,UAAU;AAAA,QAClD,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,SAAS;AAAA,EACX;AACF;AAEO,SAAS,kBAAkBC,SAAmB;AACnD,EAAAA,QAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aAAa;AAAA,MACb,aAAa;AAAA,QACX,WAAWH,GACR,OAAO,EACP,SAAS,EACT,SAAS,8CAA8C;AAAA,QAC1D,MAAMA,GACH,KAAK,CAAC,QAAQ,cAAc,YAAY,CAAC,EACzC,SAAS,EACT,SAAS,kCAAkC;AAAA,QAC9C,OAAOA,GACJ,KAAK,CAAC,OAAO,MAAM,CAAC,EACpB,SAAS,EACT,SAAS,4BAA4B;AAAA,QACxC,gBAAgBA,GACb,QAAQ,EACR,SAAS,EACT,SAAS,6CAA6C;AAAA,MAC3D;AAAA,MACA,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,OAAO,EAAE,WAAAI,YAAW,MAAM,OAAO,eAAe,MAAM;AACpD,UAAI;AACF,cAAM,EAAE,UAAU,IAAI,MAAM,OAAO,eAAe;AAClD,eAAOH;AAAA,UACL,MAAM,UAAU,EAAE,WAAAG,YAAW,MAAM,OAAO,eAAe,CAAC;AAAA,QAC5D;AAAA,MACF,SAAS,OAAO;AACd,eAAOF,UAAS,KAAK;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AAEA,EAAAC,QAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aACE;AAAA,MACF,aAAa;AAAA,QACX,QAAQH,GAAE,OAAO,EAAE,SAAS,mBAAmB;AAAA,QAC/C,WAAWA,GACR,OAAO,EACP,SAAS,EACT,SAAS,8CAA8C;AAAA,MAC5D;AAAA,MACA,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,OAAO,EAAE,QAAAK,SAAQ,WAAAD,WAAU,MAAM;AAC/B,UAAI;AACF,cAAM,EAAE,QAAQ,IAAI,MAAM,OAAO,eAAe;AAChD,eAAOH,WAAU,MAAM,QAAQ,EAAE,QAAAI,SAAQ,WAAAD,WAAU,CAAC,CAAC;AAAA,MACvD,SAAS,OAAO;AACd,eAAOF,UAAS,KAAK;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AAEA,EAAAC,QAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aAAa;AAAA,MACb,aAAa;AAAA,QACX,MAAMH,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS,WAAW;AAAA,QACrD,SAASA,GACN,OAAOA,GAAE,OAAO,GAAGA,GAAE,QAAQ,CAAC,EAC9B,SAAS,gDAAgD;AAAA,QAC5D,WAAWA,GACR,OAAO,EACP,SAAS,EACT,SAAS,8CAA8C;AAAA,MAC5D;AAAA,MACA,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,OAAO,EAAE,MAAM,SAAS,WAAAI,WAAU,MAAM;AACtC,UAAI;AACF,cAAM,EAAE,WAAW,IAAI,MAAM,OAAO,eAAe;AACnD,eAAOH,WAAU,MAAM,WAAW,EAAE,MAAM,SAAS,WAAAG,WAAU,CAAC,CAAC;AAAA,MACjE,SAAS,OAAO;AACd,eAAOF,UAAS,KAAK;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AAEA,EAAAC,QAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aACE;AAAA,MACF,aAAa;AAAA,QACX,QAAQH,GAAE,OAAO,EAAE,SAAS,mBAAmB;AAAA,QAC/C,MAAMA,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS,EAAE,SAAS,eAAe;AAAA,QACpE,SAASA,GACN,OAAOA,GAAE,OAAO,GAAGA,GAAE,QAAQ,CAAC,EAC9B,SAAS,EACT,SAAS,6BAA6B;AAAA,QACzC,WAAWA,GACR,OAAO,EACP,SAAS,EACT,SAAS,8CAA8C;AAAA,MAC5D;AAAA,MACA,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,OAAO,EAAE,QAAAK,SAAQ,MAAM,SAAS,WAAAD,WAAU,MAAM;AAC9C,UAAI;AACF,cAAM,EAAE,WAAW,IAAI,MAAM,OAAO,eAAe;AACnD,eAAOH;AAAA,UACL,MAAM,WAAW,EAAE,QAAAI,SAAQ,MAAM,SAAS,WAAAD,WAAU,CAAC;AAAA,QACvD;AAAA,MACF,SAAS,OAAO;AACd,eAAOF,UAAS,KAAK;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AAEA,EAAAC,QAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aAAa;AAAA,MACb,aAAa;AAAA,QACX,QAAQH,GAAE,OAAO,EAAE,SAAS,mBAAmB;AAAA,QAC/C,WAAWA,GACR,OAAO,EACP,SAAS,EACT,SAAS,8CAA8C;AAAA,MAC5D;AAAA,MACA,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,OAAO,EAAE,QAAAK,SAAQ,WAAAD,WAAU,MAAM;AAC/B,UAAI;AACF,cAAM,EAAE,WAAW,IAAI,MAAM,OAAO,eAAe;AACnD,eAAOH,WAAU,MAAM,WAAW,EAAE,QAAAI,SAAQ,WAAAD,WAAU,CAAC,CAAC;AAAA,MAC1D,SAAS,OAAO;AACd,eAAOF,UAAS,KAAK;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AAEA,EAAAC,QAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aAAa;AAAA,MACb,aAAa;AAAA,QACX,QAAQH,GAAE,OAAO,EAAE,SAAS,gCAAgC;AAAA,QAC5D,MAAMA,GACH,OAAO,EACP,SAAS,EACT,SAAS,+CAA+C;AAAA,QAC3D,WAAWA,GACR,OAAO,EACP,SAAS,EACT,SAAS,8CAA8C;AAAA,MAC5D;AAAA,MACA,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,OAAO,EAAE,QAAAK,SAAQ,MAAM,WAAAD,WAAU,MAAM;AACrC,UAAI;AACF,cAAM,EAAE,cAAc,IAAI,MAAM,OAAO,eAAe;AACtD,eAAOH,WAAU,MAAM,cAAc,EAAE,QAAAI,SAAQ,MAAM,WAAAD,WAAU,CAAC,CAAC;AAAA,MACnE,SAAS,OAAO;AACd,eAAOF,UAAS,KAAK;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AACF;;;AClOA,SAAS,KAAAI,UAAS;AAElB,SAAS,kBAAkB;AAEpB,SAAS,yBAAyBC,SAAmB;AAC1D,EAAAA,QAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aACE;AAAA,MAEF,aAAa;AAAA,QACX,SAASD,GACN,OAAOA,GAAE,OAAO,GAAGA,GAAE,QAAQ,CAAC,EAC9B,SAAS,gDAAgD;AAAA,MAC9D;AAAA,MACA,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,OAAO,EAAE,QAAQ,MAAM;AACrB,UAAI;AACF,cAAM,WAAY,MAAM,WAAW,eAAe;AAAA,UAChD,QAAQ;AAAA,UACR,MAAM,KAAK,UAAU,EAAE,MAAM,QAAQ,CAAC;AAAA,UACtC,gBAAgB;AAAA,QAClB,CAAC;AAED,cAAM,KAAK,MAAM,SAAS,KAAK;AAC/B,cAAM,cAAc,SAAS,QAAQ,IAAI,gBAAgB;AACzD,cAAM,SAAkC;AAAA,UACtC,SAAS;AAAA,UACT,QAAQ;AAAA,UACR,MAAM,GAAG;AAAA,QACX;AACA,YAAI,aAAa;AACf,cAAI;AACF,mBAAO,QAAQ,KAAK,MAAM,WAAW;AAAA,UACvC,QAAQ;AAAA,UAAC;AAAA,QACX;AAEA,eAAO;AAAA,UACL,SAAS;AAAA,YACP,EAAE,MAAM,QAAiB,MAAM,KAAK,UAAU,QAAQ,MAAM,CAAC,EAAE;AAAA,UACjE;AAAA,QACF;AAAA,MACF,SAAS,OAAO;AACd,eAAO;AAAA,UACL,SAAS;AAAA,YACP;AAAA,cACE,MAAM;AAAA,cACN,MAAM,KAAK,UAAU;AAAA,gBACnB,OAAO,iBAAiB,QAAQ,MAAM,UAAU;AAAA,cAClD,CAAC;AAAA,YACH;AAAA,UACF;AAAA,UACA,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;ATlDA,IAAM,SAAS,IAAI,UAAU;AAAA,EAC3B,MAAM;AAAA,EACN,SAAS;AACX,CAAC;AAGD,mBAAmB,MAAM;AACzB,qBAAqB,MAAM;AAC3B,iBAAiB,MAAM;AACvB,qBAAqB,MAAM;AAG3B,kBAAkB,MAAM;AACxB,qBAAqB,MAAM;AAC3B,kBAAkB,MAAM;AACxB,yBAAyB,MAAM;AAE/B,eAAe,OAAO;AACpB,QAAM,YAAY,IAAI,qBAAqB;AAC3C,QAAM,OAAO,QAAQ,SAAS;AAC9B,UAAQ,MAAM,sCAAsC;AACtD;AAEA,KAAK,EAAE,MAAM,CAAC,UAAU;AACtB,UAAQ,MAAM,+BAA+B,KAAK;AAClD,UAAQ,KAAK,CAAC;AAChB,CAAC;","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.0",
3
+ "version": "0.4.0-next-1771252576264",
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
- "lint": "tsc --noEmit && eslint \"**/*.ts*\"",
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": "^1.3.0"
35
+ "@walkeros/cli": "1.4.0-next-1771252576264"
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-1771252576264"
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
- "walkeros",
57
+ "walkerOS",
54
58
  "mcp",
55
59
  "model-context-protocol",
56
60
  "analytics",