@walkeros/cli 4.7.0-next-1790245733116 → 4.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/dev.d.ts CHANGED
@@ -56,6 +56,9 @@ type ValidationType = z.infer<typeof ValidationTypeSchema>;
56
56
  declare const ValidateOptionsSchema: z.ZodObject<{
57
57
  flow: z.ZodOptional<z.ZodString>;
58
58
  path: z.ZodOptional<z.ZodString>;
59
+ strict: z.ZodOptional<z.ZodBoolean>;
60
+ offline: z.ZodOptional<z.ZodBoolean>;
61
+ configDir: z.ZodOptional<z.ZodString>;
59
62
  }, z.core.$strip>;
60
63
  type ValidateOptions = z.infer<typeof ValidateOptionsSchema>;
61
64
  /**
@@ -75,6 +78,8 @@ declare const ValidateInputShape: {
75
78
  input: z.ZodString;
76
79
  flow: z.ZodOptional<z.ZodString>;
77
80
  path: z.ZodOptional<z.ZodString>;
81
+ strict: z.ZodOptional<z.ZodBoolean>;
82
+ offline: z.ZodOptional<z.ZodBoolean>;
78
83
  };
79
84
  /**
80
85
  * Validate input schema for MCP tools.
@@ -92,6 +97,8 @@ declare const ValidateInputSchema: z.ZodObject<{
92
97
  input: z.ZodString;
93
98
  flow: z.ZodOptional<z.ZodString>;
94
99
  path: z.ZodOptional<z.ZodString>;
100
+ strict: z.ZodOptional<z.ZodBoolean>;
101
+ offline: z.ZodOptional<z.ZodBoolean>;
95
102
  }, z.core.$strip>;
96
103
  type ValidateInput = z.infer<typeof ValidateInputSchema>;
97
104
 
package/dist/dev.js CHANGED
@@ -36,7 +36,16 @@ var ValidationTypeSchema = z2.enum(["contract", "event", "flow", "mapping"]).des
36
36
  var ValidateOptionsSchema = z2.object({
37
37
  flow: z2.string().optional().describe("Flow name for multi-flow configs"),
38
38
  path: z2.string().optional().describe(
39
- 'Entry path for package schema validation (e.g., "destinations.snowplow", "sources.browser")'
39
+ 'Entry path for package schema validation (e.g., "destinations.snowplow", "stores.cache"). Checks the entry in every flow that has it, or only in --flow.'
40
+ ),
41
+ strict: z2.boolean().optional().describe(
42
+ "Escalate: strict turns warnings and skips into failures (valid is false), contract disagreements error"
43
+ ),
44
+ offline: z2.boolean().optional().describe(
45
+ 'Do not fetch package schemas: step settings are not checked against them, and the result scope says so. Only with type "flow" and no path.'
46
+ ),
47
+ configDir: z2.string().optional().describe(
48
+ "Directory local `path` packages resolve against. Defaults to the input file's directory; set it when passing a parsed document."
40
49
  )
41
50
  });
42
51
  var ValidateInputShape = {
@@ -44,7 +53,13 @@ var ValidateInputShape = {
44
53
  input: z2.string().min(1).describe("JSON string, file path, or URL to validate"),
45
54
  flow: z2.string().optional().describe("Flow name for multi-flow configs"),
46
55
  path: z2.string().optional().describe(
47
- 'Entry path for package schema validation (e.g., "destinations.snowplow"). When provided, validates the entry against its package JSON Schema instead of using --type.'
56
+ 'Entry path for package schema validation (e.g., "destinations.snowplow"). Only with type "flow": validates the entry against its package JSON Schema in every flow that has it, or only in the given flow.'
57
+ ),
58
+ strict: z2.boolean().optional().describe(
59
+ "Escalate: strict turns warnings and skips into failures: valid is false (the CLI exits 2), and contract example disagreements become errors. Every check runs with or without it."
60
+ ),
61
+ offline: z2.boolean().optional().describe(
62
+ 'Do not fetch package schemas: step settings are not checked against them, and details.scope says so. Only with type "flow" and no path.'
48
63
  )
49
64
  };
50
65
  var ValidateInputSchema = z2.object(ValidateInputShape);
package/dist/dev.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/schemas/index.ts","../src/schemas/primitives.ts","../src/schemas/validate.ts","../src/schemas/bundle.ts","../src/schemas/simulate.ts","../src/schemas/push.ts"],"sourcesContent":["/**\n * CLI Schemas\n *\n * Zod schemas for CLI parameter validation.\n * Follows walkerOS patterns from @walkeros/core.\n */\n\nexport { PortSchema, FilePathSchema } from './primitives';\n\nexport {\n ValidationTypeSchema,\n ValidateOptionsSchema,\n ValidateInputShape,\n ValidateInputSchema,\n type ValidationType,\n type ValidateOptions,\n type ValidateInput,\n} from './validate';\n\nexport {\n BundleOptionsSchema,\n BundleInputShape,\n BundleInputSchema,\n type BundleOptions,\n type BundleInput,\n} from './bundle';\n\nexport {\n PlatformSchema,\n SimulateOptionsSchema,\n SimulateInputShape,\n SimulateInputSchema,\n type Platform,\n type SimulateOptions,\n type SimulateInput,\n} from './simulate';\n\nexport {\n PushOptionsSchema,\n PushInputShape,\n PushInputSchema,\n type PushOptions,\n type PushInput,\n} from './push';\n","/**\n * CLI Primitive Schemas\n *\n * Basic Zod schemas for CLI parameter validation.\n * Follows walkerOS patterns from @walkeros/core.\n */\n\nimport { z } from '@walkeros/core/dev';\n\n/**\n * Port number schema.\n *\n * @remarks\n * Validates HTTP server port number.\n * Must be integer between 1-65535.\n */\nexport const PortSchema = z\n .number()\n .int('Port must be an integer')\n .min(1, 'Port must be at least 1')\n .max(65535, 'Port must be at most 65535')\n .describe('HTTP server port number');\n\n/**\n * File path schema.\n *\n * @remarks\n * Basic string validation for file paths.\n * File existence is checked separately (Zod can't check filesystem).\n */\nexport const FilePathSchema = z\n .string()\n .min(1, 'File path cannot be empty')\n .describe('Path to configuration file');\n","/**\n * Validate Command Schemas\n *\n * Zod schemas for validate command parameter validation.\n */\n\nimport { z } from '@walkeros/core/dev';\n\n/**\n * Validation type schema.\n *\n * @remarks\n * Validates the type of validation to perform.\n * - `contract`: Validate a data contract\n * - `event`: Validate a walkerOS event object\n * - `flow`: Validate a flow configuration file\n * - `mapping`: Validate mapping rules\n */\nexport const ValidationTypeSchema = z\n .enum(['contract', 'event', 'flow', 'mapping'])\n .describe('Validation type: \"event\", \"flow\", \"mapping\", or \"contract\"');\n\nexport type ValidationType = z.infer<typeof ValidationTypeSchema>;\n\n/**\n * Validate options schema.\n *\n * @remarks\n * Options for the programmatic validate() API.\n */\nexport const ValidateOptionsSchema = z.object({\n flow: z.string().optional().describe('Flow name for multi-flow configs'),\n path: z\n .string()\n .optional()\n .describe(\n 'Entry path for package schema validation (e.g., \"destinations.snowplow\", \"sources.browser\")',\n ),\n});\n\nexport type ValidateOptions = z.infer<typeof ValidateOptionsSchema>;\n\n/**\n * Raw shape for MCP SDK compatibility (ZodRawShapeCompat).\n *\n * @remarks\n * MCP SDK's registerTool expects raw shapes (Record<string, ZodType>)\n * rather than ZodObject instances. Define shape first, then wrap.\n */\nexport const ValidateInputShape = {\n type: ValidationTypeSchema,\n input: z\n .string()\n .min(1)\n .describe('JSON string, file path, or URL to validate'),\n flow: z.string().optional().describe('Flow name for multi-flow configs'),\n path: z\n .string()\n .optional()\n .describe(\n 'Entry path for package schema validation (e.g., \"destinations.snowplow\"). When provided, validates the entry against its package JSON Schema instead of using --type.',\n ),\n};\n\n/**\n * Validate input schema for MCP tools.\n *\n * @remarks\n * Full input schema including type and input source.\n */\nexport const ValidateInputSchema = z.object(ValidateInputShape);\n\nexport type ValidateInput = z.infer<typeof ValidateInputSchema>;\n","/**\n * Bundle Command Schemas\n *\n * Zod schemas for bundle command parameter validation.\n */\n\nimport { z } from '@walkeros/core/dev';\nimport { FilePathSchema } from './primitives';\n\n/**\n * Bundle options schema.\n *\n * @remarks\n * Options for the programmatic bundle() API.\n */\nexport const BundleOptionsSchema = z.object({\n silent: z.boolean().optional().describe('Suppress all output'),\n verbose: z.boolean().optional().describe('Enable verbose logging'),\n stats: z\n .boolean()\n .optional()\n .default(true)\n .describe('Return bundle statistics'),\n cache: z\n .boolean()\n .optional()\n .default(true)\n .describe('Enable package caching'),\n flowName: z.string().optional().describe('Flow name for multi-flow configs'),\n});\n\nexport type BundleOptions = z.infer<typeof BundleOptionsSchema>;\n\n/**\n * Raw shape for MCP SDK compatibility (ZodRawShapeCompat).\n *\n * @remarks\n * MCP SDK's registerTool expects raw shapes (Record<string, ZodType>)\n * rather than ZodObject instances. Define shape first, then wrap.\n */\nexport const BundleInputShape = {\n configPath: FilePathSchema.describe(\n 'Path to flow configuration file (JSON or JavaScript), URL, or inline JSON string',\n ),\n flow: z.string().optional().describe('Flow name for multi-flow configs'),\n stats: z\n .boolean()\n .optional()\n .default(true)\n .describe('Return bundle statistics'),\n output: z\n .string()\n .optional()\n .describe('Output file path (defaults to config-defined)'),\n};\n\n/**\n * Bundle input schema for MCP tools.\n *\n * @remarks\n * Full input schema including config path and options.\n */\nexport const BundleInputSchema = z.object(BundleInputShape);\n\nexport type BundleInput = z.infer<typeof BundleInputSchema>;\n","/**\n * Simulate Command Schemas\n *\n * Zod schemas for simulate command parameter validation.\n */\n\nimport { z } from '@walkeros/core/dev';\nimport { FilePathSchema } from './primitives';\n\n/**\n * Platform schema.\n *\n * @remarks\n * Validates platform type for event simulation.\n */\nexport const PlatformSchema = z\n .enum(['web', 'server'])\n .describe('Platform type for event processing');\n\nexport type Platform = z.infer<typeof PlatformSchema>;\n\n/**\n * Simulate options schema.\n *\n * @remarks\n * Options for the programmatic simulate() API.\n */\nexport const SimulateOptionsSchema = z.object({\n silent: z.boolean().optional().describe('Suppress all output'),\n verbose: z.boolean().optional().describe('Enable verbose logging'),\n json: z.boolean().optional().describe('Format output as JSON'),\n});\n\nexport type SimulateOptions = z.infer<typeof SimulateOptionsSchema>;\n\n/**\n * Raw shape for MCP SDK compatibility (ZodRawShapeCompat).\n *\n * @remarks\n * MCP SDK's registerTool expects raw shapes (Record<string, ZodType>)\n * rather than ZodObject instances. Define shape first, then wrap.\n */\nexport const SimulateInputShape = {\n configPath: FilePathSchema.describe(\n 'Path to flow configuration file, URL, or inline JSON string',\n ),\n event: z\n .string()\n .min(1)\n .optional()\n .describe(\n 'Event as JSON string, file path, or URL. For sources: { content, trigger?, env? }.',\n ),\n flow: z.string().optional().describe('Flow name for multi-flow configs'),\n platform: PlatformSchema.optional().describe('Override platform detection'),\n step: z\n .string()\n .optional()\n .describe(\n 'Step target in type.name format (e.g. \"source.browser\", \"destination.gtag\")',\n ),\n};\n\n/**\n * Simulate input schema for MCP tools.\n *\n * @remarks\n * Full input schema including config path, event, and options.\n */\nexport const SimulateInputSchema = z.object(SimulateInputShape);\n\nexport type SimulateInput = z.infer<typeof SimulateInputSchema>;\n","/**\n * Push Command Schemas\n *\n * Zod schemas for push command parameter validation.\n */\n\nimport { z } from '@walkeros/core/dev';\nimport { FilePathSchema } from './primitives';\nimport { PlatformSchema } from './simulate';\n\n/**\n * Push options schema.\n *\n * @remarks\n * Options for the programmatic push() API.\n */\nexport const PushOptionsSchema = z.object({\n silent: z.boolean().optional().describe('Suppress all output'),\n verbose: z.boolean().optional().describe('Enable verbose logging'),\n json: z.boolean().optional().describe('Format output as JSON'),\n});\n\nexport type PushOptions = z.infer<typeof PushOptionsSchema>;\n\n/**\n * Raw shape for MCP SDK compatibility (ZodRawShapeCompat).\n *\n * @remarks\n * MCP SDK's registerTool expects raw shapes (Record<string, ZodType>)\n * rather than ZodObject instances. Define shape first, then wrap.\n */\nexport const PushInputShape = {\n configPath: FilePathSchema.describe('Path to flow configuration file'),\n event: z.string().min(1).describe('Event as JSON string, file path, or URL'),\n flow: z.string().optional().describe('Flow name for multi-flow configs'),\n platform: PlatformSchema.optional().describe('Override platform detection'),\n};\n\n/**\n * Push input schema for MCP tools.\n *\n * @remarks\n * Full input schema including config path, event, and options.\n */\nexport const PushInputSchema = z.object(PushInputShape);\n\nexport type PushInput = z.infer<typeof PushInputSchema>;\n"],"mappings":"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","names":["z","z","z","z","z","z","z"]}
1
+ {"version":3,"sources":["../src/schemas/index.ts","../src/schemas/primitives.ts","../src/schemas/validate.ts","../src/schemas/bundle.ts","../src/schemas/simulate.ts","../src/schemas/push.ts"],"sourcesContent":["/**\n * CLI Schemas\n *\n * Zod schemas for CLI parameter validation.\n * Follows walkerOS patterns from @walkeros/core.\n */\n\nexport { PortSchema, FilePathSchema } from './primitives';\n\nexport {\n ValidationTypeSchema,\n ValidateOptionsSchema,\n ValidateInputShape,\n ValidateInputSchema,\n type ValidationType,\n type ValidateOptions,\n type ValidateInput,\n} from './validate';\n\nexport {\n BundleOptionsSchema,\n BundleInputShape,\n BundleInputSchema,\n type BundleOptions,\n type BundleInput,\n} from './bundle';\n\nexport {\n PlatformSchema,\n SimulateOptionsSchema,\n SimulateInputShape,\n SimulateInputSchema,\n type Platform,\n type SimulateOptions,\n type SimulateInput,\n} from './simulate';\n\nexport {\n PushOptionsSchema,\n PushInputShape,\n PushInputSchema,\n type PushOptions,\n type PushInput,\n} from './push';\n","/**\n * CLI Primitive Schemas\n *\n * Basic Zod schemas for CLI parameter validation.\n * Follows walkerOS patterns from @walkeros/core.\n */\n\nimport { z } from '@walkeros/core/dev';\n\n/**\n * Port number schema.\n *\n * @remarks\n * Validates HTTP server port number.\n * Must be integer between 1-65535.\n */\nexport const PortSchema = z\n .number()\n .int('Port must be an integer')\n .min(1, 'Port must be at least 1')\n .max(65535, 'Port must be at most 65535')\n .describe('HTTP server port number');\n\n/**\n * File path schema.\n *\n * @remarks\n * Basic string validation for file paths.\n * File existence is checked separately (Zod can't check filesystem).\n */\nexport const FilePathSchema = z\n .string()\n .min(1, 'File path cannot be empty')\n .describe('Path to configuration file');\n","/**\n * Validate Command Schemas\n *\n * Zod schemas for validate command parameter validation.\n */\n\nimport { z } from '@walkeros/core/dev';\n\n/**\n * Validation type schema.\n *\n * @remarks\n * Validates the type of validation to perform.\n * - `contract`: Validate a data contract\n * - `event`: Validate a walkerOS event object\n * - `flow`: Validate a flow configuration file\n * - `mapping`: Validate mapping rules\n */\nexport const ValidationTypeSchema = z\n .enum(['contract', 'event', 'flow', 'mapping'])\n .describe('Validation type: \"event\", \"flow\", \"mapping\", or \"contract\"');\n\nexport type ValidationType = z.infer<typeof ValidationTypeSchema>;\n\n/**\n * Validate options schema.\n *\n * @remarks\n * Options for the programmatic validate() API.\n */\nexport const ValidateOptionsSchema = z.object({\n flow: z.string().optional().describe('Flow name for multi-flow configs'),\n path: z\n .string()\n .optional()\n .describe(\n 'Entry path for package schema validation (e.g., \"destinations.snowplow\", \"stores.cache\"). Checks the entry in every flow that has it, or only in --flow.',\n ),\n strict: z\n .boolean()\n .optional()\n .describe(\n 'Escalate: strict turns warnings and skips into failures (valid is false), contract disagreements error',\n ),\n offline: z\n .boolean()\n .optional()\n .describe(\n 'Do not fetch package schemas: step settings are not checked against them, and the result scope says so. Only with type \"flow\" and no path.',\n ),\n configDir: z\n .string()\n .optional()\n .describe(\n \"Directory local `path` packages resolve against. Defaults to the input file's directory; set it when passing a parsed document.\",\n ),\n});\n\nexport type ValidateOptions = z.infer<typeof ValidateOptionsSchema>;\n\n/**\n * Raw shape for MCP SDK compatibility (ZodRawShapeCompat).\n *\n * @remarks\n * MCP SDK's registerTool expects raw shapes (Record<string, ZodType>)\n * rather than ZodObject instances. Define shape first, then wrap.\n */\nexport const ValidateInputShape = {\n type: ValidationTypeSchema,\n input: z\n .string()\n .min(1)\n .describe('JSON string, file path, or URL to validate'),\n flow: z.string().optional().describe('Flow name for multi-flow configs'),\n path: z\n .string()\n .optional()\n .describe(\n 'Entry path for package schema validation (e.g., \"destinations.snowplow\"). Only with type \"flow\": validates the entry against its package JSON Schema in every flow that has it, or only in the given flow.',\n ),\n strict: z\n .boolean()\n .optional()\n .describe(\n 'Escalate: strict turns warnings and skips into failures: valid is false (the CLI exits 2), and contract example disagreements become errors. Every check runs with or without it.',\n ),\n offline: z\n .boolean()\n .optional()\n .describe(\n 'Do not fetch package schemas: step settings are not checked against them, and details.scope says so. Only with type \"flow\" and no path.',\n ),\n};\n\n/**\n * Validate input schema for MCP tools.\n *\n * @remarks\n * Full input schema including type and input source.\n */\nexport const ValidateInputSchema = z.object(ValidateInputShape);\n\nexport type ValidateInput = z.infer<typeof ValidateInputSchema>;\n","/**\n * Bundle Command Schemas\n *\n * Zod schemas for bundle command parameter validation.\n */\n\nimport { z } from '@walkeros/core/dev';\nimport { FilePathSchema } from './primitives';\n\n/**\n * Bundle options schema.\n *\n * @remarks\n * Options for the programmatic bundle() API.\n */\nexport const BundleOptionsSchema = z.object({\n silent: z.boolean().optional().describe('Suppress all output'),\n verbose: z.boolean().optional().describe('Enable verbose logging'),\n stats: z\n .boolean()\n .optional()\n .default(true)\n .describe('Return bundle statistics'),\n cache: z\n .boolean()\n .optional()\n .default(true)\n .describe('Enable package caching'),\n flowName: z.string().optional().describe('Flow name for multi-flow configs'),\n});\n\nexport type BundleOptions = z.infer<typeof BundleOptionsSchema>;\n\n/**\n * Raw shape for MCP SDK compatibility (ZodRawShapeCompat).\n *\n * @remarks\n * MCP SDK's registerTool expects raw shapes (Record<string, ZodType>)\n * rather than ZodObject instances. Define shape first, then wrap.\n */\nexport const BundleInputShape = {\n configPath: FilePathSchema.describe(\n 'Path to flow configuration file (JSON or JavaScript), URL, or inline JSON string',\n ),\n flow: z.string().optional().describe('Flow name for multi-flow configs'),\n stats: z\n .boolean()\n .optional()\n .default(true)\n .describe('Return bundle statistics'),\n output: z\n .string()\n .optional()\n .describe('Output file path (defaults to config-defined)'),\n};\n\n/**\n * Bundle input schema for MCP tools.\n *\n * @remarks\n * Full input schema including config path and options.\n */\nexport const BundleInputSchema = z.object(BundleInputShape);\n\nexport type BundleInput = z.infer<typeof BundleInputSchema>;\n","/**\n * Simulate Command Schemas\n *\n * Zod schemas for simulate command parameter validation.\n */\n\nimport { z } from '@walkeros/core/dev';\nimport { FilePathSchema } from './primitives';\n\n/**\n * Platform schema.\n *\n * @remarks\n * Validates platform type for event simulation.\n */\nexport const PlatformSchema = z\n .enum(['web', 'server'])\n .describe('Platform type for event processing');\n\nexport type Platform = z.infer<typeof PlatformSchema>;\n\n/**\n * Simulate options schema.\n *\n * @remarks\n * Options for the programmatic simulate() API.\n */\nexport const SimulateOptionsSchema = z.object({\n silent: z.boolean().optional().describe('Suppress all output'),\n verbose: z.boolean().optional().describe('Enable verbose logging'),\n json: z.boolean().optional().describe('Format output as JSON'),\n});\n\nexport type SimulateOptions = z.infer<typeof SimulateOptionsSchema>;\n\n/**\n * Raw shape for MCP SDK compatibility (ZodRawShapeCompat).\n *\n * @remarks\n * MCP SDK's registerTool expects raw shapes (Record<string, ZodType>)\n * rather than ZodObject instances. Define shape first, then wrap.\n */\nexport const SimulateInputShape = {\n configPath: FilePathSchema.describe(\n 'Path to flow configuration file, URL, or inline JSON string',\n ),\n event: z\n .string()\n .min(1)\n .optional()\n .describe(\n 'Event as JSON string, file path, or URL. For sources: { content, trigger?, env? }.',\n ),\n flow: z.string().optional().describe('Flow name for multi-flow configs'),\n platform: PlatformSchema.optional().describe('Override platform detection'),\n step: z\n .string()\n .optional()\n .describe(\n 'Step target in type.name format (e.g. \"source.browser\", \"destination.gtag\")',\n ),\n};\n\n/**\n * Simulate input schema for MCP tools.\n *\n * @remarks\n * Full input schema including config path, event, and options.\n */\nexport const SimulateInputSchema = z.object(SimulateInputShape);\n\nexport type SimulateInput = z.infer<typeof SimulateInputSchema>;\n","/**\n * Push Command Schemas\n *\n * Zod schemas for push command parameter validation.\n */\n\nimport { z } from '@walkeros/core/dev';\nimport { FilePathSchema } from './primitives';\nimport { PlatformSchema } from './simulate';\n\n/**\n * Push options schema.\n *\n * @remarks\n * Options for the programmatic push() API.\n */\nexport const PushOptionsSchema = z.object({\n silent: z.boolean().optional().describe('Suppress all output'),\n verbose: z.boolean().optional().describe('Enable verbose logging'),\n json: z.boolean().optional().describe('Format output as JSON'),\n});\n\nexport type PushOptions = z.infer<typeof PushOptionsSchema>;\n\n/**\n * Raw shape for MCP SDK compatibility (ZodRawShapeCompat).\n *\n * @remarks\n * MCP SDK's registerTool expects raw shapes (Record<string, ZodType>)\n * rather than ZodObject instances. Define shape first, then wrap.\n */\nexport const PushInputShape = {\n configPath: FilePathSchema.describe('Path to flow configuration file'),\n event: z.string().min(1).describe('Event as JSON string, file path, or URL'),\n flow: z.string().optional().describe('Flow name for multi-flow configs'),\n platform: PlatformSchema.optional().describe('Override platform detection'),\n};\n\n/**\n * Push input schema for MCP tools.\n *\n * @remarks\n * Full input schema including config path, event, and options.\n */\nexport const PushInputSchema = z.object(PushInputShape);\n\nexport type PushInput = z.infer<typeof PushInputSchema>;\n"],"mappings":"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","names":["z","z","z","z","z","z","z"]}
@@ -7,37 +7,24 @@ installation.
7
7
 
8
8
  ## Usage
9
9
 
10
- Use `walkeros bundle <example>.json` to build any example, then `walkeros run`
11
- to execute.
12
-
13
- ---
14
-
15
- This directory contains example flow configurations demonstrating various
16
- walkerOS use cases.
17
-
18
- ## Rebuilding Example Bundles
19
-
20
- The `.mjs` bundle files in this directory are pre-built from their corresponding
21
- `.json` config files. If you update the configs or core packages, rebuild them:
10
+ Build any example with `walkeros bundle`, then start a built server flow with
11
+ `runneros` from
12
+ [`@walkeros/runner`](https://www.npmjs.com/package/@walkeros/runner). The CLI
13
+ builds flows; it does not run them.
22
14
 
23
15
  ```bash
24
- cd /workspaces/walkerOS/packages/cli
25
-
26
- # Rebuild server-collect
27
- walkeros bundle examples/server-collect.json --local
28
- mv server-collect.mjs examples/
16
+ walkeros bundle examples/server-collect.json -o dist/
17
+ npx --package=@walkeros/runner runneros start dist/flow.mjs
18
+ ```
29
19
 
30
- # Rebuild web-serve
31
- walkeros bundle examples/web-serve.json --local
32
- mv web-serve.js examples/
20
+ A server flow builds to a directory (`flow.mjs`, `package.json` and
21
+ `node_modules/`); a web flow builds to a single `walker.js` for any static host.
22
+ Without `-o`, the bundle is written to stdout.
33
23
 
34
- # Update Docker demos
35
- cp examples/server-collect.mjs ../docker/demos/demo-collect.mjs
36
- cp examples/web-serve.js ../docker/demos/demo-serve.mjs
37
- ```
24
+ ---
38
25
 
39
- **Important**: Always use `--local` flag when rebuilding examples in the
40
- devcontainer.
26
+ This directory contains example flow configurations demonstrating various
27
+ walkerOS use cases.
41
28
 
42
29
  ## Comprehensive Example
43
30
 
@@ -46,10 +33,6 @@ devcontainer.
46
33
  **Purpose**: Complete reference demonstrating ALL JSON-compatible walkerOS
47
34
  features
48
35
 
49
- **Features**: 51 features including variables, mapping (key, map, loop, set),
50
- transformers (enricher, fingerprint), consent gating, wildcards, ingest
51
- metadata, and more.
52
-
53
36
  **Architecture**: Two named flows (`web` and `server`) showing full event
54
37
  pipeline from browser to server-side forwarding.
55
38
 
@@ -59,15 +42,17 @@ Feature Inventory and usage examples.
59
42
  **Try it**:
60
43
 
61
44
  ```bash
62
- # Web flow (opens browser with demo events)
63
- walkeros run examples/flow-complete.json --flow web
64
-
65
45
  # Server flow (HTTP collection endpoint)
66
- walkeros run examples/flow-complete.json --flow server
46
+ walkeros bundle examples/flow-complete.json --flow server -o dist/server/
47
+ npx --package=@walkeros/runner runneros start dist/server/flow.mjs
48
+
49
+ # Web flow: build walker.js, then serve dist/web/ with any static server
50
+ walkeros bundle examples/flow-complete.json --flow web -o dist/web/
67
51
 
68
- # Both (full pipeline)
69
- # Terminal 1: walkeros run examples/flow-complete.json --flow server
70
- # Terminal 2: walkeros run examples/flow-complete.json --flow web
52
+ # Test either flow offline, destinations mocked
53
+ walkeros push examples/flow-complete.json --flow server \
54
+ --event '{"name":"page view","data":{"title":"Home"}}' \
55
+ --simulate destination.pubsub
71
56
  ```
72
57
 
73
58
  ---
@@ -76,14 +61,13 @@ walkeros run examples/flow-complete.json --flow server
76
61
 
77
62
  ### web-serve.json
78
63
 
79
- **Purpose**: Browser bundle that sends events to collector
64
+ **Purpose**: Browser bundle that sends events to a collector
80
65
 
81
66
  **Features**:
82
67
 
83
68
  - sourceDemo (generates test events automatically)
84
69
  - destinationDemo (console output for debugging)
85
70
  - destinationAPI (sends events to http://localhost:8080/collect)
86
- - Simulates page views and product views
87
71
 
88
72
  **Use case**: Demo web tracking that connects to server-collect.json for full
89
73
  event flow testing
@@ -91,53 +75,9 @@ event flow testing
91
75
  **Try it**:
92
76
 
93
77
  ```bash
94
- walkeros bundle examples/web-serve.json
95
- walkeros run examples/web-serve.js -p 3000
96
- # Open http://localhost:3000 in browser
97
- ```
98
-
99
- ### web-tracking.json
100
-
101
- **Purpose**: Comprehensive browser tracking with multiple analytics platforms
102
-
103
- **Features**:
104
-
105
- - sourceBrowser (DOM event tracking)
106
- - destinationAPI → localhost:8080/collect (send to collection server)
107
- - destinationGtag → Google Analytics 4
108
- - destinationMeta → Meta Pixel (Facebook)
109
- - destinationDemo → Console logging
110
-
111
- **Event mappings**:
112
-
113
- - Page views → GA4 `page_view`, Meta `PageView`
114
- - Product views → GA4 `view_item`, Meta `ViewContent`
115
- - Add to cart → GA4 `add_to_cart`, Meta `AddToCart`
116
- - Purchases → GA4 `purchase`, Meta `Purchase`
117
-
118
- **Use case**: Production web tracking with multiple destinations
119
-
120
- **Environment variables**:
121
-
122
- - `GA4_MEASUREMENT_ID` - Google Analytics 4 measurement ID (default:
123
- G-XXXXXXXXXX)
124
- - `META_PIXEL_ID` - Meta Pixel ID (default: 123456789)
125
- - `META_TEST_CODE` - Meta test event code (optional)
126
-
127
- **Try it**:
128
-
129
- ```bash
130
- # Set environment variables
131
- export GA4_MEASUREMENT_ID="G-YOUR-ID"
132
- export META_PIXEL_ID="123456789"
133
-
134
- # Bundle for browser
135
- walkeros bundle examples/web-tracking.json --stats
136
-
137
- # Simulate events
138
- walkeros push examples/web-tracking.json \
139
- --event '{"name":"product view","data":{"id":"P123","name":"Laptop","price":999}}' \
140
- --simulate destination.demo
78
+ walkeros bundle examples/web-serve.json -o dist/web/
79
+ npx serve dist/web -l 3000
80
+ # Load http://localhost:3000/walker.js from a page
141
81
  ```
142
82
 
143
83
  ## Server Examples
@@ -151,7 +91,6 @@ walkeros push examples/web-tracking.json \
151
91
  - sourceExpress (HTTP endpoint at /collect)
152
92
  - destinationDemo (console logging)
153
93
  - CORS enabled for browser requests
154
- - Health check endpoint
155
94
 
156
95
  **Use case**: Simple event collector for demo and testing, receives events from
157
96
  web-serve.json
@@ -159,123 +98,54 @@ web-serve.json
159
98
  **Try it**:
160
99
 
161
100
  ```bash
162
- walkeros bundle examples/server-collect.json
163
- walkeros run examples/server-collect.mjs -p 8080
101
+ walkeros bundle examples/server-collect.json -o dist/server/
102
+ npx --package=@walkeros/runner runneros start dist/server/flow.mjs --port 8080
164
103
 
165
- # In another terminal, send test event:
104
+ # In another terminal, send a test event:
166
105
  curl -X POST http://localhost:8080/collect \
167
106
  -H "Content-Type: application/json" \
168
107
  -d '{"name":"page view","data":{"title":"Test"}}'
169
108
  ```
170
109
 
171
- ### server-collection.json
172
-
173
- **Purpose**: Server-side event collection and forwarding to data platforms
174
-
175
- **Features**:
176
-
177
- - sourceExpress (HTTP endpoint at /collect)
178
- - destinationDataManager → Google Tag Manager Server-Side
179
- - destinationDemo → Console logging
180
-
181
- **Event mappings**:
182
-
183
- - Page views → GTM `page_view`
184
- - Product views → GTM `view_item`
185
- - Add to cart → GTM `add_to_cart`
186
- - Purchases → GTM `purchase`
187
-
188
- **Use case**: Server-side tracking for privacy-compliant data collection
189
-
190
- **Environment variables**:
191
-
192
- - `GTM_CONTAINER_ID` - GTM Server Container ID (default: GTM-XXXXXXX)
193
- - `GTM_SERVER_URL` - GTM Server URL (default: https://gtm.example.com)
194
-
195
- **Try it**:
110
+ To run the same artifact in Docker, mount the whole directory where the
111
+ `walkeros/flow` image expects it:
196
112
 
197
113
  ```bash
198
- # Set environment variables
199
- export GTM_CONTAINER_ID="GTM-XXXXX"
200
- export GTM_SERVER_URL="https://your-gtm-server.com"
201
-
202
- # Run in Docker
203
- walkeros run examples/server-collection.json -p 8080
204
-
205
- # Send test event (in another terminal)
206
- curl -X POST http://localhost:8080/collect \
207
- -H "Content-Type: application/json" \
208
- -d '{
209
- "name": "product view",
210
- "data": {
211
- "id": "P123",
212
- "name": "Laptop",
213
- "price": 999
214
- },
215
- "user": {
216
- "id": "user_123",
217
- "session": "session_456"
218
- }
219
- }'
114
+ docker run --rm -p 8080:8080 \
115
+ -v "$PWD/dist/server:/app/flow:ro" \
116
+ walkeros/flow:<version>
220
117
  ```
221
118
 
222
- ## Workflow: Web → Server
223
-
224
- ### Quick Demo Loop (web-serve → server-collect)
119
+ Use a `walkeros/flow` version that ships `runneros`, ideally the same version as
120
+ this CLI. See the [runtime docs](https://www.walkeros.io/docs/apps/runtime).
225
121
 
226
- The simplest way to see the complete event flow:
122
+ ## Workflow: Web → Server
227
123
 
228
124
  **Terminal 1 - Start collector**:
229
125
 
230
126
  ```bash
231
- walkeros bundle examples/server-collect.json
232
- walkeros run examples/server-collect.mjs -p 8080
127
+ walkeros bundle examples/server-collect.json -o dist/server/
128
+ npx --package=@walkeros/runner runneros start dist/server/flow.mjs --port 8080
233
129
  ```
234
130
 
235
- **Terminal 2 - Start web server**:
131
+ **Terminal 2 - Serve the web bundle**:
236
132
 
237
133
  ```bash
238
- walkeros bundle examples/web-serve.json
239
- walkeros run examples/web-serve.js -p 3000
134
+ walkeros bundle examples/web-serve.json -o dist/web/
135
+ npx serve dist/web -l 3000
240
136
  ```
241
137
 
242
- **Browser**: Open http://localhost:3000
243
-
244
138
  **Events flow**:
245
139
 
246
140
  ```
247
141
  Browser (demo source) → destinationAPI → POST /collect → sourceExpress → destinationDemo (console)
248
142
  ```
249
143
 
250
- ### Production Pattern (web-tracking → server-collection)
251
-
252
- For production with real analytics platforms:
253
-
254
- **1. Start collection server**:
255
-
256
- ```bash
257
- walkeros run examples/server-collection.json -p 8080
258
- ```
259
-
260
- **2. Bundle web tracking** (configured to send to localhost:8080):
261
-
262
- ```bash
263
- walkeros bundle examples/web-tracking.json
264
- ```
265
-
266
- **3. Deploy** bundle to your website
267
-
268
- **4. Events flow**:
269
-
270
- ```
271
- Browser → destinationAPI (POST /collect) → sourceExpress → destinationDataManager → GTM Server
272
- ```
273
-
274
144
  ## Creating Custom Examples
275
145
 
276
146
  ### Flow Configuration Structure
277
147
 
278
- Flow configs use the `Flow.Config` format:
148
+ Flow configs use the `Flow.Json` format:
279
149
 
280
150
  ```json
281
151
  {
@@ -321,44 +191,8 @@ Flow configs use the `Flow.Config` format:
321
191
 
322
192
  - Platform is set via `config: { "platform": "web" }` (or `"server"`)
323
193
  - Each step references its npm package directly via `package`
324
- - Output path is convention-based: `./dist/walker.js` (web) or
325
- `./dist/bundle.mjs` (server)
326
-
327
- ### Available Sources
328
-
329
- **Web**:
330
-
331
- - `@walkeros/web-source-browser` → `sourceBrowser` (DOM tracking)
332
- - `@walkeros/web-source-datalayer` → `sourceDataLayer` (data layer integration)
333
- - `@walkeros/source-demo` → `sourceDemo` (test events)
334
-
335
- **Server**:
336
-
337
- - `@walkeros/server-source-express` → `sourceExpress` (HTTP endpoint)
338
- - `@walkeros/server-source-gcp` → `sourceGCP` (Google Cloud Functions)
339
-
340
- ### Available Destinations
341
-
342
- **Web**:
343
-
344
- - `@walkeros/web-destination-api` → `destinationAPI` (HTTP API)
345
- - `@walkeros/web-destination-gtag` → `destinationGtag` (GA4, GTM, Ads)
346
- - `@walkeros/web-destination-meta` → `destinationMeta` (Meta Pixel)
347
- - `@walkeros/web-destination-piwikpro` → `destinationPiwikPro`
348
- - `@walkeros/web-destination-plausible` → `destinationPlausible`
349
-
350
- **Server**:
351
-
352
- - `@walkeros/server-destination-datamanager` → `destinationDataManager` (GTM
353
- Server-Side)
354
- - `@walkeros/server-destination-meta` → `destinationMeta` (Meta CAPI)
355
- - `@walkeros/server-destination-aws` → `destinationAWS`
356
- - `@walkeros/server-destination-gcp` → `destinationGCP`
357
- - `@walkeros/server-destination-piwikpro` → `destinationPiwikPro`
358
-
359
- **Universal**:
360
-
361
- - `@walkeros/destination-demo` → `destinationDemo` (console logging)
194
+ - With `-o dist/`, output is `dist/walker.js` (web) or `dist/flow.mjs` plus
195
+ `package.json` and `node_modules/` (server)
362
196
 
363
197
  ## Event Naming Convention
364
198
 
@@ -382,7 +216,7 @@ The event name is parsed as: `const [entity, action] = event.split(' ')`
382
216
 
383
217
  ## Next Steps
384
218
 
385
- 1. Try each example with `walkeros bundle` and `walkeros push --simulate`
219
+ 1. Try each example with `walkeros push --simulate`, then `walkeros bundle`
386
220
  2. Modify examples to match your tracking requirements
387
221
  3. Create custom flow files for your use case
388
- 4. Deploy to production
222
+ 4. Deploy: `walkeros bundle`, then `runneros start` or the `walkeros/flow` image
@@ -0,0 +1,18 @@
1
+ # customers
2
+
3
+ Fake demo customers for the `customers` store of `flow-complete.json`
4
+ (`@walkeros/server-store-fs`, structured mode). One file per customer id; the
5
+ content is the customer's record as JSON: lifetime value and segment.
6
+
7
+ - `cust-42`: `{"ltv":420,"segment":"loyal"}`
8
+ - `cust-1001`: `{"ltv":75.5,"segment":"new"}`
9
+
10
+ Not covered by root `include`, so no customer data ships in a bundle. `basePath`
11
+ defaults to `./customers`, relative to the working directory: run
12
+ `walkeros push` from `packages/cli/examples`, or set `CUSTOMERS_DIR` to this
13
+ folder's absolute path (always for `runneros start`, which runs inside the
14
+ artifact folder).
15
+
16
+ In production the store is swapped for a real one, e.g.
17
+ `@walkeros/server-store-sheets` or a GCS store; the `loadUser` step does not
18
+ change.
@@ -0,0 +1 @@
1
+ {"ltv":75.5,"segment":"new"}
@@ -0,0 +1 @@
1
+ {"ltv":420,"segment":"loyal"}