@walkeros/core 4.0.0 → 4.1.0-next-1778155282668
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 +33 -26
- package/dist/dev.d.mts +227 -162
- package/dist/dev.d.ts +227 -162
- package/dist/dev.js +1 -1
- package/dist/dev.js.map +1 -1
- package/dist/dev.mjs +1 -1
- package/dist/dev.mjs.map +1 -1
- package/dist/index.d.mts +130 -75
- package/dist/index.d.ts +130 -75
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/dev.ts","../src/schemas/index.ts","../src/schemas/validation.ts","../src/schemas/primitives.ts","../src/schemas/utilities.ts","../src/schemas/patterns.ts","../src/schemas/walkeros.ts","../src/schemas/mapping.ts","../src/schemas/destination.ts","../src/schemas/matcher.ts","../src/schemas/cache.ts","../src/schemas/logger.ts","../src/schemas/collector.ts","../src/schemas/source.ts","../src/schemas/transformer.ts","../src/schemas/store.ts","../src/schemas/flow.ts","../src/schemas/hint.ts","../src/schemas/marketing.ts","../src/schemas/validate-flow-config.ts","../src/schemas/schema-builder.ts","../src/merge-config-schema.ts","../src/examples/formatOut.ts"],"sourcesContent":["export * as schemas from './schemas';\nexport { z, zodToSchema, type JSONSchema } from './schemas';\nexport { ClickIdEntrySchema } from './schemas';\nexport { mergeConfigSchema } from './merge-config-schema';\n\nexport { formatOut } from './examples/formatOut';\nexport type { Flow } from './types/flow';\n","/**\n * walkerOS Core Schemas\n *\n * Zod schemas for runtime validation and JSON Schema generation.\n * These schemas mirror TypeScript types in packages/core/src/types/\n * and are used for:\n * - Runtime validation at system boundaries (MCP tools, APIs, CLI)\n * - JSON Schema generation for Explorer UI (RJSF)\n * - Documentation and type metadata\n *\n * Note: TypeScript types remain the source of truth for development.\n * Schemas are for runtime validation and tooling support.\n *\n * Organization: Schema files mirror type files\n * - types/walkeros.ts → schemas/walkeros.ts\n * - types/mapping.ts → schemas/mapping.ts\n * - types/destination.ts → schemas/destination.ts\n * - types/collector.ts → schemas/collector.ts\n * - types/source.ts → schemas/source.ts\n * - types/flow.ts → schemas/flow.ts\n * - types/storage.ts + types/handler.ts → schemas/utilities.ts\n *\n * Import strategy:\n * Due to overlapping schema names across domains (ConfigSchema, InstanceSchema, etc.),\n * schemas are organized into namespaces. Import either:\n * 1. From namespaces: import { WalkerOSSchemas, MappingSchemas } from '@walkeros/core/dev'\n * 2. Direct from files: import { EventSchema } from '@walkeros/core/schemas/walkeros'\n */\n\n// ========================================\n// Primitives & Patterns (DRY building blocks)\n// ========================================\n\nexport * from './primitives';\nexport * from './patterns';\n\n// ========================================\n// Namespace Exports (prevents name collisions)\n// ========================================\n\nimport * as WalkerOSSchemas from './walkeros';\nimport * as MappingSchemas from './mapping';\nimport * as DestinationSchemas from './destination';\nimport * as CollectorSchemas from './collector';\nimport * as SourceSchemas from './source';\nimport * as TransformerSchemas from './transformer';\nimport * as StoreSchemas from './store';\nimport * as FlowSchemas from './flow';\nimport * as UtilitySchemas from './utilities';\n\nexport {\n WalkerOSSchemas,\n MappingSchemas,\n DestinationSchemas,\n CollectorSchemas,\n SourceSchemas,\n TransformerSchemas,\n StoreSchemas,\n FlowSchemas,\n UtilitySchemas,\n};\n\n// Cache schemas (used by flow schemas for caching)\nimport * as CacheSchemas from './cache';\nexport { CacheSchemas };\nexport { CacheSchema, CacheRuleSchema } from './cache';\n\n// Matcher schemas (used by flow schemas for routing)\nimport * as MatcherSchemas from './matcher';\nexport { MatcherSchemas };\nexport {\n MatchExpressionSchema,\n RoutableNextSchema,\n NextRuleSchema,\n} from './matcher';\n\n// Hint schemas (direct export - flat record, no namespace needed)\nexport { CodeSchema, HintSchema, HintsSchema } from './hint';\nexport { ClickIdEntrySchema } from './marketing';\n\n// Logger schemas (shared config used by destination/source/transformer/store/collector)\nexport { LoggerConfigSchema, LoggerHandlerSchema } from './logger';\n\n// ========================================\n// Direct Exports (commonly used schemas)\n// ========================================\n\n// Export commonly used schemas from WalkerOS namespace directly\nexport {\n EventSchema,\n PartialEventSchema,\n DeepPartialEventSchema,\n PropertiesSchema,\n OrderedPropertiesSchema,\n UserSchema,\n EntitySchema,\n EntitiesSchema,\n ConsentSchema,\n SourceTypeSchema,\n SourceSchema,\n PropertySchema,\n PropertyTypeSchema,\n // JSON Schemas\n eventJsonSchema,\n partialEventJsonSchema,\n userJsonSchema,\n propertiesJsonSchema,\n orderedPropertiesJsonSchema,\n entityJsonSchema,\n sourceTypeJsonSchema,\n consentJsonSchema,\n} from './walkeros';\n\n// Export commonly used schemas from Mapping namespace directly\nexport {\n ValueSchema,\n ValuesSchema,\n ValueConfigSchema,\n LoopSchema,\n SetSchema,\n MapSchema,\n PolicySchema,\n RuleSchema,\n RulesSchema,\n ResultSchema as MappingResultSchema, // Alias to avoid conflict with Destination.ResultSchema\n // JSON Schemas\n valueJsonSchema,\n valueConfigJsonSchema,\n loopJsonSchema,\n setJsonSchema,\n mapJsonSchema,\n policyJsonSchema,\n ruleJsonSchema,\n rulesJsonSchema,\n} from './mapping';\n\n// Export commonly used schemas from Flow namespace directly\nexport {\n JsonSchema as FlowJsonSchema,\n FlowSchema,\n ConfigSchema as FlowConfigSchema,\n ContractSchema,\n ContractActionsSchema,\n ContractSchemaEntry,\n ContractRuleSchema,\n SourceSchema as FlowSourceSchema,\n DestinationSchema as FlowDestinationSchema,\n StoreSchema as FlowStoreSchema,\n TransformerSchema as FlowTransformerSchema,\n CodeSchema as FlowCodeSchema,\n BundleSchema as FlowBundleSchema,\n BundlePackageSchema as FlowBundlePackageSchema,\n PrimitiveSchema,\n parseConfig,\n safeParseConfig,\n parseFlow,\n safeParseFlow,\n // JSON Schemas\n configJsonSchema,\n flowJsonSchema,\n flowConfigJsonSchema,\n sourceJsonSchema,\n destinationJsonSchema,\n storeJsonSchema,\n transformerJsonSchema,\n contractRuleJsonSchema,\n contractJsonSchema,\n} from './flow';\n\n// Validation\nexport type { ValidationIssue, ValidationResult } from './validate';\nexport type { IntelliSenseContext, PackageInfo } from './intellisense';\nexport { validateFlowConfig } from './validate-flow-config';\n\n// ========================================\n// Schema Builder - DRY utility for destinations\n// ========================================\n\n/**\n * Schema Builder - DRY utility for destinations\n *\n * Destinations can use these utilities to create JSON Schemas WITHOUT\n * needing Zod as a dependency. The core package handles all schema logic.\n *\n * This follows the DRY principle - write once in core, use everywhere.\n */\nexport * from './schema-builder';\n\n/**\n * Re-export Zod and zod-to-json-schema for destinations\n *\n * Destinations can import Zod from @walkeros/core instead of adding\n * their own dependency. This ensures version consistency and reduces\n * duplicate dependencies in the monorepo.\n *\n * Usage in destinations:\n * import { z, zodToSchema } from '@walkeros/core/dev';\n */\nexport { z } from './validation';\n\nimport type { zod } from './validation';\nimport { z } from './validation';\n\n/**\n * JSONSchema type for JSON Schema Draft 7 objects\n *\n * Represents a JSON Schema object as returned by Zod's toJSONSchema().\n * Uses Record<string, unknown> as JSON Schema structure is dynamic.\n */\nexport type JSONSchema = Record<string, unknown>;\n\n/**\n * Utility to convert Zod schema to JSON Schema with consistent defaults\n *\n * This wrapper ensures all destinations use the same JSON Schema configuration:\n * - target: 'draft-7' (JSON Schema Draft 7 format)\n *\n * Usage in destinations:\n * import { zodToSchema } from '@walkeros/core/dev';\n * export const settings = zodToSchema(SettingsSchema);\n *\n * @param schema - Zod schema to convert\n * @returns JSON Schema Draft 7 object\n */\nexport function zodToSchema(schema: zod.ZodTypeAny): JSONSchema {\n return z.toJSONSchema(schema, {\n target: 'draft-7',\n }) as JSONSchema;\n}\n","/**\n * Central validation module\n * Single source of truth for validation library access\n *\n * All schema files should import from this module instead of directly\n * from zod to ensure consistent usage and easy maintenance.\n */\n\nimport { z } from 'zod';\n\n// Re-export validation tools for schema files\nexport { z };\nexport type { z as zod } from 'zod';\n\n/**\n * Standard JSON Schema conversion with consistent project defaults\n *\n * Uses Zod 4 native toJSONSchema() method for JSON Schema generation.\n * All walkerOS schemas use JSON Schema Draft 7 format.\n *\n * @param schema - Zod schema to convert\n * @param _name - Schema name (ignored in Zod 4, kept for API compatibility)\n * @param target - JSON Schema target version (default: 'draft-7')\n * @returns JSON Schema object\n */\nexport function toJsonSchema(\n schema: z.ZodTypeAny,\n _name?: string,\n target: 'draft-7' | 'draft-2020-12' | 'openapi-3.0' = 'draft-7',\n) {\n return z.toJSONSchema(schema, {\n target,\n });\n}\n","import { z } from './validation';\n\n/**\n * Primitive Schema Definitions\n *\n * Reusable primitive schemas following DRY principle.\n * These are the building blocks used throughout all schemas to ensure consistency.\n *\n * Benefits:\n * - Single source of truth for common patterns\n * - Consistent descriptions across all schemas\n * - Easier maintenance and updates\n * - Better IntelliSense/autocomplete\n */\n\n// ========================================\n// Basic Primitives\n// ========================================\n\n/**\n * Required string field\n * Used for required text fields throughout schemas\n */\nexport const RequiredString = z.string();\n\n/**\n * Required number field\n * Used for required numeric fields throughout schemas\n */\nexport const RequiredNumber = z.number();\n\n/**\n * Required boolean field\n * Used for required flag fields throughout schemas\n */\nexport const RequiredBoolean = z.boolean();\n\n// ========================================\n// Semantic Primitives\n// ========================================\n\n/**\n * Identifier - Required unique string identifier\n * Used for entity IDs, session IDs, etc.\n */\nexport const Identifier = z.string().min(1);\n\n/**\n * Timestamp - Unix timestamp in milliseconds\n * Used for event timestamps, session timestamps, etc.\n */\nexport const Timestamp = z.number().int().positive();\n\n/**\n * Counter - Sequential counter (non-negative integer)\n * Used for event counts, session counts, etc.\n */\nexport const Counter = z.number().int().nonnegative();\n\n// ========================================\n// Primitive Value Unions\n// ========================================\n\n/**\n * PrimitiveValue - Basic primitive types\n * Union of string, number, and boolean\n * Used in Property definitions and value transformations\n */\nexport const PrimitiveValue = z.union([z.string(), z.number(), z.boolean()]);\n\n/**\n * OptionalPrimitiveValue - Optional primitive value\n */\nexport const OptionalPrimitiveValue = PrimitiveValue.optional();\n","import { z, toJsonSchema } from './validation';\n\n/**\n * Utility Schemas\n *\n * Mirrors: types/storage.ts, types/handler.ts, and other utility types\n * Purpose: Runtime validation and JSON Schema generation for utility types\n *\n * Small, standalone schemas for utility types used throughout walkerOS:\n * - Storage types\n * - Handler functions\n * - Error/log management\n */\n\n// ========================================\n// Storage Schemas\n// ========================================\n\n/**\n * StorageType - Storage mechanism identifier\n *\n * Standard storage types:\n * - local: localStorage (persistent)\n * - session: sessionStorage (session-scoped)\n * - cookie: document.cookie (configurable expiry)\n *\n * Used for session persistence and user tracking\n */\nexport const StorageTypeSchema = z\n .enum(['local', 'session', 'cookie'])\n .meta({\n id: 'StorageType',\n title: 'Storage.Type',\n description: 'Storage mechanism: local, session, or cookie.',\n })\n .describe('Storage mechanism: local, session, or cookie');\n\n/**\n * Storage - Storage type constants\n * Provides const values for type-safe storage type references\n */\nexport const StorageSchema = z\n .object({\n Local: z.literal('local'),\n Session: z.literal('session'),\n Cookie: z.literal('cookie'),\n })\n .meta({\n id: 'StorageConstants',\n title: 'Storage',\n description: 'Storage type constants for type-safe references.',\n })\n .describe('Storage type constants for type-safe references');\n\n// ========================================\n// Handler Schemas\n// ========================================\n\n/**\n * Error - Error handler function type\n *\n * Signature: (error: unknown, state?: unknown) => void\n *\n * Called when errors occur during:\n * - Event processing\n * - Destination push operations\n * - Source event handling\n * - Mapping transformations\n *\n * Parameters:\n * - error: The error that occurred\n * - state: Optional state information for debugging\n *\n * Note: Function schemas use z.unknown() as functions aren't serializable\n */\nexport const ErrorHandlerSchema = z\n .unknown()\n .meta({\n id: 'ErrorHandler',\n title: 'Error.Handler',\n description: 'Error handler function: (error, state?) => void.',\n })\n .describe('Error handler function: (error, state?) => void');\n\n/**\n * Log - Log handler function type\n *\n * Signature: (message: string, verbose?: boolean) => void\n *\n * Called for logging during:\n * - Event processing\n * - Configuration updates\n * - Debugging (when verbose enabled)\n *\n * Parameters:\n * - message: Log message\n * - verbose: Whether this is a verbose-only log\n *\n * Note: Function schemas use z.unknown() as functions aren't serializable\n */\nexport const LogHandlerSchema = z\n .unknown()\n .meta({\n id: 'LogHandler',\n title: 'Log.Handler',\n description: 'Log handler function: (message, verbose?) => void.',\n })\n .describe('Log handler function: (message, verbose?) => void');\n\n/**\n * Handler - Combined handler interface\n * Groups Error and Log handlers\n */\nexport const HandlerSchema = z\n .object({\n Error: ErrorHandlerSchema.describe('Error handler function'),\n Log: LogHandlerSchema.describe('Log handler function'),\n })\n .meta({\n id: 'Handler',\n title: 'Handler',\n description: 'Handler interface with error and log functions.',\n })\n .describe('Handler interface with error and log functions');\n\n// ========================================\n// JSON Schema Exports (for Explorer/RJSF/MCP)\n// ========================================\n\nexport const storageTypeJsonSchema = toJsonSchema(\n StorageTypeSchema,\n 'StorageType',\n);\n\nexport const storageJsonSchema = toJsonSchema(StorageSchema, 'Storage');\n\nexport const errorHandlerJsonSchema = toJsonSchema(\n ErrorHandlerSchema,\n 'ErrorHandler',\n);\n\nexport const logHandlerJsonSchema = toJsonSchema(\n LogHandlerSchema,\n 'LogHandler',\n);\n\nexport const handlerJsonSchema = toJsonSchema(HandlerSchema, 'Handler');\n","import { z } from './validation';\nimport {} from './primitives';\nimport { ErrorHandlerSchema, LogHandlerSchema } from './utilities';\n\n/**\n * Common Schema Patterns\n *\n * Reusable schema patterns that appear across multiple domain schemas.\n * These patterns combine primitives into commonly used configurations.\n *\n * Benefits:\n * - DRY principle for complex patterns\n * - Consistent configuration interfaces\n * - Single source of truth for common configs\n * - Easier to maintain and update patterns globally\n */\n\n// ========================================\n// Handler Patterns\n// ========================================\n\n/**\n * HandlersConfig - Error and log handler configuration\n * Used in: Destination.Config, Collector.Config, Source.Config\n */\nexport const HandlersConfig = z\n .object({\n onError: ErrorHandlerSchema.optional().describe(\n 'Error handler function: (error, state?) => void',\n ),\n onLog: LogHandlerSchema.optional().describe(\n 'Log handler function: (message, verbose?) => void',\n ),\n })\n .partial();\n\n// ========================================\n// Configuration Patterns\n// ========================================\n\n/**\n * VerboseConfig - Verbose logging configuration\n * Used in: Destination.Config, Collector.Config\n */\nexport const VerboseConfig = z\n .object({\n verbose: z\n .boolean()\n .describe('Enable verbose logging for debugging')\n .optional(),\n })\n .partial();\n\n/**\n * QueueConfig - Event queueing configuration\n * Used in: Destination.Config\n */\nexport const QueueConfig = z\n .object({\n queue: z\n .boolean()\n .describe('Whether to queue events when consent is not granted')\n .optional(),\n })\n .partial();\n\n/**\n * IdConfig - ID configuration pattern\n * Used in: Destination.Config, Source.Config\n */\nexport const IdConfig = z.object({}).partial();\n\n/**\n * InitConfig - Initialization configuration pattern\n * Used in: Destination.Config\n */\nexport const InitConfig = z\n .object({\n init: z.boolean().describe('Whether to initialize immediately').optional(),\n loadScript: z\n .boolean()\n .describe('Whether to load external script (for web destinations)')\n .optional(),\n })\n .partial();\n\n/**\n * PrimaryConfig - Primary flag configuration\n * Used in: Source.Config, Source.InitSource\n */\nexport const PrimaryConfig = z\n .object({\n primary: z\n .boolean()\n .describe('Mark as primary (only one can be primary)')\n .optional(),\n })\n .partial();\n\n// ========================================\n// Generic Configuration Patterns\n// ========================================\n\n/**\n * GenericSettingsConfig - Generic settings configuration\n * Used in: Destination.Config, Source.Config, Collector runtime\n * Settings are implementation-specific and can't be validated generically\n */\nexport const GenericSettingsConfig = z\n .object({\n settings: z\n .any()\n .optional()\n .describe('Implementation-specific configuration'),\n })\n .partial();\n\n/**\n * GenericEnvConfig - Generic environment configuration\n * Used in: Destination.Config, Source.Config, Source.BaseEnv\n * Environment is platform-specific and can't be validated generically\n */\nexport const GenericEnvConfig = z\n .object({\n env: z\n .any()\n .optional()\n .describe('Environment dependencies (platform-specific)'),\n })\n .partial();\n\n// ========================================\n// Mapping Patterns\n// ========================================\n\n/**\n * DataTransformationConfig - Data transformation configuration\n * Used in: Destination.Config, Mapping.Config, Mapping.Rule\n *\n * Note: This creates a forward reference to ValueSchema/ValuesSchema\n * Import from mapping.ts to avoid circular dependencies\n */\nexport function createDataTransformationConfig(\n ValueSchema: z.ZodTypeAny,\n ValuesSchema: z.ZodTypeAny,\n) {\n return z\n .object({\n data: z\n .union([ValueSchema, ValuesSchema])\n .optional()\n .describe('Data transformation rules'),\n })\n .partial();\n}\n\n/**\n * MappingRulesConfig - Mapping rules configuration\n * Used in: Destination.Config, Source.Config (via Mapping.Config)\n *\n * Note: This creates a forward reference to RulesSchema\n * Import from mapping.ts to avoid circular dependencies\n */\nexport function createMappingRulesConfig(RulesSchema: z.ZodTypeAny) {\n return z\n .object({\n mapping: RulesSchema.optional().describe('Event mapping rules'),\n })\n .partial();\n}\n\n/**\n * PolicyConfig - Policy rules configuration\n * Used in: Destination.Config, Mapping.Config, Mapping.Rule\n *\n * Note: This creates a forward reference to PolicySchema\n * Import from mapping.ts to avoid circular dependencies\n */\nexport function createPolicyConfig(PolicySchema: z.ZodTypeAny) {\n return z\n .object({\n policy: PolicySchema.optional().describe('Pre-processing policy rules'),\n })\n .partial();\n}\n\n/**\n * ConsentConfig - Consent requirements configuration\n * Used in: Destination.Config, Mapping.Config, Mapping.Rule, Event\n *\n * Note: This creates a forward reference to ConsentSchema\n * Import from walkeros.ts to avoid circular dependencies\n */\nexport function createConsentConfig(ConsentSchema: z.ZodTypeAny) {\n return z\n .object({\n consent: ConsentSchema.optional().describe('Required consent states'),\n })\n .partial();\n}\n\n// ========================================\n// Instance Patterns\n// ========================================\n\n/**\n * RuntimeInstanceConfig - Runtime instance configuration\n * Used in: Destination.Instance, Source.Instance, Collector.Instance\n *\n * Common fields for runtime instances:\n * - type: Instance type identifier\n * - config: Configuration object\n * - Functions (push, init, etc.) are instance-specific\n */\nexport const RuntimeInstanceConfig = z\n .object({\n type: z.string().optional().describe('Instance type identifier'),\n config: z.unknown().describe('Instance configuration'),\n })\n .partial();\n\n// ========================================\n// Context Patterns\n// ========================================\n\n/**\n * BaseContextConfig - Base context configuration\n * Used in: Destination.Context, Source contexts\n *\n * Common fields for contexts:\n * - collector: Collector instance (runtime)\n * - config: Configuration\n * - env: Environment dependencies\n */\nexport const BaseContextConfig = z\n .object({\n collector: z.unknown().describe('Collector instance (runtime object)'),\n config: z.unknown().describe('Configuration'),\n env: z.unknown().describe('Environment dependencies'),\n })\n .partial();\n\n// ========================================\n// Batch Patterns\n// ========================================\n\n/**\n * BatchConfig - Batch processing configuration\n * Used in: Mapping.Rule\n */\nexport const BatchConfig = z\n .object({\n batch: z\n .number()\n .optional()\n .describe('Batch size: bundle N events for batch processing'),\n batched: z.unknown().optional().describe('Batch of events to be processed'),\n })\n .partial();\n\n// ========================================\n// Processing Patterns\n// ========================================\n\n/**\n * ProcessingControlConfig - Processing control flags\n * Used in: Mapping.Rule\n */\nexport const ProcessingControlConfig = z\n .object({\n ignore: z.boolean().describe('Set to true to skip processing').optional(),\n condition: z\n .string()\n .optional()\n .describe('Condition function: return true to process'),\n })\n .partial();\n\n// ========================================\n// Collection Patterns\n// ========================================\n\n/**\n * SourcesMapConfig - Sources collection pattern\n * Used in: Collector.Instance\n */\nexport const SourcesMapConfig = z\n .object({\n sources: z\n .record(z.string(), z.unknown())\n .describe('Map of source instances'),\n })\n .partial();\n\n/**\n * DestinationsMapConfig - Destinations collection pattern\n * Used in: Collector.Instance\n */\nexport const DestinationsMapConfig = z\n .object({\n destinations: z\n .record(z.string(), z.unknown())\n .describe('Map of destination instances'),\n })\n .partial();\n","import { z, toJsonSchema } from './validation';\nimport {\n RequiredString,\n RequiredNumber,\n Identifier,\n Timestamp,\n} from './primitives';\n\n/**\n * Core walkerOS Event Model Schemas\n *\n * Mirrors: types/walkeros.ts\n * Purpose: Runtime validation and JSON Schema generation for MCP tools, Explorer UI, and API boundaries\n *\n * These schemas provide:\n * 1. Runtime validation for event data\n * 2. JSON Schema generation for RJSF/Explorer\n * 3. Type documentation via .describe()\n * 4. Compile-time type checking (schemas mirror TypeScript types)\n *\n * Note: TypeScript types in types/walkeros.ts remain the source of truth for development.\n * These Zod schemas are for validation and JSON Schema generation at runtime boundaries.\n */\n\n// ========================================\n// Base Property Types (Recursive)\n// ========================================\n\n/**\n * PropertyType - Base property value types\n * Can be primitive (boolean, string, number) or nested object with Property values\n */\nexport const PropertyTypeSchema: z.ZodTypeAny = z\n .lazy(() =>\n z.union([\n z.boolean(),\n z.string(),\n z.number(),\n z.record(z.string(), PropertySchema),\n ]),\n )\n .meta({\n id: 'WalkerOSPropertyType',\n title: 'WalkerOS.PropertyType',\n description:\n 'Base property value types (boolean, string, number, or nested Property record).',\n });\n\n/**\n * Property - PropertyType or array of PropertyType\n * Recursive structure allows nested objects and arrays\n */\nexport const PropertySchema: z.ZodTypeAny = z\n .lazy(() => z.union([PropertyTypeSchema, z.array(PropertyTypeSchema)]))\n .meta({\n id: 'WalkerOSProperty',\n title: 'WalkerOS.Property',\n description:\n 'PropertyType or an array of PropertyType. Recursive structure for nested objects and arrays.',\n });\n\n/**\n * Properties - Record of string keys to Property values\n * Used throughout event structure (data, globals, custom, etc.)\n */\nexport const PropertiesSchema = z\n .record(z.string(), PropertySchema.optional())\n .meta({\n id: 'WalkerOSProperties',\n title: 'WalkerOS.Properties',\n description: 'Flexible property collection with optional values.',\n })\n .describe('Flexible property collection with optional values');\n\n/**\n * OrderedProperties - Record with [value, order] tuples\n * Used for context data where order matters\n */\nexport const OrderedPropertiesSchema = z\n .record(z.string(), z.tuple([PropertySchema, z.number()]).optional())\n .meta({\n id: 'WalkerOSOrderedProperties',\n title: 'WalkerOS.OrderedProperties',\n description:\n 'Ordered properties with [value, order] tuples for priority control.',\n })\n .describe(\n 'Ordered properties with [value, order] tuples for priority control',\n );\n\n// ========================================\n// Enums & Union Types\n// ========================================\n\n/**\n * SourceType - Event source identifier\n * Standard types: web, server, app, other\n * Extensible: allows custom string values\n */\nexport const SourceTypeSchema = z\n .union([z.enum(['web', 'server', 'app', 'other']), z.string()])\n .meta({\n id: 'WalkerOSSourceType',\n title: 'WalkerOS.SourceType',\n description:\n 'Source type identifier. Standard: web, server, app, other. Extensible to custom strings.',\n })\n .describe('Source type: web, server, app, other, or custom');\n\n// ========================================\n// Event Sub-Types\n// ========================================\n\n/**\n * Consent - Consent state mapping\n * Maps consent group names to boolean states\n * Used in Event and Destination/Source configs\n */\nexport const ConsentSchema = z\n .record(z.string(), z.boolean())\n .meta({\n id: 'WalkerOSConsent',\n title: 'WalkerOS.Consent',\n description:\n 'Consent state mapping. Keys are consent groups (e.g. marketing, functional), values are booleans for granted/denied.',\n })\n .describe('Consent requirement mapping (group name to state)');\n\n/**\n * User - User identification and attributes\n * Extends Properties with specific optional fields\n * Contains IDs, demographics, device info, and location data\n */\nexport const UserSchema = PropertiesSchema.and(\n z.object({\n // IDs\n id: z.string().optional().describe('User identifier'),\n device: z.string().optional().describe('Device identifier'),\n session: z.string().optional().describe('Session identifier'),\n hash: z.string().optional().describe('Hashed identifier'),\n // User attributes\n address: z.string().optional().describe('User address'),\n email: z.string().email().optional().describe('User email address'),\n phone: z.string().optional().describe('User phone number'),\n // Technical attributes\n userAgent: z.string().optional().describe('Browser user agent string'),\n browser: z.string().optional().describe('Browser name'),\n browserVersion: z.string().optional().describe('Browser version'),\n deviceType: z\n .string()\n .optional()\n .describe('Device type (mobile, desktop, tablet)'),\n os: z.string().optional().describe('Operating system'),\n osVersion: z.string().optional().describe('Operating system version'),\n screenSize: z.string().optional().describe('Screen dimensions'),\n // Location attributes\n language: z.string().optional().describe('User language'),\n country: z.string().optional().describe('User country'),\n region: z.string().optional().describe('User region/state'),\n city: z.string().optional().describe('User city'),\n zip: z.string().optional().describe('User postal code'),\n timezone: z.string().optional().describe('User timezone'),\n ip: z.string().optional().describe('User IP address'),\n // Flags\n internal: z\n .boolean()\n .optional()\n .describe('Internal user flag (employee, test user)'),\n }),\n)\n .meta({\n id: 'WalkerOSUser',\n title: 'WalkerOS.User',\n description: 'User identification and attributes.',\n })\n .describe('User identification and properties');\n\n/**\n * Source - Event source information (v4)\n * Identifies where the event originated. The `type` field is the source kind\n * (browser, dataLayer, gtag, ...). All other fields are optional since each\n * source kind augments this differently via `SourceMap`.\n */\nexport const SourceSchema = PropertiesSchema.and(\n z.object({\n type: z.string().describe('Source kind (browser, dataLayer, gtag, ...)'),\n platform: z\n .string()\n .optional()\n .describe(\n 'Runtime platform (web, server, app, ios, android, terminal, ...)',\n ),\n version: z\n .string()\n .optional()\n .describe('Deployment version of the source emitter'),\n schema: z\n .string()\n .optional()\n .describe('Event model spec version (collector defaults to \"4\")'),\n count: z\n .number()\n .int()\n .nonnegative()\n .optional()\n .describe('Emission sequence per run'),\n trace: z.string().optional().describe('W3C traceparent full string'),\n url: z.string().optional(),\n referrer: z.string().optional(),\n tool: z.string().optional(),\n command: z.string().optional(),\n }),\n)\n .meta({\n id: 'WalkerOSSource',\n title: 'WalkerOS.Source',\n description: 'Event source information (origin of the event).',\n })\n .describe('Event source information');\n\n/**\n * Entity - Nested entity structure\n * Allows events to contain related entities with their own data and context\n * Recursive: entities can contain nested entities\n */\nexport const EntitySchema: z.ZodTypeAny = z\n .lazy(() =>\n z.object({\n entity: z.string().describe('Entity name'),\n data: PropertiesSchema.describe('Entity-specific properties'),\n nested: z\n .array(EntitySchema)\n .optional()\n .describe('Nested child entities'),\n context: OrderedPropertiesSchema.optional().describe(\n 'Entity context data',\n ),\n }),\n )\n .meta({\n id: 'WalkerOSEntity',\n title: 'WalkerOS.Entity',\n description: 'Nested entity structure with recursive nesting support.',\n })\n .describe('Nested entity structure with recursive nesting support');\n\n/**\n * Entities - Array of Entity objects\n */\nexport const EntitiesSchema = z\n .array(EntitySchema)\n .meta({\n id: 'WalkerOSEntities',\n title: 'WalkerOS.Entities',\n description: 'Array of nested entities.',\n })\n .describe('Array of nested entities');\n\n// ========================================\n// Main Event Schema\n// ========================================\n\n/**\n * Event - Complete walkerOS event structure\n *\n * Core fields:\n * - name: Event identifier in \"entity action\" format (e.g., \"page view\")\n * - data: Event-specific properties\n * - context: Ordered context properties\n * - globals: Global properties shared across events\n * - custom: Custom properties specific to implementation\n * - user: User identification and attributes\n * - nested: Related entities\n * - consent: Consent states at event time\n *\n * System-generated fields:\n * - id: Unique event identifier\n * - timestamp: Event creation time (milliseconds since epoch)\n * - entity: Parsed entity name from event.name\n * - action: Parsed action name from event.name\n * - trigger: Event trigger identifier\n * - timing: Event processing timing information\n * - group: Event grouping identifier\n * - count: Event count in session\n * - version: Walker version information\n * - source: Event source information\n */\nexport const EventSchema = z\n .object({\n // Core event identification\n name: z\n .string()\n .describe(\n 'Event name in \"entity action\" format (e.g., \"page view\", \"product add\")',\n ),\n\n // Event data\n data: PropertiesSchema.describe('Event-specific properties'),\n context: OrderedPropertiesSchema.describe(\n 'Ordered context properties with priorities',\n ),\n globals: PropertiesSchema.describe(\n 'Global properties shared across events',\n ),\n custom: PropertiesSchema.describe(\n 'Custom implementation-specific properties',\n ),\n\n // Related data\n user: UserSchema.describe('User identification and attributes'),\n nested: EntitiesSchema.describe('Related nested entities'),\n consent: ConsentSchema.describe('Consent states at event time'),\n\n // System-generated fields\n id: Identifier.describe('W3C span_id, 16 lowercase hex characters'),\n trigger: RequiredString.describe('Event trigger identifier'),\n entity: RequiredString.describe('Parsed entity from event name'),\n action: RequiredString.describe('Parsed action from event name'),\n timestamp: Timestamp.describe('Unix timestamp in milliseconds since epoch'),\n timing: RequiredNumber.describe('Event processing timing information'),\n\n // Source tracking (event-model spec version moved to source.schema)\n source: SourceSchema.describe('Event source information'),\n })\n .meta({\n id: 'WalkerOSEvent',\n title: 'WalkerOS.Event',\n description: 'Complete walkerOS event structure.',\n })\n .describe('Complete walkerOS event structure');\n\n/**\n * PartialEvent - Event with all fields optional\n * Used for event creation where not all fields are provided\n */\nexport const PartialEventSchema = EventSchema.partial()\n .meta({\n id: 'WalkerOSPartialEvent',\n title: 'WalkerOS.PartialEvent',\n description: 'Partial event structure with all fields optional.',\n })\n .describe('Partial event structure with all fields optional');\n\n/**\n * DeepPartialEvent - Event with all fields optional\n * Used for event updates and patches\n *\n * Note: While the TypeScript type uses DeepPartial<Event> for compile-time validation,\n * the Zod schema uses .partial() which makes top-level fields optional. This is\n * sufficient for runtime validation as deeply nested partial objects are rarely\n * provided (users typically omit entire objects rather than providing partial nested data).\n * Zod 4 deliberately removed .deepPartial() due to internal type complexity issues.\n */\nexport const DeepPartialEventSchema: z.ZodTypeAny = EventSchema.partial()\n .meta({\n id: 'WalkerOSDeepPartialEvent',\n title: 'WalkerOS.DeepPartialEvent',\n description: 'Partial event structure with all top-level fields optional.',\n })\n .describe('Partial event structure with all top-level fields optional');\n\n// ========================================\n// JSON Schema Exports (for Explorer/RJSF/MCP)\n// ========================================\n\nexport const eventJsonSchema = toJsonSchema(EventSchema, 'Event');\n\nexport const partialEventJsonSchema = toJsonSchema(\n PartialEventSchema,\n 'PartialEvent',\n);\n\nexport const userJsonSchema = toJsonSchema(UserSchema, 'User');\n\nexport const propertiesJsonSchema = toJsonSchema(\n PropertiesSchema,\n 'Properties',\n);\n\nexport const orderedPropertiesJsonSchema = toJsonSchema(\n OrderedPropertiesSchema,\n 'OrderedProperties',\n);\n\nexport const entityJsonSchema = toJsonSchema(EntitySchema, 'Entity');\n\nexport const sourceTypeJsonSchema = toJsonSchema(\n SourceTypeSchema,\n 'SourceType',\n);\n\nexport const consentJsonSchema = toJsonSchema(ConsentSchema, 'Consent');\n","import { z, toJsonSchema } from './validation';\nimport { ConsentSchema } from './walkeros';\n\n/**\n * Mapping System Schemas\n *\n * Mirrors: types/mapping.ts\n * Purpose: Runtime validation and JSON Schema generation for event transformation rules\n *\n * The mapping system allows flexible transformation of events as they flow through\n * the collector to destinations. This includes:\n * - Value extraction and transformation\n * - Conditional logic\n * - Data mapping and restructuring\n * - Array processing (loops)\n * - Consent-based filtering\n *\n * Key Features:\n * - Recursive value definitions (Value → ValueConfig → Value)\n * - Loop vs Set distinction via JSON Schema (minItems/maxItems)\n * - Lazy evaluation for circular dependencies\n * - Function serialization support (functions as strings)\n */\n\n// ========================================\n// Recursive Value Schemas\n// ========================================\n\n// Forward declaration for circular dependency\nlet ValueConfigSchemaLazy: z.ZodTypeAny;\n\n/**\n * Value - Core value type for mapping transformations\n *\n * Can be:\n * - Primitive: string, number, boolean\n * - ValueConfig: Complex transformation object\n * - Array: Multiple values/configs\n *\n * Recursive structure allows nested transformations\n */\nexport const ValueSchema: z.ZodTypeAny = z\n .lazy(() =>\n z.union([\n z.string().describe('String value or property path (e.g., \"data.id\")'),\n z.number().describe('Numeric value'),\n z.boolean().describe('Boolean value'),\n z.lazy(() => ValueConfigSchemaLazy),\n z.array(ValueSchema).describe('Array of values'),\n ]),\n )\n .meta({\n id: 'MappingValue',\n title: 'Mapping.Value',\n description:\n 'Polymorphic transform primitive used in every mapping field. A string path, constant, operator object (map/loop/set/condition/consent), or array of values.',\n });\n\n/**\n * Values - Array of Value objects\n * Used for multiple data transformations\n */\nexport const ValuesSchema = z\n .array(ValueSchema)\n .meta({\n id: 'MappingValues',\n title: 'Mapping.Values',\n description: 'Array of transformation values.',\n })\n .describe('Array of transformation values');\n\n/**\n * Loop - Tuple for array processing\n * Format: [source, transform]\n *\n * IMPORTANT: z.tuple() generates JSON Schema with minItems/maxItems = 2\n * This is how Explorer distinguishes Loop from Set\n *\n * Example: ['nested', { map: { id: 'data.id' } }]\n * Means: Iterate over event.nested array, transform each item\n */\nconst LoopSchema: z.ZodTypeAny = z\n .lazy(() =>\n z\n .tuple([ValueSchema, ValueSchema])\n .describe(\n 'Loop transformation: [source, transform] tuple for array processing',\n ),\n )\n .meta({\n id: 'MappingLoop',\n title: 'Mapping.Loop',\n description:\n 'Loop tuple [source, transform] for iterating and transforming arrays.',\n });\n\n/**\n * Set - Array of values for selection/combination\n * Format: [value1, value2, ...]\n *\n * IMPORTANT: z.array() generates JSON Schema without minItems/maxItems\n * This distinguishes Set from Loop\n *\n * Example: ['data.firstName', ' ', 'data.lastName']\n * Means: Combine multiple values\n */\nconst SetSchema: z.ZodTypeAny = z\n .lazy(() =>\n z\n .array(ValueSchema)\n .describe('Set: Array of values for selection or combination'),\n )\n .meta({\n id: 'MappingSet',\n title: 'Mapping.Set',\n description: 'Set: array of values for selection or combination.',\n });\n\n/**\n * Map - Object mapping for data transformation\n * Format: { outputKey: value, ... }\n *\n * Example: { item_id: 'data.id', item_name: 'data.name' }\n * Means: Transform event data to destination format\n */\nconst MapSchema: z.ZodTypeAny = z\n .lazy(() =>\n z\n .record(z.string(), ValueSchema)\n .describe('Map: Object mapping keys to transformation values'),\n )\n .meta({\n id: 'MappingMap',\n title: 'Mapping.Map',\n description: 'Map: object mapping keys to transformation values.',\n });\n\n/**\n * ValueConfig - Configuration object for value transformations\n *\n * Supports multiple transformation strategies:\n * - key: Extract property from event (e.g., \"data.id\")\n * - value: Static primitive value\n * - fn: Custom transformation function (as string)\n * - map: Object mapping for structured output\n * - loop: Array iteration and transformation\n * - set: Value combination/selection\n * - consent: Consent-based filtering\n * - condition: Conditional transformation\n * - validate: Value validation\n *\n * At least one property must be present.\n */\nValueConfigSchemaLazy = z\n .object({\n key: z\n .string()\n .optional()\n .describe(\n 'Property path to extract from event (e.g., \"data.id\", \"user.email\")',\n ),\n value: z\n .union([z.string(), z.number(), z.boolean()])\n .optional()\n .describe('Static primitive value'),\n fn: z\n .string()\n .optional()\n .describe('Custom transformation function as string (serialized)'),\n map: MapSchema.optional().describe(\n 'Object mapping: transform event data to structured output',\n ),\n loop: LoopSchema.optional().describe(\n 'Loop transformation: [source, transform] for array processing',\n ),\n set: SetSchema.optional().describe(\n 'Set of values: combine or select from multiple values',\n ),\n consent: ConsentSchema.optional().describe(\n 'Required consent states to include this value',\n ),\n condition: z\n .string()\n .optional()\n .describe('Condition function as string: return true to include value'),\n validate: z\n .string()\n .optional()\n .describe('Validation function as string: return true if value is valid'),\n })\n .refine((data) => Object.keys(data).length > 0, {\n message: 'ValueConfig must have at least one property',\n })\n .meta({\n id: 'MappingValueConfig',\n title: 'Mapping.ValueConfig',\n description:\n 'Object-form value transformation with map/loop/set/condition/consent etc.',\n })\n .describe('Value transformation configuration with multiple strategies');\n\n// Export with original name for backward compatibility\nexport const ValueConfigSchema = ValueConfigSchemaLazy;\n\n// Re-export for use in other schemas\nexport { LoopSchema, SetSchema, MapSchema };\n\n// ========================================\n// Policy Schema\n// ========================================\n\n/**\n * Policy - Pre-processing rules\n * Applied before event mapping\n * Maps policy keys to transformation values\n *\n * Example: { 'consent.marketing': true }\n * Means: Only process events with marketing consent\n */\nexport const PolicySchema = z\n .record(z.string(), ValueSchema)\n .meta({\n id: 'MappingPolicy',\n title: 'Mapping.Policy',\n description:\n 'Policy rules for event pre-processing (key → value transformation).',\n })\n .describe('Policy rules for event pre-processing (key → value mapping)');\n\n// ========================================\n// Mapping Rule Schemas\n// ========================================\n\n/**\n * Rule - Event-specific mapping configuration\n *\n * Defines how to transform events for a specific entity-action combination\n * Can include:\n * - Batching configuration\n * - Conditional processing\n * - Consent requirements\n * - Custom settings\n * - Data transformation\n * - Event naming\n * - Policy overrides\n */\nexport const RuleSchema = z\n .object({\n name: z\n .string()\n .optional()\n .describe(\n 'Custom event name override (e.g., \"view_item\" for \"product view\")',\n ),\n data: z\n .union([ValueSchema, ValuesSchema])\n .optional()\n .describe('Data transformation rules for event'),\n settings: z\n .any()\n .optional()\n .describe('Destination-specific settings for this event mapping'),\n condition: z\n .string()\n .optional()\n .describe('Condition function as string: return true to process event'),\n consent: ConsentSchema.optional().describe(\n 'Required consent states to process this event',\n ),\n policy: PolicySchema.optional().describe(\n 'Event-level policy overrides (applied after config-level policy)',\n ),\n batch: z\n .number()\n .optional()\n .describe('Batch size: bundle N events for batch processing'),\n // Note: batchFn and batched are runtime functions, not serializable\n include: z\n .array(z.string())\n .optional()\n .describe(\n 'Event sections (e.g. [\"context\", \"globals\"]) flattened into context.data',\n ),\n ignore: z\n .boolean()\n .optional()\n .describe(\n 'Skip the event entirely. No push, no side effects. Use for suppression.',\n ),\n silent: z\n .boolean()\n .optional()\n .describe(\n 'Run side effects (settings.identify, ...) but suppress the destination default push call.',\n ),\n })\n .meta({\n id: 'MappingRule',\n title: 'Mapping.Rule',\n description:\n 'Configuration for transforming a single event at one stage of the flow (source or destination).',\n })\n .describe('Mapping rule for specific entity-action combination');\n\n/**\n * Rules - Nested mapping rules structure\n * Format: { entity: { action: Rule | Rule[], ... }, ... }\n *\n * Supports:\n * - Specific entity-action mappings\n * - Wildcard patterns (entity: *, action: *)\n * - Multiple rules per entity-action (array)\n *\n * Example:\n * {\n * product: {\n * view: { name: 'view_item' },\n * add: { name: 'add_to_cart' }\n * },\n * page: {\n * '*': { name: 'page_interaction' }\n * }\n * }\n */\nexport const RulesSchema = z\n .record(\n z.string(),\n z.record(z.string(), z.union([RuleSchema, z.array(RuleSchema)])).optional(),\n )\n .meta({\n id: 'MappingRules',\n title: 'Mapping.Rules',\n description:\n 'Event mapping rules tree: entity → action → Rule (or Rule[]). Use \"*\" as wildcard for entity or action.',\n })\n .describe(\n 'Event mapping rules: entity → action → Rule. Keys match event name split by space. Use \"*\" as wildcard for entity or action. Priority: exact > entity wildcard > action wildcard > global wildcard (*→*).',\n );\n\n/**\n * Config - Shared mapping configuration\n * Used by both Source.Config and Destination.Config\n *\n * Provides:\n * - Consent requirements\n * - Global data transformations\n * - Entity-action mapping rules\n * - Pre-processing policies\n */\nexport const ConfigSchema = z\n .object({\n consent: ConsentSchema.optional().describe(\n 'Required consent states to process any events',\n ),\n data: z\n .union([ValueSchema, ValuesSchema])\n .optional()\n .describe('Global data transformation applied to all events'),\n include: z\n .array(z.string())\n .optional()\n .describe('Event sections to flatten into context.data'),\n mapping: RulesSchema.optional().describe(\n 'Entity-action specific mapping rules',\n ),\n policy: PolicySchema.optional().describe(\n 'Pre-processing policy rules applied before mapping',\n ),\n })\n .meta({\n id: 'MappingConfig',\n title: 'Mapping.Config',\n description:\n 'Shared mapping configuration (consent, data, include, mapping, policy).',\n })\n .describe('Shared mapping configuration for sources and destinations');\n\n/**\n * Result - Mapping resolution result\n * Contains the resolved mapping rule and key used\n */\nexport const ResultSchema = z\n .object({\n eventMapping: RuleSchema.optional().describe(\n 'Resolved mapping rule for event',\n ),\n mappingKey: z\n .string()\n .optional()\n .describe('Mapping key used (e.g., \"product.view\")'),\n })\n .meta({\n id: 'MappingResult',\n title: 'Mapping.Result',\n description: 'Mapping resolution result (matched rule + key).',\n })\n .describe('Mapping resolution result');\n\n// ========================================\n// JSON Schema Exports (for Explorer/RJSF/MCP)\n// ========================================\n\nexport const valueJsonSchema = toJsonSchema(ValueSchema, 'Value');\n\nexport const valueConfigJsonSchema = toJsonSchema(\n ValueConfigSchema,\n 'ValueConfig',\n);\n\nexport const loopJsonSchema = toJsonSchema(LoopSchema, 'Loop');\n\nexport const setJsonSchema = toJsonSchema(SetSchema, 'Set');\n\nexport const mapJsonSchema = toJsonSchema(MapSchema, 'Map');\n\nexport const policyJsonSchema = toJsonSchema(PolicySchema, 'Policy');\n\nexport const ruleJsonSchema = toJsonSchema(RuleSchema, 'Rule');\n\nexport const rulesJsonSchema = toJsonSchema(RulesSchema, 'Rules');\n\nexport const configJsonSchema = toJsonSchema(ConfigSchema, 'MappingConfig');\n","import { z, toJsonSchema } from './validation';\nimport { ConsentSchema, EventSchema } from './walkeros';\nimport {\n ValueSchema,\n ValuesSchema,\n RuleSchema,\n RulesSchema,\n PolicySchema,\n} from './mapping';\nimport { Identifier } from './primitives';\nimport { RoutableNextSchema } from './matcher';\nimport { CacheSchema } from './cache';\nimport { LoggerConfigSchema } from './logger';\n\n/**\n * Destination Schemas\n *\n * Mirrors: types/destination.ts\n * Purpose: Runtime validation and JSON Schema generation for destination configurations\n *\n * Destinations are the endpoints where processed events are sent (analytics tools,\n * marketing platforms, data warehouses, etc.). This file defines schemas for:\n * - Destination configuration\n * - Type bundles for generic constraints\n * - Push contexts\n * - Batching structures\n */\n\n// ========================================\n// Configuration Schemas\n// ========================================\n\n/**\n * Config - Destination configuration\n *\n * Defines how a destination processes events:\n * - Consent requirements\n * - Settings (destination-specific)\n * - Data transformations\n * - Environment dependencies\n * - Initialization options\n * - Mapping rules\n * - Processing policies\n * - Queueing behavior\n * - Logging verbosity\n * - Error/log handlers\n *\n * Generic note: settings, env, and mapping can have destination-specific types\n * but for schema validation we use z.unknown() to allow flexibility\n */\nexport const ConfigSchema = z\n .object({\n consent: ConsentSchema.optional().describe(\n 'Required consent states to send events to this destination',\n ),\n settings: z\n .any()\n .meta({\n id: 'DestinationSettings',\n title: 'Destination.Settings',\n description:\n 'Implementation-specific configuration (destination-defined shape).',\n })\n .describe('Implementation-specific configuration')\n .optional(),\n data: z\n .union([ValueSchema, ValuesSchema])\n .optional()\n .describe(\n 'Global data transformation applied to all events for this destination',\n ),\n include: z\n .array(z.string())\n .optional()\n .describe('Event sections to flatten into context.data'),\n env: z\n .any()\n .meta({\n id: 'DestinationEnv',\n title: 'Destination.Env',\n description:\n 'Environment dependencies (destination-defined shape) — platform, SDK, or mock hook.',\n })\n .describe('Environment dependencies (platform-specific)')\n .optional(),\n id: Identifier.describe(\n 'Destination instance identifier (defaults to destination key)',\n ).optional(),\n init: z.boolean().describe('Whether to initialize immediately').optional(),\n loadScript: z\n .boolean()\n .describe('Whether to load external script (for web destinations)')\n .optional(),\n mapping: RulesSchema.optional().describe(\n 'Entity-action specific mapping rules for this destination',\n ),\n policy: PolicySchema.optional().describe(\n 'Pre-processing policy rules applied before event mapping',\n ),\n queue: z\n .boolean()\n .describe('Whether to queue events when consent is not granted')\n .optional(),\n require: z\n .array(z.string())\n .optional()\n .describe(\n 'Defer destination initialization until these collector events fire (e.g., [\"consent\"])',\n ),\n logger: LoggerConfigSchema.optional().describe(\n 'Logger configuration (level, handler) to override the collector defaults',\n ),\n before: RoutableNextSchema.optional().describe(\n 'Post-collector transformer chain applied before this destination receives the event',\n ),\n next: RoutableNextSchema.optional().describe(\n 'Post-push transformer chain. Runs after destination push completes; push response is available at ingest._response',\n ),\n cache: CacheSchema.optional().describe(\n 'Cache configuration for deduplication; skip push on cache HIT',\n ),\n disabled: z\n .boolean()\n .describe('Completely skip this destination (no init, no push, no queue)')\n .optional(),\n mock: z\n .unknown()\n .meta({\n id: 'DestinationMock',\n title: 'Destination.Mock',\n description:\n 'Return this value instead of calling push(). Dev/testing only.',\n })\n .optional()\n .describe(\n 'Return this value instead of calling push(). Dev/testing only.',\n ),\n })\n .meta({\n id: 'DestinationConfig',\n title: 'Destination.Config',\n description:\n 'Destination configuration: consent, settings, data, env, mapping rules, policy, queue, logger, before/next chains, cache.',\n })\n .describe('Destination configuration');\n\n/**\n * PartialConfig - Config with all fields optional\n * Used for config updates and overrides\n *\n * Note: All fields in ConfigSchema are already optional (.optional() on each field).\n * Using .partial() ensures the schema itself makes all fields optional at the type level.\n */\nexport const PartialConfigSchema = ConfigSchema.partial()\n .meta({\n id: 'DestinationPartialConfig',\n title: 'Destination.PartialConfig',\n description: 'Partial destination configuration with all fields optional.',\n })\n .describe('Partial destination configuration with all fields optional');\n\n/**\n * Policy - Processing policy rules\n * Maps policy keys to transformation values\n * Applied before event mapping\n */\nexport const DestinationPolicySchema = PolicySchema.describe(\n 'Destination policy rules for event pre-processing',\n);\n// Note: DestinationPolicySchema is an alias of MappingPolicySchema;\n// it intentionally shares the Mapping.Policy id/title via the underlying schema.\n\n// ========================================\n// Context Schemas\n// ========================================\n\n/**\n * Context - Base destination context\n * Passed to init and push functions\n * Contains collector instance, config, data, and environment\n *\n * Note: collector is runtime instance, not easily serializable\n */\nexport const ContextSchema = z\n .object({\n collector: z\n .unknown()\n .meta({\n id: 'DestinationContextCollector',\n title: 'Collector.Instance',\n description:\n 'Collector instance handed to the destination (runtime object).',\n })\n .describe('Collector instance (runtime object)'),\n config: ConfigSchema.describe('Destination configuration'),\n data: z\n .union([\n z.unknown(), // WalkerOS.Property\n z.array(z.unknown()),\n ])\n .optional()\n .describe('Transformed event data'),\n env: z\n .unknown()\n .meta({\n id: 'DestinationContextEnv',\n title: 'Destination.Env',\n description: 'Environment dependencies (destination-defined shape).',\n })\n .describe('Environment dependencies'),\n })\n .meta({\n id: 'DestinationContext',\n title: 'Destination.Context',\n description: 'Destination context passed to init and push functions.',\n })\n .describe('Destination context for init and push functions');\n\n/**\n * PushContext - Context for push function\n * Extends Context with mapping rule information\n */\nexport const PushContextSchema = ContextSchema.extend({\n mapping: RuleSchema.optional().describe(\n 'Resolved mapping rule for this specific event',\n ),\n})\n .meta({\n id: 'DestinationPushContext',\n title: 'Destination.PushContext',\n description:\n 'Destination context for push() with the resolved event mapping rule.',\n })\n .describe('Push context with event-specific mapping');\n\n/**\n * PushBatchContext - Context for pushBatch function\n * Same as PushContext but for batch processing\n */\nexport const PushBatchContextSchema = PushContextSchema.describe(\n 'Batch push context with event-specific mapping',\n);\n// Note: PushBatchContextSchema is the same shape as PushContextSchema; it\n// shares the Destination.PushContext id via the underlying schema.\n\n// ========================================\n// Batch Processing Schemas\n// ========================================\n\n/**\n * PushEvent - Single event with mapping in a batch\n */\nexport const PushEventSchema = z\n .object({\n event: EventSchema.describe('The event to process'),\n mapping: RuleSchema.optional().describe('Mapping rule for this event'),\n })\n .meta({\n id: 'DestinationPushEvent',\n title: 'Destination.PushEvent',\n description:\n 'Single event paired with its resolved mapping rule (batch element).',\n })\n .describe('Event with optional mapping for batch processing');\n\n/**\n * PushEvents - Array of PushEvent\n */\nexport const PushEventsSchema = z\n .array(PushEventSchema)\n .meta({\n id: 'DestinationPushEvents',\n title: 'Destination.PushEvents',\n description: 'Array of events with mappings (batch input).',\n })\n .describe('Array of events with mappings');\n\n/**\n * Batch - Batched events for processing\n * Groups events by mapping key for efficient batch sends\n */\nexport const BatchSchema = z\n .object({\n key: z\n .string()\n .describe('Batch key (usually mapping key like \"product.view\")'),\n events: z.array(EventSchema).describe('Array of events in batch'),\n data: z\n .array(\n z\n .union([\n z.unknown(), // WalkerOS.Property\n z.array(z.unknown()),\n ])\n .optional(),\n )\n .describe('Transformed data for each event'),\n mapping: RuleSchema.optional().describe('Shared mapping rule for batch'),\n })\n .meta({\n id: 'DestinationBatch',\n title: 'Destination.Batch',\n description: 'Batch of events grouped by mapping key for batch delivery.',\n })\n .describe('Batch of events grouped by mapping key');\n\n/**\n * Data - Transformed event data types\n * Can be single property, undefined, or array of properties\n */\nexport const DataSchema = z\n .union([\n z.unknown(), // WalkerOS.Property\n z.array(z.unknown()),\n ])\n .meta({\n id: 'DestinationData',\n title: 'Destination.Data',\n description:\n 'Transformed event data delivered to the destination (Property, undefined, or array).',\n })\n .optional()\n .describe('Transformed event data (Property, undefined, or array)');\n\n// ========================================\n// Instance Schemas\n// ========================================\n\n/**\n * Instance - Destination instance (runtime object)\n *\n * Note: This schema is primarily for documentation\n * Runtime functions (init, push, pushBatch) cannot be validated\n * Use z.unknown() for function fields\n */\nexport const InstanceSchema = z\n .object({\n config: ConfigSchema.describe('Destination configuration'),\n queue: z\n .array(EventSchema)\n .optional()\n .describe('Queued events awaiting consent'),\n dlq: z\n .array(z.tuple([EventSchema, z.unknown()]))\n .optional()\n .describe('Dead letter queue (failed events with errors)'),\n type: z.string().optional().describe('Destination type identifier'),\n env: z.unknown().optional().describe('Environment dependencies'),\n // Functions - not validated, use z.unknown()\n init: z.unknown().optional().describe('Initialization function'),\n push: z.unknown().describe('Push function for single events'),\n pushBatch: z.unknown().optional().describe('Batch push function'),\n on: z.unknown().optional().describe('Event lifecycle hook function'),\n })\n .meta({\n id: 'DestinationInstance',\n title: 'Destination.Instance',\n description:\n 'Destination instance (runtime object with init/push/pushBatch/on).',\n })\n .describe('Destination instance (runtime object with functions)');\n\n/**\n * Init - Initialization config\n * Contains destination code and configuration\n */\nexport const InitSchema = z\n .object({\n code: InstanceSchema.describe('Destination instance with implementation'),\n config: PartialConfigSchema.optional().describe(\n 'Partial configuration overrides',\n ),\n env: z.unknown().optional().describe('Partial environment overrides'),\n })\n .meta({\n id: 'DestinationInit',\n title: 'Destination.Init',\n description:\n 'Destination initialization bundle (instance code + config + env).',\n })\n .describe('Destination initialization configuration');\n\n/**\n * InitDestinations - Map of destination IDs to Init configs\n */\nexport const InitDestinationsSchema = z\n .record(z.string(), InitSchema)\n .meta({\n id: 'DestinationInitDestinations',\n title: 'Destination.InitDestinations',\n description: 'Map of destination IDs to initialization configurations.',\n })\n .describe('Map of destination IDs to initialization configurations');\n\n/**\n * Destinations - Map of destination IDs to instances\n */\nexport const DestinationsSchema = z\n .record(z.string(), InstanceSchema)\n .meta({\n id: 'DestinationDestinations',\n title: 'Destination.Destinations',\n description: 'Map of destination IDs to runtime destination instances.',\n })\n .describe('Map of destination IDs to runtime instances');\n\n// ========================================\n// Result Schemas\n// ========================================\n\n/**\n * Ref - Destination reference\n * Contains destination type and optional response data or error\n */\nexport const RefSchema = z\n .object({\n type: z.string().describe('Destination type (\"gtag\", \"meta\", \"bigquery\")'),\n data: z.unknown().optional().describe('Response from push()'),\n error: z.unknown().optional().describe('Error if failed'),\n })\n .meta({\n id: 'DestinationRef',\n title: 'Destination.Ref',\n description:\n 'Reference to a destination outcome (type + response data or error).',\n })\n .describe('Destination reference with type and response data');\n\n/**\n * Push - Push operation result\n */\nexport const PushResultSchema = z\n .object({\n queue: z\n .array(EventSchema)\n .optional()\n .describe('Events queued (awaiting consent)'),\n error: z.unknown().optional().describe('Error if push failed'),\n })\n .meta({\n id: 'DestinationPushResult',\n title: 'Destination.PushResult',\n description:\n 'Result of a single destination push (queued events, optional error).',\n })\n .describe('Push operation result');\n\n/**\n * Result - Overall processing result\n * Note: This type has been removed from types/destination.ts\n * Results are now part of Elb.PushResult with Record<string, Ref> structure\n */\nexport const ResultSchema = z\n .object({\n ok: z.boolean().describe('True if nothing failed'),\n event: z.unknown().optional().describe('The processed event'),\n done: z\n .record(z.string(), RefSchema)\n .optional()\n .describe('Destinations that processed successfully'),\n queued: z\n .record(z.string(), RefSchema)\n .optional()\n .describe('Destinations that queued events'),\n failed: z\n .record(z.string(), RefSchema)\n .optional()\n .describe('Destinations that failed to process'),\n })\n .meta({\n id: 'DestinationResult',\n title: 'Destination.Result',\n description:\n 'Overall push result aggregated across all destinations (done/queued/failed maps).',\n })\n .describe('Push result with destination outcomes');\n\n/**\n * DLQ - Dead Letter Queue\n * Array of failed events with their errors\n */\nexport const DLQSchema = z\n .array(z.tuple([EventSchema, z.unknown()]))\n .meta({\n id: 'DestinationDLQ',\n title: 'Destination.DLQ',\n description: 'Dead-letter queue: list of [event, error] tuples.',\n })\n .describe('Dead letter queue: [(event, error), ...]');\n\n// ========================================\n// JSON Schema Exports (for Explorer/RJSF/MCP)\n// ========================================\n\nexport const configJsonSchema = toJsonSchema(ConfigSchema, 'DestinationConfig');\n\nexport const partialConfigJsonSchema = toJsonSchema(\n PartialConfigSchema,\n 'PartialDestinationConfig',\n);\n\nexport const contextJsonSchema = toJsonSchema(\n ContextSchema,\n 'DestinationContext',\n);\n\nexport const pushContextJsonSchema = toJsonSchema(\n PushContextSchema,\n 'PushContext',\n);\n\nexport const batchJsonSchema = toJsonSchema(BatchSchema, 'Batch');\n\nexport const instanceJsonSchema = toJsonSchema(\n InstanceSchema,\n 'DestinationInstance',\n);\n\nexport const resultJsonSchema = toJsonSchema(ResultSchema, 'DestinationResult');\n","import { z } from './validation';\n\nconst MatchOperatorSchema = z\n .enum(['eq', 'contains', 'prefix', 'suffix', 'regex', 'gt', 'lt', 'exists'])\n .meta({\n id: 'MatcherOperator',\n title: 'Matcher.Operator',\n description: 'Supported operators for a match condition.',\n });\n\nconst MatchConditionSchema = z\n .object({\n key: z.string(),\n operator: MatchOperatorSchema,\n value: z.string(),\n not: z.boolean().optional(),\n })\n .meta({\n id: 'MatcherCondition',\n title: 'Matcher.Condition',\n description: 'Single match condition (key, operator, value, optional not).',\n });\n\nexport const MatchExpressionSchema: z.ZodType = z\n .union([\n MatchConditionSchema,\n z.object({ and: z.array(z.lazy(() => MatchExpressionSchema)) }),\n z.object({ or: z.array(z.lazy(() => MatchExpressionSchema)) }),\n ])\n .meta({\n id: 'MatcherExpression',\n title: 'Matcher.Expression',\n description: 'Boolean expression tree of match conditions (leaf, and, or).',\n });\n\nconst MatchOrWildcard = z.union([MatchExpressionSchema, z.literal('*')]);\n\n// Recursive: NextRule.next is itself a RoutableNext\nexport const RoutableNextSchema: z.ZodType = z\n .union([\n z.string(),\n z.array(z.string()),\n z.array(\n z.object({\n match: MatchOrWildcard,\n next: z.lazy(() => RoutableNextSchema),\n }),\n ),\n ])\n .meta({\n id: 'MatcherNext',\n title: 'Matcher.Next',\n description:\n 'Routable next target: ID, ID list, or list of {match, next} rules.',\n });\n\nexport const NextRuleSchema = z\n .object({\n match: MatchOrWildcard,\n next: z.lazy(() => RoutableNextSchema),\n })\n .meta({\n id: 'MatcherNextRule',\n title: 'Matcher.NextRule',\n description:\n 'Single routing rule pairing a match expression with a next target.',\n });\n","import { z } from './validation';\nimport { MatchExpressionSchema } from './matcher';\nimport { ValueSchema } from './mapping';\n\n// ========================================\n// Cache Rule Schema\n// ========================================\n\n/**\n * CacheRule — a single caching rule for a pipeline step.\n *\n * Mirrors: types/cache.ts → CacheRule\n *\n * - match: MatchExpression or '*' wildcard\n * - key: array of dot-path strings used to build the cache key\n * - ttl: time-to-live in seconds (must be positive)\n * - update: optional record of response mutations applied on cache hit\n */\nexport const CacheRuleSchema = z\n .object({\n match: z\n .union([MatchExpressionSchema, z.literal('*')])\n .describe(\n 'Match expression or wildcard to determine when this rule applies',\n ),\n key: z\n .array(z.string())\n .min(1)\n .describe('Dot-path fields used to build the cache key'),\n ttl: z\n .number()\n .positive()\n .describe('Time-to-live in seconds for cached entries'),\n update: z\n .record(z.string(), ValueSchema)\n .optional()\n .describe(\n 'Response mutations applied on cache hit (key → Value mapping)',\n ),\n })\n .meta({\n id: 'CacheRule',\n title: 'Cache.Rule',\n description:\n 'Single caching rule: when it applies (match), what keys it keys off, TTL, and optional response mutations on hit.',\n });\n\n// ========================================\n// Cache Schema\n// ========================================\n\n/**\n * Cache — top-level cache configuration for a pipeline step.\n *\n * Mirrors: types/cache.ts → Cache\n *\n * - store: optional store ID for persistent caching ($store.storeId wiring)\n * - rules: at least one CacheRule is required\n */\nexport const CacheSchema = z\n .object({\n full: z\n .boolean()\n .optional()\n .describe(\n 'Stop flow on cache HIT (default: false). When true, skip remaining steps and return cached value.',\n ),\n store: z\n .string()\n .optional()\n .describe(\n 'Store ID for persistent caching (references a configured store)',\n ),\n rules: z\n .array(CacheRuleSchema)\n .min(1)\n .describe('Cache rules — at least one required'),\n })\n .meta({\n id: 'CacheConfig',\n title: 'Cache.Config',\n description:\n 'Top-level cache configuration for a pipeline step (destination / transformer / source ref).',\n });\n","import { z } from './validation';\n\n/**\n * Logger schemas\n *\n * Mirrors: types/handler.ts (Logger namespace)\n * Purpose: Canonical schemas for logger configuration used across\n * destination / source / transformer / store / collector configs.\n *\n * Extracted from five duplicated inline `logger: z.object({...})` blocks\n * to satisfy the DRY principle and provide a single canonical `Logger.Config`\n * title in the generated JSON Schema output.\n */\n\n/**\n * LoggerHandlerSchema - Custom log handler function\n *\n * Kept as `z.any()` because function-signature enforcement belongs in the\n * TypeScript layer; the Zod schema only needs to be nameable in JSON Schema.\n */\nexport const LoggerHandlerSchema = z.any().meta({\n id: 'LoggerHandler',\n title: 'Logger.Handler',\n description: 'Custom log handler function (level, ...args) => void',\n});\n\n/**\n * LoggerConfigSchema - Logger configuration\n *\n * Allows components to override the collector-default logger by providing a\n * minimum log level and / or a custom handler.\n */\nexport const LoggerConfigSchema = z\n .object({\n level: z\n .union([z.number(), z.enum(['ERROR', 'WARN', 'INFO', 'DEBUG'])])\n .optional()\n .describe('Minimum log level (default: ERROR)'),\n handler: LoggerHandlerSchema.optional().describe(\n 'Custom log handler function',\n ),\n })\n .meta({\n id: 'LoggerConfig',\n title: 'Logger.Config',\n description:\n 'Logger configuration (level, handler) to override the collector defaults',\n });\n","import { z, toJsonSchema } from './validation';\nimport {\n ConsentSchema,\n UserSchema,\n PropertiesSchema,\n EventSchema,\n} from './walkeros';\nimport { ConfigSchema as MappingConfigSchema } from './mapping';\nimport { Identifier, Timestamp, Counter } from './primitives';\nimport { LoggerConfigSchema } from './logger';\n\n/**\n * Collector Schemas\n *\n * Mirrors: types/collector.ts\n * Purpose: Runtime validation and JSON Schema generation for collector configurations\n *\n * The collector is the central event processing engine in walkerOS:\n * - Receives events from sources\n * - Processes events with consent and context\n * - Routes events to destinations\n * - Manages session state and globals\n * - Handles lifecycle hooks\n *\n * This file defines schemas for collector configuration, commands, and state management.\n */\n\n// ========================================\n// Command Type Schema\n// ========================================\n\n/**\n * CommandType - Walker command identifiers\n *\n * Standard commands:\n * - action: TODO - need documentation\n * - config: Update collector configuration\n * - consent: Update consent state\n * - context: TODO - need documentation\n * - destination: Add/update destination\n * - elb: TODO - need documentation\n * - globals: Update global properties\n * - hook: Register lifecycle hook\n * - init: Initialize collector\n * - link: TODO - need documentation\n * - run: Start/restart collector with state\n * - user: Update user data\n * - walker: TODO - need documentation\n *\n * Extensible: allows custom command strings\n */\nexport const CommandTypeSchema = z\n .union([\n z.enum([\n 'action',\n 'config',\n 'consent',\n 'context',\n 'destination',\n 'elb',\n 'globals',\n 'hook',\n 'init',\n 'link',\n 'run',\n 'user',\n 'walker',\n ]),\n z.string(), // Allow custom commands\n ])\n .meta({\n id: 'CollectorCommandType',\n title: 'Collector.CommandType',\n description:\n 'Collector command type identifier (standard or extension string).',\n })\n .describe(\n 'Collector command type: standard commands or custom string for extensions',\n );\n\n// ========================================\n// Configuration Schemas\n// ========================================\n\n/**\n * Config - Core collector configuration\n *\n * Controls collector behavior:\n * - run: Auto-run on initialization\n * - globalsStatic: Static globals (persist across runs)\n * - sessionStatic: Static session data (persist across runs)\n * - verbose: Enable verbose logging\n * - onError: Error handler\n * - onLog: Log handler\n */\nexport const ConfigSchema = z\n .object({\n run: z\n .boolean()\n .describe('Whether to run collector automatically on initialization')\n .optional(),\n globalsStatic: PropertiesSchema.describe(\n 'Static global properties that persist across collector runs',\n ),\n sessionStatic: z\n .record(z.string(), z.unknown())\n .meta({\n id: 'CollectorSessionStatic',\n title: 'Collector.SessionStatic',\n description: 'Static session data that persists across collector runs.',\n })\n .describe('Static session data that persists across collector runs'),\n logger: LoggerConfigSchema.optional().describe(\n 'Logger configuration (level, handler)',\n ),\n })\n .meta({\n id: 'CollectorConfig',\n title: 'Collector.Config',\n description:\n 'Core collector configuration (globals/session statics, logger).',\n })\n .describe('Core collector configuration');\n\n/**\n * SessionData - Session state management\n *\n * Tracks session-level information:\n * - IDs and lifecycle\n * - Storage state\n * - Marketing tracking\n * - Timestamps\n * - Counters\n *\n * Extends Properties to allow custom session data\n */\nexport const SessionDataSchema = PropertiesSchema.and(\n z.object({\n isStart: z.boolean().describe('Whether this is a new session start'),\n storage: z.boolean().describe('Whether storage is available'),\n id: Identifier.describe('Session identifier').optional(),\n start: Timestamp.describe('Session start timestamp').optional(),\n marketing: z\n .literal(true)\n .optional()\n .describe('Marketing attribution flag'),\n updated: Timestamp.describe('Last update timestamp').optional(),\n isNew: z.boolean().describe('Whether this is a new session').optional(),\n device: Identifier.describe('Device identifier').optional(),\n count: Counter.describe('Event count in session').optional(),\n runs: Counter.describe('Number of runs').optional(),\n }),\n)\n .meta({\n id: 'CollectorSessionData',\n title: 'Collector.SessionData',\n description: 'Session state and tracking data.',\n })\n .describe('Session state and tracking data');\n\n/**\n * InitConfig - Initialization configuration\n *\n * Extends Config with initial state:\n * - Initial consent\n * - Initial user data\n * - Initial globals\n * - Source configurations\n * - Destination configurations\n * - Initial custom properties\n */\nexport const InitConfigSchema = ConfigSchema.partial()\n .extend({\n consent: ConsentSchema.optional().describe('Initial consent state'),\n user: UserSchema.optional().describe('Initial user data'),\n globals: PropertiesSchema.optional().describe('Initial global properties'),\n // Sources, destinations, transformers, stores are complex runtime objects\n sources: z\n .unknown()\n .meta({\n id: 'CollectorInitSources',\n title: 'Source.InitSources',\n description: 'Source configurations map (id → InitSource).',\n })\n .optional()\n .describe('Source configurations'),\n destinations: z\n .unknown()\n .meta({\n id: 'CollectorInitDestinations',\n title: 'Destination.InitDestinations',\n description: 'Destination configurations map (id → Init).',\n })\n .optional()\n .describe('Destination configurations'),\n transformers: z\n .unknown()\n .meta({\n id: 'CollectorInitTransformers',\n title: 'Transformer.Configs',\n description: 'Transformer configurations map (id → Config).',\n })\n .optional()\n .describe('Transformer configurations'),\n stores: z\n .unknown()\n .meta({\n id: 'CollectorInitStores',\n title: 'Store.Configs',\n description: 'Store configurations map (id → Config).',\n })\n .optional()\n .describe('Store configurations'),\n custom: PropertiesSchema.optional().describe(\n 'Initial custom implementation-specific properties',\n ),\n hooks: z\n .unknown()\n .meta({\n id: 'CollectorHooks',\n title: 'Collector.Hooks',\n description: 'Pipeline observation hooks.',\n })\n .optional()\n .describe('Pipeline observation hooks'),\n })\n .meta({\n id: 'CollectorInitConfig',\n title: 'Collector.InitConfig',\n description:\n 'Collector initialization configuration with initial state (consent, user, globals, components, hooks).',\n })\n .describe('Collector initialization configuration with initial state');\n\n// ========================================\n// Context Schemas\n// ========================================\n\n/**\n * PushContext - Context for collector.push\n *\n * Provides source-level mapping configuration\n * Applied before destination-specific mappings\n */\nexport const PushContextSchema = z\n .object({\n mapping: MappingConfigSchema.optional().describe(\n 'Source-level mapping configuration',\n ),\n })\n .meta({\n id: 'CollectorPushContext',\n title: 'Collector.PushContext',\n description: 'Push context with optional source-level mapping.',\n })\n .describe('Push context with optional source mapping');\n\n// ========================================\n// Collection Schemas\n// ========================================\n\n/**\n * Sources - Map of source IDs to instances\n */\nexport const SourcesSchema = z\n .record(z.string(), z.unknown())\n .meta({\n id: 'CollectorSources',\n title: 'Collector.Sources',\n description: 'Map of source IDs to runtime source instances.',\n })\n .describe('Map of source IDs to source instances');\n\n/**\n * Destinations - Map of destination IDs to instances\n */\nexport const DestinationsSchema = z\n .record(z.string(), z.unknown())\n .meta({\n id: 'CollectorDestinations',\n title: 'Collector.Destinations',\n description: 'Map of destination IDs to runtime destination instances.',\n })\n .describe('Map of destination IDs to destination instances');\n\n// ========================================\n// Instance Schema\n// ========================================\n\n/**\n * Instance - Collector instance (runtime object)\n *\n * The main collector interface with all state and methods\n *\n * State:\n * - config: Current configuration\n * - consent: Current consent state\n * - user: Current user data\n * - globals: Current global properties\n * - custom: Custom properties\n * - session: Session state\n * - sources: Registered sources\n * - destinations: Registered destinations\n * - hooks: Lifecycle hooks\n * - on: Event lifecycle config\n * - queue: Queued events\n *\n * Flags:\n * - allowed: Processing allowed\n * - count: Event count\n * - round: Collector run count\n * - timing: Processing timing\n * - group: Event grouping ID\n *\n * Methods (not validated):\n * - push: Process events\n * - command: Execute commands\n */\nexport const InstanceSchema = z\n .object({\n // Methods (functions - not validated)\n push: z.unknown().describe('Push function for processing events'),\n command: z.unknown().describe('Command function for walker commands'),\n // State\n allowed: z.boolean().describe('Whether event processing is allowed'),\n config: ConfigSchema.describe('Current collector configuration'),\n consent: ConsentSchema.describe('Current consent state'),\n custom: PropertiesSchema.describe(\n 'Custom implementation-specific properties',\n ),\n sources: SourcesSchema.describe('Registered source instances'),\n destinations: DestinationsSchema.describe(\n 'Registered destination instances',\n ),\n globals: PropertiesSchema.describe('Current global properties'),\n hooks: z.unknown().describe('Lifecycle hook functions'),\n on: z.unknown().describe('Event lifecycle configuration'),\n queue: z.array(EventSchema).describe('Queued events awaiting processing'),\n round: z\n .number()\n .describe('Collector run count (increments with each run)'),\n session: z.union([SessionDataSchema]).describe('Current session state'),\n timing: z.number().describe('Event processing timing information'),\n user: UserSchema.describe('Current user data'),\n })\n .meta({\n id: 'CollectorInstance',\n title: 'Collector.Instance',\n description:\n 'Collector instance (runtime object with push/command + full state and component maps).',\n })\n .describe('Collector instance with state and methods');\n\n// ========================================\n// JSON Schema Exports (for Explorer/RJSF/MCP)\n// ========================================\n\nexport const commandTypeJsonSchema = toJsonSchema(\n CommandTypeSchema,\n 'CommandType',\n);\n\nexport const configJsonSchema = toJsonSchema(ConfigSchema, 'CollectorConfig');\n\nexport const sessionDataJsonSchema = toJsonSchema(\n SessionDataSchema,\n 'SessionData',\n);\n\nexport const initConfigJsonSchema = toJsonSchema(\n InitConfigSchema,\n 'InitConfig',\n);\n\nexport const pushContextJsonSchema = toJsonSchema(\n PushContextSchema,\n 'CollectorPushContext',\n);\n\nexport const instanceJsonSchema = toJsonSchema(\n InstanceSchema,\n 'CollectorInstance',\n);\n","import { z, toJsonSchema } from './validation';\nimport {\n ConfigSchema as MappingConfigSchema,\n ValueSchema,\n ValuesSchema,\n} from './mapping';\nimport { Identifier } from './primitives';\nimport { LoggerConfigSchema } from './logger';\n\n/**\n * Source Schemas\n *\n * Mirrors: types/source.ts\n * Purpose: Runtime validation and JSON Schema generation for source configurations\n *\n * Sources are the entry points where events enter walkerOS:\n * - Browser sources (DOM events, dataLayer)\n * - Server sources (HTTP handlers, cloud functions)\n * - App sources (mobile, desktop)\n *\n * Sources are platform-agnostic through dependency injection via BaseEnv.\n * All platform-specific dependencies (DOM, HTTP, etc.) are provided through\n * the env object, making sources testable and portable.\n *\n * Key concept: Source.push IS the handler - no wrappers needed\n * Example: http('handler', source.push) for direct deployment\n */\n\n// ========================================\n// Environment Schema\n// ========================================\n\n/**\n * BaseEnv - Base environment interface for dependency injection\n *\n * Sources receive all dependencies through this environment object:\n * - push: Collector push function\n * - command: Collector command function\n * - sources: Other registered sources\n * - elb: Public API function (alias for collector.push)\n *\n * Platform-specific sources extend this with their requirements\n * (e.g., window, document, fetch, req, res)\n *\n * This makes sources:\n * - Platform-agnostic (no direct dependencies)\n * - Testable (mock env for tests)\n * - Composable (share env between sources)\n */\nexport const BaseEnvSchema = z\n .object({\n push: z\n .unknown()\n .meta({\n id: 'SourcePushFn',\n title: 'Source.PushFn',\n description:\n 'Collector push function passed to the source via dependency injection.',\n })\n .describe('Collector push function'),\n command: z\n .unknown()\n .meta({\n id: 'SourceCommandFn',\n title: 'Source.CommandFn',\n description: 'Collector command function passed to the source.',\n })\n .describe('Collector command function'),\n sources: z\n .unknown()\n .optional()\n .describe('Map of registered source instances'),\n elb: z\n .unknown()\n .meta({\n id: 'ElbFn',\n title: 'Elb.Fn',\n description: 'Public `elb(...)` API function alias for collector.push.',\n })\n .describe('Public API function (alias for collector.push)'),\n })\n .catchall(z.unknown())\n .meta({\n id: 'SourceBaseEnv',\n title: 'Source.BaseEnv',\n description:\n 'Base environment for source dependency injection; platform-specific sources extend this.',\n })\n .describe(\n 'Base environment for dependency injection - platform-specific sources extend this',\n );\n\n// ========================================\n// Configuration Schema\n// ========================================\n\n/**\n * Config - Source configuration\n *\n * Extends Mapping.Config with source-specific options:\n * - consent: Required consent to process events\n * - data: Global data transformations\n * - mapping: Entity-action mapping rules\n * - policy: Pre-processing policies\n * - settings: Source-specific settings\n * - env: Environment dependencies\n * - id: Source identifier\n * - onError: Error handler\n * - primary: Primary source flag (only one can be primary)\n *\n * Generic note: settings, env, and mapping can have source-specific types\n */\nexport const ConfigSchema = MappingConfigSchema.extend({\n settings: z\n .any()\n .meta({\n id: 'SourceSettings',\n title: 'Source.Settings',\n description:\n 'Implementation-specific configuration (source-defined shape).',\n })\n .describe('Implementation-specific configuration')\n .optional(),\n env: BaseEnvSchema.optional().describe(\n 'Environment dependencies (platform-specific)',\n ),\n id: Identifier.describe(\n 'Source identifier (defaults to source key)',\n ).optional(),\n primary: z\n .boolean()\n .describe('Mark as primary (only one can be primary)')\n .optional(),\n require: z\n .array(z.string())\n .optional()\n .describe(\n 'Defer source initialization until these collector events fire (e.g., [\"consent\"])',\n ),\n logger: LoggerConfigSchema.optional().describe(\n 'Logger configuration (level, handler) to override the collector defaults',\n ),\n ingest: z\n .union([ValueSchema, ValuesSchema])\n .optional()\n .describe(\n 'Ingest metadata extraction mapping. Extracts values from raw request objects (Express req, Lambda event) using mapping syntax.',\n ),\n disabled: z\n .boolean()\n .describe('Completely skip this source (no init, no event capture)')\n .optional(),\n})\n .meta({\n id: 'SourceConfig',\n title: 'Source.Config',\n description:\n 'Source configuration with mapping, environment, and lifecycle hooks.',\n })\n .describe('Source configuration with mapping and environment');\n\n/**\n * PartialConfig - Config with all fields optional\n * Used for config updates and overrides\n *\n * Note: ConfigSchema extends MappingConfigSchema with mostly optional fields.\n * Using .partial() ensures all fields are optional for config updates.\n */\nexport const PartialConfigSchema = ConfigSchema.partial()\n .meta({\n id: 'SourcePartialConfig',\n title: 'Source.PartialConfig',\n description: 'Partial source configuration with all fields optional.',\n })\n .describe('Partial source configuration with all fields optional');\n\n// ========================================\n// Instance Schema\n// ========================================\n\n/**\n * Instance - Source instance (runtime object)\n *\n * Contains:\n * - type: Source type identifier\n * - config: Current configuration\n * - push: Push function (THE HANDLER)\n * - destroy: Cleanup function\n * - on: Lifecycle hook function\n *\n * Key concept: push IS the handler\n * The push function signature is flexible to support different platforms:\n * - Browser: push(event, data) => Promise<void>\n * - HTTP: push(req, res) => Promise<void>\n * - Cloud: push(event, context) => Promise<void>\n *\n * This flexibility allows direct deployment without wrappers:\n * - http.createServer(source.push)\n * - functions.https.onRequest(source.push)\n * - addEventListener('click', source.push)\n */\nexport const InstanceSchema = z\n .object({\n type: z\n .string()\n .describe('Source type identifier (e.g., \"browser\", \"dataLayer\")'),\n config: ConfigSchema.describe('Current source configuration'),\n // Push function - flexible signature, not validated\n push: z\n .any()\n .meta({\n id: 'SourceInstancePushFn',\n title: 'Source.PushFn',\n description:\n 'Push function — THE HANDLER (flexible signature for platform compatibility).',\n })\n .describe(\n 'Push function - THE HANDLER (flexible signature for platform compatibility)',\n ),\n // Optional lifecycle methods\n destroy: z\n .any()\n .meta({\n id: 'SourceDestroyFn',\n title: 'Source.DestroyFn',\n description: 'Cleanup function called when the source is removed.',\n })\n .optional()\n .describe('Cleanup function called when source is removed'),\n on: z\n .unknown()\n .optional()\n .describe('Lifecycle hook function for event types'),\n })\n .meta({\n id: 'SourceInstance',\n title: 'Source.Instance',\n description:\n 'Source instance (runtime object with push handler and lifecycle methods).',\n })\n .describe('Source instance with push handler and lifecycle methods');\n\n// ========================================\n// Initialization Schemas\n// ========================================\n\n/**\n * Init - Source initialization function\n *\n * Factory function that creates a source instance:\n * (config, env) => Instance | Promise<Instance>\n *\n * Receives:\n * - config: Partial configuration\n * - env: Environment dependencies\n *\n * Returns:\n * - Source instance with push function\n *\n * The init function sets up the source (e.g., attach DOM listeners,\n * start HTTP server, subscribe to events) and returns the instance.\n */\nexport const InitSchema = z\n .any()\n .meta({\n id: 'SourceInit',\n title: 'Source.Init',\n description:\n 'Source initialization function: (config, env) => Instance | Promise<Instance>.',\n })\n .describe(\n 'Source initialization function: (config, env) => Instance | Promise<Instance>',\n );\n\n/**\n * InitSource - Initialization configuration\n *\n * Contains:\n * - code: Init function\n * - config: Partial config overrides\n * - env: Partial env overrides\n * - primary: Primary source flag\n */\nexport const InitSourceSchema = z\n .object({\n code: InitSchema.describe('Source initialization function'),\n config: PartialConfigSchema.optional().describe(\n 'Partial configuration overrides',\n ),\n env: BaseEnvSchema.partial()\n .optional()\n .describe('Partial environment overrides'),\n primary: z\n .boolean()\n .optional()\n .describe('Mark as primary source (only one can be primary)'),\n })\n .meta({\n id: 'SourceInitSource',\n title: 'Source.InitSource',\n description:\n 'Source initialization bundle (init function + config + env + primary flag).',\n })\n .describe('Source initialization configuration');\n\n/**\n * InitSources - Map of source IDs to init configs\n */\nexport const InitSourcesSchema = z\n .record(z.string(), InitSourceSchema)\n .meta({\n id: 'SourceInitSources',\n title: 'Source.InitSources',\n description: 'Map of source IDs to initialization configurations.',\n })\n .describe('Map of source IDs to initialization configurations');\n\n// ========================================\n// JSON Schema Exports (for Explorer/RJSF/MCP)\n// ========================================\n\nexport const baseEnvJsonSchema = toJsonSchema(BaseEnvSchema, 'SourceBaseEnv');\n\nexport const configJsonSchema = toJsonSchema(ConfigSchema, 'SourceConfig');\n\nexport const partialConfigJsonSchema = toJsonSchema(\n PartialConfigSchema,\n 'PartialSourceConfig',\n);\n\nexport const instanceJsonSchema = toJsonSchema(\n InstanceSchema,\n 'SourceInstance',\n);\n\nexport const initSourceJsonSchema = toJsonSchema(\n InitSourceSchema,\n 'InitSource',\n);\n\nexport const initSourcesJsonSchema = toJsonSchema(\n InitSourcesSchema,\n 'InitSources',\n);\n","import { z, toJsonSchema } from './validation';\nimport { Identifier } from './primitives';\nimport { RoutableNextSchema } from './matcher';\nimport { CacheSchema } from './cache';\nimport { LoggerConfigSchema } from './logger';\n\n/**\n * Transformer Schemas\n *\n * Mirrors: types/transformer.ts\n * Purpose: Runtime validation and JSON Schema generation for transformer configurations\n *\n * Transformers run between source and collector (pre-chain via `source.next`) or\n * between collector and destination (post-chain via `destination.before`), and\n * after destination push (`destination.next`). They validate, enrich, or redact\n * events in flight.\n */\n\n// ========================================\n// Configuration Schemas\n// ========================================\n\n/**\n * Config - Transformer configuration\n *\n * Mirrors types/transformer.ts Config interface. Shared fields wrap the\n * package-specific `settings` field.\n */\nexport const ConfigSchema = z\n .object({\n settings: z\n .any()\n .meta({\n id: 'TransformerSettings',\n title: 'Transformer.Settings',\n description:\n 'Implementation-specific configuration (transformer-defined shape).',\n })\n .describe('Implementation-specific configuration')\n .optional(),\n env: z\n .any()\n .meta({\n id: 'TransformerEnv',\n title: 'Transformer.Env',\n description: 'Environment dependencies (transformer-defined shape).',\n })\n .describe('Environment dependencies (platform-specific)')\n .optional(),\n id: Identifier.describe(\n 'Transformer instance identifier (defaults to transformer key)',\n ).optional(),\n logger: LoggerConfigSchema.optional().describe(\n 'Logger configuration (level, handler) to override the collector defaults',\n ),\n before: RoutableNextSchema.optional().describe(\n 'Pre-transformer chain that runs before this transformer pushes',\n ),\n next: RoutableNextSchema.optional().describe(\n 'Graph wiring to the next transformer in the chain',\n ),\n cache: CacheSchema.optional().describe(\n 'Step-level cache configuration for this transformer',\n ),\n init: z.boolean().describe('Whether to initialize immediately').optional(),\n disabled: z\n .boolean()\n .describe('Completely skip this transformer in chains')\n .optional(),\n mock: z\n .unknown()\n .meta({\n id: 'TransformerMock',\n title: 'Transformer.Mock',\n description:\n 'Return this value instead of calling push(). Dev/testing only.',\n })\n .optional()\n .describe(\n 'Return this value instead of calling push(). Global mock for all chains. Dev/testing only.',\n ),\n chainMocks: z\n .record(\n z.string(),\n z.unknown().meta({\n id: 'TransformerChainMock',\n title: 'Transformer.ChainMock',\n description: 'Chain-path-specific mock value. Dev/testing only.',\n }),\n )\n .optional()\n .describe(\n 'Path-specific mock values keyed by chain path. Takes precedence over global mock. Dev/testing only.',\n ),\n })\n .meta({\n id: 'TransformerConfig',\n title: 'Transformer.Config',\n description:\n 'Transformer configuration (settings, env, chain wiring, cache, mocks).',\n })\n .describe('Transformer configuration');\n\n/**\n * PartialConfig - Config with all fields optional\n */\nexport const PartialConfigSchema = ConfigSchema.partial()\n .meta({\n id: 'TransformerPartialConfig',\n title: 'Transformer.PartialConfig',\n description: 'Partial transformer configuration with all fields optional.',\n })\n .describe('Partial transformer configuration with all fields optional');\n\n// ========================================\n// JSON Schema Exports (for Explorer/RJSF/MCP)\n// ========================================\n\nexport const configJsonSchema = toJsonSchema(ConfigSchema, 'TransformerConfig');\n\nexport const partialConfigJsonSchema = toJsonSchema(\n PartialConfigSchema,\n 'PartialTransformerConfig',\n);\n","import { z, toJsonSchema } from './validation';\nimport { Identifier } from './primitives';\nimport { LoggerConfigSchema } from './logger';\n\n/**\n * Store Schemas\n *\n * Mirrors: types/store.ts\n * Purpose: Runtime validation and JSON Schema generation for store configurations\n *\n * Stores are the 4th component type — passive key-value infrastructure that\n * other components consume via `env`. They are referenced via `$store.storeId`\n * in `env` values. Init first, destroy last. No chains.\n */\n\n// ========================================\n// Configuration Schemas\n// ========================================\n\n/**\n * Config - Store configuration\n *\n * Mirrors types/store.ts Config interface. Minimal set of shared fields around\n * the package-specific `settings` field.\n */\nexport const ConfigSchema = z\n .object({\n settings: z\n .unknown()\n .meta({\n id: 'StoreSettings',\n title: 'Store.Settings',\n description:\n 'Implementation-specific configuration (store-defined shape).',\n })\n .describe('Implementation-specific configuration')\n .optional(),\n env: z\n .unknown()\n .meta({\n id: 'StoreEnv',\n title: 'Store.Env',\n description: 'Environment dependencies (store-defined shape).',\n })\n .describe('Environment dependencies (platform-specific)')\n .optional(),\n id: Identifier.describe(\n 'Store instance identifier (defaults to store key)',\n ).optional(),\n logger: LoggerConfigSchema.optional().describe(\n 'Logger configuration (level, handler) to override the collector defaults',\n ),\n })\n .meta({\n id: 'StoreConfig',\n title: 'Store.Config',\n description:\n 'Store configuration (settings, env, logger) — key-value infrastructure component.',\n })\n .describe('Store configuration');\n\n/**\n * PartialConfig - Config with all fields optional\n */\nexport const PartialConfigSchema = ConfigSchema.partial()\n .meta({\n id: 'StorePartialConfig',\n title: 'Store.PartialConfig',\n description: 'Partial store configuration with all fields optional.',\n })\n .describe('Partial store configuration with all fields optional');\n\n// ========================================\n// JSON Schema Exports (for Explorer/RJSF/MCP)\n// ========================================\n\nexport const configJsonSchema = toJsonSchema(ConfigSchema, 'StoreConfig');\n\nexport const partialConfigJsonSchema = toJsonSchema(\n PartialConfigSchema,\n 'PartialStoreConfig',\n);\n","/**\n * Flow Configuration System - Zod Schemas (v4)\n *\n * Mirrors: types/flow.ts\n * Purpose: Runtime validation and JSON Schema generation for Flow configurations\n *\n * The Flow system provides unified configuration across all walkerOS flows.\n * These schemas enable:\n * - Runtime validation of config files\n * - Clear error messages for configuration issues\n * - JSON Schema generation for IDE support\n * - Type-safe parsing with Zod\n *\n * SCHEMA SYNC: Run `npx tsx scripts/generate-flow-schema.ts` from the repo root\n * to regenerate website/static/schema/flow/v4.json.\n *\n * @packageDocumentation\n */\n\nimport { z, toJsonSchema } from './validation';\nimport { RoutableNextSchema } from './matcher';\nimport { CacheSchema } from './cache';\n\n// ========================================\n// Primitive Type Schemas\n// ========================================\n\n/**\n * Primitive value schema for variables.\n *\n * @remarks\n * Variables can be strings, numbers, or booleans.\n * Used at root, flow, source, destination, transformer, and store levels.\n */\nexport const PrimitiveSchema = z\n .union([z.string(), z.number(), z.boolean()])\n .meta({\n id: 'FlowPrimitive',\n title: 'Flow.Primitive',\n description: 'Primitive value: string, number, or boolean.',\n })\n .describe('Primitive value: string, number, or boolean');\n\n// ========================================\n// Shared Type Schemas\n// ========================================\n\n/**\n * Variables schema for interpolation.\n */\nexport const VariablesSchema = z\n .record(z.string(), PrimitiveSchema)\n .meta({\n id: 'FlowVariables',\n title: 'Flow.Variables',\n description: 'Variables for interpolation (string/number/boolean values).',\n })\n .describe('Variables for interpolation');\n\n/**\n * Definitions schema for reusable configurations.\n */\nexport const DefinitionsSchema = z\n .record(\n z.string(),\n z.unknown().meta({\n id: 'FlowDefinition',\n title: 'Flow.Definition',\n description: 'Single named definition value (arbitrary shape).',\n }),\n )\n .meta({\n id: 'FlowDefinitions',\n title: 'Flow.Definitions',\n description: 'Reusable configuration definitions referenced via $def.name.',\n })\n .describe('Reusable configuration definitions');\n\n/**\n * Settings schema - free-form key-value bag inside Flow.Config.settings.\n */\nexport const SettingsSchema = z\n .record(z.string(), z.unknown())\n .meta({\n id: 'FlowSettings',\n title: 'Flow.Settings',\n description:\n 'Free-form key-value settings consumed by the platform runtime.',\n })\n .describe('Free-form platform settings bag');\n\n/**\n * NPM package name validation pattern.\n */\nconst npmPackageNamePattern =\n /^(@[a-z0-9\\-~][a-z0-9\\-._~]*\\/)?[a-z0-9\\-~][a-z0-9\\-._~]*$/;\n\n/**\n * Single bundle package entry.\n */\nexport const BundlePackageSchema = z\n .object({\n version: z.string().optional(),\n imports: z.array(z.string()).optional(),\n path: z.string().optional(), // Local path (takes precedence over version)\n })\n .meta({\n id: 'FlowBundlePackage',\n title: 'Flow.BundlePackage',\n description: 'Per-package bundle spec (version / imports / local path).',\n });\n\n/**\n * Bundle schema - build-time configuration for the bundler.\n */\nexport const BundleSchema = z\n .object({\n packages: z\n .record(\n z.string().regex(npmPackageNamePattern, 'Invalid npm package name'),\n BundlePackageSchema,\n )\n .optional()\n .describe('NPM packages to bundle, keyed by package name'),\n overrides: z\n .record(\n z.string().regex(npmPackageNamePattern, 'Invalid npm package name'),\n z.string().min(1, 'Override version cannot be empty'),\n )\n .optional()\n .describe('Transitive dependency version pins'),\n })\n .strict()\n .meta({\n id: 'FlowBundle',\n title: 'Flow.Bundle',\n description: 'Bundle configuration (packages + overrides).',\n })\n .describe('Bundle configuration (packages + overrides)');\n\n// ========================================\n// Inline Code Schema\n// ========================================\n\n/**\n * Inline code schema for embedding JavaScript functions in JSON configs.\n *\n * @remarks\n * Enables custom sources, transformers, destinations, and stores without\n * npm packages. The `push` function is required; `type` and `init` are optional.\n *\n * @example\n * ```json\n * {\n * \"code\": {\n * \"type\": \"enricher\",\n * \"push\": \"$code:(event) => ({ ...event, data: { ...event.data, enriched: true } })\"\n * }\n * }\n * ```\n */\nexport const CodeSchema = z\n .object({\n push: z\n .string()\n .min(1, 'Push function cannot be empty')\n .describe(\n 'JavaScript function for processing events. Must start with \"$code:\" prefix.',\n ),\n type: z\n .string()\n .optional()\n .describe('Optional type identifier for the inline instance'),\n init: z\n .string()\n .optional()\n .describe(\n 'Optional initialization function. Use $code: prefix for inline JavaScript.',\n ),\n })\n .meta({\n id: 'FlowCode',\n title: 'Flow.Code',\n description:\n 'Inline code block for custom sources / transformers / destinations / stores.',\n })\n .describe('Inline code for custom components');\n\n// ========================================\n// Step Example Schemas\n// ========================================\n\n/**\n * Trigger descriptor - source trigger metadata for step examples.\n */\nexport const TriggerDescriptorSchema = z\n .object({\n type: z\n .string()\n .optional()\n .describe('Trigger mechanism (e.g., click, POST, load)'),\n options: z.unknown().optional().describe('Mechanism-specific options'),\n })\n .meta({\n id: 'TriggerDescriptor',\n title: 'Trigger.Descriptor',\n description:\n 'Source trigger metadata (mechanism + options) used by step examples.',\n });\n\n/**\n * Step example schema - a named { in, out } pair.\n */\nexport const StepExampleSchema = z\n .object({\n title: z\n .string()\n .optional()\n .describe('Human-readable title (overrides default heading)'),\n description: z.string().optional().describe('Human-readable description'),\n public: z\n .boolean()\n .optional()\n .describe(\n 'Whether this example is shown in docs/UI/MCP default output (default: true). Set false for test-only fixtures.',\n ),\n in: z.unknown().optional().describe('Input to the step'),\n trigger: TriggerDescriptorSchema.optional().describe(\n 'Source trigger metadata',\n ),\n mapping: z.unknown().optional().describe('Mapping configuration'),\n out: z.unknown().optional().describe('Expected output from the step'),\n command: z\n .enum(['config', 'consent', 'user', 'run'])\n .optional()\n .describe(\n \"Invoke elb('walker <command>', in) instead of pushing in as an event\",\n ),\n })\n .meta({\n id: 'FlowStepExample',\n title: 'Flow.StepExample',\n description: 'Named example with input/output pair used for step testing.',\n })\n .describe('Named example with input/output pair');\n\n/**\n * Step examples record - keyed by scenario name.\n */\nexport const StepExamplesSchema = z\n .record(z.string(), StepExampleSchema)\n .meta({\n id: 'FlowStepExamples',\n title: 'Flow.StepExamples',\n description: 'Named step examples keyed by scenario name.',\n })\n .describe('Named step examples for testing and documentation');\n\n// ========================================\n// Source / Destination / Transformer / Store Schemas\n// ========================================\n\n/**\n * Source reference schema (Flow.Source).\n *\n * @remarks\n * Defines how to reference and configure a source package.\n * Sources capture events from various origins (browser, HTTP, etc.).\n * Either `package` (npm package) or `code` (inline object) may be provided.\n */\nexport const SourceSchema = z\n .object({\n package: z\n .string()\n .min(1, 'Package name cannot be empty')\n .optional()\n .describe(\n 'Package specifier with optional version (e.g., \"@walkeros/web-source-browser@2.0.0\")',\n ),\n code: z\n .union([z.string(), CodeSchema])\n .optional()\n .describe(\n 'Either a named export string (e.g., \"sourceExpress\") or an inline code object with push function',\n ),\n config: z\n .unknown()\n .meta({\n id: 'FlowSourceConfig',\n title: 'Source.Config',\n description: 'Source-specific configuration object (Source.Config).',\n })\n .optional()\n .describe('Source-specific configuration object'),\n env: z\n .unknown()\n .meta({\n id: 'FlowSourceEnv',\n title: 'Source.BaseEnv',\n description:\n 'Source environment configuration (Source.BaseEnv overrides).',\n })\n .optional()\n .describe('Source environment configuration'),\n primary: z\n .boolean()\n .optional()\n .describe(\n 'Mark as primary source (provides main elb). Only one source should be primary.',\n ),\n variables: VariablesSchema.optional().describe(\n 'Source-level variables (highest priority in cascade)',\n ),\n definitions: DefinitionsSchema.optional().describe(\n 'Source-level definitions (highest priority in cascade)',\n ),\n next: RoutableNextSchema.optional().describe(\n 'Pre-collector transformer chain. String, string[], or NextRule[] for conditional routing based on ingest data.',\n ),\n before: RoutableNextSchema.optional().describe(\n 'Pre-source transformer chain (consent-exempt). Handles transport-level preprocessing.',\n ),\n examples: StepExamplesSchema.optional().describe(\n 'Named step examples for testing and documentation (stripped during bundling)',\n ),\n cache: CacheSchema.optional().describe(\n 'Cache configuration for this source (match → key → ttl rules)',\n ),\n })\n .meta({\n id: 'FlowSource',\n title: 'Flow.Source',\n description:\n 'Source package reference with configuration, env, chains, and examples.',\n })\n .describe('Source package reference with configuration');\n\n/**\n * Transformer reference schema (Flow.Transformer).\n */\nexport const TransformerSchema = z\n .object({\n package: z\n .string()\n .min(1, 'Package name cannot be empty')\n .optional()\n .describe(\n 'Package specifier with optional version (e.g., \"@walkeros/transformer-enricher@1.0.0\")',\n ),\n code: z\n .union([z.string(), CodeSchema])\n .optional()\n .describe(\n 'Either a named export string (e.g., \"transformerEnricher\") or an inline code object with push function',\n ),\n config: z\n .unknown()\n .meta({\n id: 'FlowTransformerConfig',\n title: 'Transformer.Config',\n description: 'Transformer-specific configuration object.',\n })\n .optional()\n .describe('Transformer-specific configuration object'),\n env: z\n .unknown()\n .meta({\n id: 'FlowTransformerEnv',\n title: 'Transformer.Env',\n description: 'Transformer environment configuration.',\n })\n .optional()\n .describe('Transformer environment configuration'),\n before: RoutableNextSchema.optional().describe(\n 'Pre-transformer chain. Runs before this transformer push function.',\n ),\n next: RoutableNextSchema.optional().describe(\n 'Next transformer in chain. String, string[], or NextRule[] for conditional routing.',\n ),\n variables: VariablesSchema.optional().describe(\n 'Transformer-level variables (highest priority in cascade)',\n ),\n definitions: DefinitionsSchema.optional().describe(\n 'Transformer-level definitions (highest priority in cascade)',\n ),\n examples: StepExamplesSchema.optional().describe(\n 'Named step examples for testing and documentation (stripped during bundling)',\n ),\n cache: CacheSchema.optional().describe(\n 'Cache configuration for this transformer (match → key → ttl rules)',\n ),\n })\n .meta({\n id: 'FlowTransformer',\n title: 'Flow.Transformer',\n description:\n 'Transformer package reference with configuration, env, chains, and cache.',\n })\n .describe('Transformer package reference with configuration');\n\n/**\n * Destination reference schema (Flow.Destination).\n */\nexport const DestinationSchema = z\n .object({\n package: z\n .string()\n .min(1, 'Package name cannot be empty')\n .optional()\n .describe(\n 'Package specifier with optional version (e.g., \"@walkeros/web-destination-gtag@2.0.0\")',\n ),\n code: z\n .union([z.string(), CodeSchema])\n .optional()\n .describe(\n 'Either a named export string (e.g., \"destinationAnalytics\") or an inline code object with push function',\n ),\n config: z\n .unknown()\n .meta({\n id: 'FlowDestinationConfig',\n title: 'Destination.Config',\n description: 'Destination-specific configuration object.',\n })\n .optional()\n .describe('Destination-specific configuration object'),\n env: z\n .unknown()\n .meta({\n id: 'FlowDestinationEnv',\n title: 'Destination.Env',\n description: 'Destination environment configuration.',\n })\n .optional()\n .describe('Destination environment configuration'),\n variables: VariablesSchema.optional().describe(\n 'Destination-level variables (highest priority in cascade)',\n ),\n definitions: DefinitionsSchema.optional().describe(\n 'Destination-level definitions (highest priority in cascade)',\n ),\n before: RoutableNextSchema.optional().describe(\n 'Post-collector transformer chain. String, string[], or NextRule[] for conditional routing.',\n ),\n next: RoutableNextSchema.optional().describe(\n 'Post-push transformer chain. Push response available at context.ingest._response.',\n ),\n examples: StepExamplesSchema.optional().describe(\n 'Named step examples for testing and documentation (stripped during bundling)',\n ),\n cache: CacheSchema.optional().describe(\n 'Cache configuration for this destination (match → key → ttl rules)',\n ),\n })\n .meta({\n id: 'FlowDestination',\n title: 'Flow.Destination',\n description:\n 'Destination package reference with configuration, env, chains, and cache.',\n })\n .describe('Destination package reference with configuration');\n\n/**\n * Store reference schema (Flow.Store).\n *\n * @remarks\n * Stores are passive key-value infrastructure - no chain properties (next/before).\n * Consumed by other components via `$store.storeId` env wiring.\n */\nexport const StoreSchema = z\n .object({\n package: z\n .string()\n .min(1, 'Package name cannot be empty')\n .optional()\n .describe('Store package specifier with optional version'),\n code: z\n .union([z.string(), CodeSchema])\n .optional()\n .describe('Named export string or inline code definition'),\n config: z\n .unknown()\n .meta({\n id: 'FlowStoreConfig',\n title: 'Store.Config',\n description: 'Store-specific configuration object.',\n })\n .optional()\n .describe('Store-specific configuration object'),\n env: z\n .unknown()\n .meta({\n id: 'FlowStoreEnv',\n title: 'Store.Env',\n description: 'Store environment configuration.',\n })\n .optional()\n .describe('Store environment configuration'),\n variables: VariablesSchema.optional().describe(\n 'Store-level variables (highest priority in cascade)',\n ),\n definitions: DefinitionsSchema.optional().describe(\n 'Store-level definitions (highest priority in cascade)',\n ),\n examples: StepExamplesSchema.optional().describe(\n 'Named step examples for testing and documentation (stripped during bundling)',\n ),\n })\n .meta({\n id: 'FlowStore',\n title: 'Flow.Store',\n description:\n 'Store package reference with configuration, env, and examples.',\n })\n .describe('Store package reference with configuration');\n\n// ========================================\n// Contract Schemas\n// ========================================\n\n/**\n * Contract schema entry - a JSON Schema object.\n * Passthrough to allow any valid JSON Schema keywords.\n */\nexport const ContractSchemaEntry = z\n .record(z.string(), z.unknown())\n .meta({\n id: 'FlowContractSchemaEntry',\n title: 'Flow.ContractSchemaEntry',\n description:\n 'JSON Schema object for event validation with description/examples annotations.',\n })\n .describe(\n 'JSON Schema object for event validation with description/examples annotations',\n );\n\n/**\n * Contract actions - keyed by action name (or \"*\" wildcard).\n */\nexport const ContractActionsSchema = z\n .record(z.string(), ContractSchemaEntry)\n .meta({\n id: 'FlowContractActions',\n title: 'Flow.ContractActions',\n description: 'Action-level contract entries keyed by action name.',\n })\n .describe('Action-level contract entries');\n\n/**\n * Contract events map - entity → action keyed.\n */\nexport const ContractEventsSchema = z\n .record(z.string(), ContractActionsSchema)\n .meta({\n id: 'FlowContractEvents',\n title: 'Flow.ContractEvents',\n description: 'Entity-action event schemas (entity → action → schema).',\n })\n .describe('Entity-action event schemas');\n\n/**\n * Single named contract rule.\n */\nexport const ContractRuleSchema = z\n .object({\n extends: z\n .string()\n .optional()\n .describe('Inherit from another named contract'),\n tagging: z\n .number()\n .optional()\n .describe('Tagging level (used by validators / runtime tagging policy)'),\n description: z.string().optional().describe('Human-readable description'),\n globals: ContractSchemaEntry.optional().describe(\n 'JSON Schema for event.globals',\n ),\n context: ContractSchemaEntry.optional().describe(\n 'JSON Schema for event.context',\n ),\n custom: ContractSchemaEntry.optional().describe(\n 'JSON Schema for event.custom',\n ),\n user: ContractSchemaEntry.optional().describe('JSON Schema for event.user'),\n consent: ContractSchemaEntry.optional().describe(\n 'JSON Schema for event.consent',\n ),\n events: ContractEventsSchema.optional().describe(\n 'Entity-action event schemas',\n ),\n })\n .meta({\n id: 'FlowContractRule',\n title: 'Flow.ContractRule',\n description:\n 'Named contract rule with optional sections (globals/context/custom/user/consent) and event schemas.',\n })\n .describe('Named contract rule with optional sections and events');\n\n/**\n * Named contract map.\n */\nexport const ContractSchema = z\n .record(z.string(), ContractRuleSchema)\n .meta({\n id: 'FlowContract',\n title: 'Flow.Contract',\n description: 'Named contracts map with optional extends inheritance.',\n })\n .describe('Named contracts with optional extends inheritance');\n\n// ========================================\n// Per-flow Config block + Single Flow\n// ========================================\n\n/**\n * Per-flow Config schema (Flow.Config).\n *\n * @remarks\n * Groups platform identity, optional public URL, free-form settings bag,\n * and bundle (build-time) configuration.\n */\nexport const ConfigSchema = z\n .object({\n platform: z\n .enum(['web', 'server'])\n .describe(\n 'Platform identity for this flow. Drives bundle target/format.',\n ),\n url: z\n .string()\n .min(1)\n .optional()\n .describe(\n 'Public URL where this flow is reachable (for cross-flow $flow.X.url references).',\n ),\n settings: SettingsSchema.optional().describe(\n 'Free-form key-value settings consumed by the platform runtime.',\n ),\n bundle: BundleSchema.optional().describe(\n 'Bundle configuration: NPM packages, transitive dependency overrides.',\n ),\n })\n .meta({\n id: 'FlowConfig',\n title: 'Flow.Config',\n description:\n 'Per-flow configuration block: platform identity, optional public URL, settings, bundle.',\n })\n .describe('Per-flow configuration block');\n\n/**\n * Single flow schema (Flow).\n *\n * @remarks\n * Represents one deployment target (e.g., web_prod, server_stage).\n * The platform is determined by `config.platform`.\n */\nexport const FlowSchema = z\n .object({\n config: ConfigSchema.optional().describe(\n 'Per-flow configuration: platform, url, settings, bundle.',\n ),\n sources: z\n .record(z.string(), SourceSchema)\n .optional()\n .describe(\n 'Source configurations (data capture) keyed by unique identifier',\n ),\n destinations: z\n .record(z.string(), DestinationSchema)\n .optional()\n .describe(\n 'Destination configurations (data output) keyed by unique identifier',\n ),\n transformers: z\n .record(z.string(), TransformerSchema)\n .optional()\n .describe(\n 'Transformer configurations (event transformation) keyed by unique identifier',\n ),\n stores: z\n .record(z.string(), StoreSchema)\n .optional()\n .describe(\n 'Store configurations (key-value storage) keyed by unique identifier',\n ),\n collector: z\n .unknown()\n .meta({\n id: 'FlowCollector',\n title: 'Collector.InitConfig',\n description:\n 'Collector configuration for event processing (Collector.InitConfig).',\n })\n .optional()\n .describe(\n 'Collector configuration for event processing (uses Collector.InitConfig)',\n ),\n variables: VariablesSchema.optional().describe(\n 'Flow-level variables (override root variables, overridden by source/destination variables)',\n ),\n definitions: DefinitionsSchema.optional().describe(\n 'Flow-level definitions (extend root definitions, overridden by source/destination definitions)',\n ),\n })\n .meta({\n id: 'Flow',\n title: 'Flow',\n description:\n 'Single flow definition (one deployment target): config, sources, destinations, transformers, stores, collector.',\n })\n .describe('Single flow definition for one deployment target');\n\n// ========================================\n// Root Json Schema (walkeros.config.json)\n// ========================================\n\n/**\n * Root walkerOS multi-flow configuration schema (Flow.Json, v4).\n *\n * @remarks\n * This is the complete schema for walkeros.config.json files.\n * Contains multiple named flows with shared variables, definitions, and contracts.\n */\nexport const JsonSchema = z\n .object({\n version: z\n .literal(4)\n .describe('Configuration schema version (v4, current).'),\n $schema: z\n .string()\n .url('Schema URL must be a valid URL')\n .optional()\n .describe(\n 'JSON Schema reference for IDE validation (e.g., \"https://walkeros.io/schema/flow/v4.json\")',\n ),\n include: z\n .array(z.string())\n .optional()\n .describe('Folders to include in the bundle output'),\n variables: VariablesSchema.optional().describe(\n 'Shared variables for interpolation across all flows (use $var.name syntax)',\n ),\n definitions: DefinitionsSchema.optional().describe(\n 'Reusable configuration definitions (use $def.name syntax)',\n ),\n contract: ContractSchema.optional().describe(\n 'Named contracts with extends inheritance and dot-path references',\n ),\n flows: z\n .record(z.string(), FlowSchema)\n .refine((flows) => Object.keys(flows).length > 0, {\n message: 'At least one flow is required',\n })\n .describe(\n 'Named flow configurations (e.g., production, staging, development)',\n ),\n })\n .meta({\n id: 'FlowJson',\n title: 'Flow.Json',\n description:\n 'walkerOS root configuration (walkeros.config.json) v4: version, variables, definitions, contract, named flows.',\n })\n .describe('walkerOS root configuration (walkeros.config.json)');\n\n// ========================================\n// Helper Functions\n// ========================================\n\n/**\n * Parse and validate a Flow.Json (root) configuration.\n *\n * @param data - Raw JSON data from config file\n * @returns Validated Flow.Json object\n * @throws ZodError if validation fails with detailed error messages\n *\n * @example\n * ```typescript\n * import { parseConfig } from '@walkeros/core/dev';\n * import { readFileSync } from 'fs';\n *\n * const raw = JSON.parse(readFileSync('walkeros.config.json', 'utf8'));\n * const config = parseConfig(raw);\n * console.log(`Found ${Object.keys(config.flows).length} flows`);\n * ```\n */\nexport function parseConfig(data: unknown): z.infer<typeof JsonSchema> {\n return JsonSchema.parse(data);\n}\n\n/**\n * Safely parse a Flow.Json (root) configuration without throwing.\n *\n * @param data - Raw JSON data from config file\n * @returns Success result with data or error result with issues\n */\nexport function safeParseConfig(data: unknown) {\n return JsonSchema.safeParse(data);\n}\n\n/**\n * Parse and validate a single Flow definition.\n *\n * @param data - Raw JSON data for a single flow\n * @returns Validated Flow object\n * @throws ZodError if validation fails\n */\nexport function parseFlow(data: unknown): z.infer<typeof FlowSchema> {\n return FlowSchema.parse(data);\n}\n\n/**\n * Safely parse a single Flow definition without throwing.\n */\nexport function safeParseFlow(data: unknown) {\n return FlowSchema.safeParse(data);\n}\n\n// ========================================\n// JSON Schema Generation (consumed by IDE / tooling)\n// ========================================\n\n/**\n * JSON Schema for Flow.Json (root walkeros.config.json).\n *\n * @remarks\n * Used for IDE validation and autocomplete.\n * Hosted at https://walkeros.io/schema/flow/v4.json\n */\nexport const configJsonSchema = z.toJSONSchema(JsonSchema, {\n target: 'draft-7',\n});\n\n/**\n * JSON Schema for a single Flow.\n */\nexport const flowJsonSchema = toJsonSchema(FlowSchema, 'Flow');\n\n/**\n * JSON Schema for the per-flow Config block (Flow.Config).\n */\nexport const flowConfigJsonSchema = toJsonSchema(ConfigSchema, 'FlowConfig');\n\n/**\n * JSON Schema for Flow.Source.\n */\nexport const sourceJsonSchema = toJsonSchema(SourceSchema, 'Source');\n\n/**\n * JSON Schema for Flow.Destination.\n */\nexport const destinationJsonSchema = toJsonSchema(\n DestinationSchema,\n 'Destination',\n);\n\n/**\n * JSON Schema for Flow.Transformer.\n */\nexport const transformerJsonSchema = toJsonSchema(\n TransformerSchema,\n 'Transformer',\n);\n\n/**\n * JSON Schema for Flow.Store.\n */\nexport const storeJsonSchema = toJsonSchema(StoreSchema, 'Store');\n\n/**\n * JSON Schema for a single Contract rule (Flow.ContractRule).\n */\nexport const contractRuleJsonSchema = toJsonSchema(\n ContractRuleSchema,\n 'ContractRule',\n);\n\n/**\n * JSON Schema for the named Contract map (Flow.Contract).\n */\nexport const contractJsonSchema = toJsonSchema(ContractSchema, 'Contract');\n","import { z } from 'zod';\n\nexport const CodeSchema = z.object({\n lang: z\n .string()\n .optional()\n .describe('Language identifier (e.g. json, sql, bash, typescript)'),\n code: z.string().describe('Code snippet'),\n});\n\nexport const HintSchema = z.object({\n text: z\n .string()\n .describe('Short actionable hint text focused on walkerOS usage'),\n code: z.array(CodeSchema).optional().describe('Optional code snippets'),\n});\n\nexport const HintsSchema = z\n .record(z.string(), HintSchema)\n .describe(\n 'Keyed hints for AI consumption — lightweight context beyond schemas and examples',\n );\n","import { z } from './validation';\n\n/**\n * Click-ID registry entry — maps a URL parameter name to a canonical platform.\n *\n * Runtime use of this schema is optional; `getMarketingParameters()` accepts\n * plain `ClickIdEntry` objects without validating. This schema exists for\n * dev tooling (Explorer UI, MCP package_get, JSON Schema generation).\n */\nexport const ClickIdEntrySchema = z.object({\n param: z\n .string()\n .describe(\n 'Lowercase URL parameter name. Match is case-insensitive on lookup.',\n ),\n platform: z\n .string()\n .describe('Canonical platform identifier (lowercase, kebab-case).'),\n});\n","import { JsonSchema } from './flow';\nimport type { ValidationIssue, ValidationResult } from './validate';\nimport type { IntelliSenseContext, PackageInfo } from './intellisense';\n\n/**\n * Validate a Flow.Config JSON string.\n *\n * Performs three levels of validation:\n * 1. JSON syntax — parse error with line/column\n * 2. Schema — Zod ConfigSchema validation with mapped positions\n * 3. References — checks $var., $def., $secret. against extracted context\n *\n * Returns errors, warnings, and extracted IntelliSenseContext as a byproduct.\n * Pure function — works in Node.js (CLI/MCP) and browser (CodeBox).\n */\nexport function validateFlowConfig(json: string): ValidationResult {\n // 1. JSON parse\n let parsed: unknown;\n try {\n parsed = JSON.parse(json);\n } catch (e) {\n const { line, column } = getJsonParsePosition(e, json);\n return {\n valid: false,\n errors: [\n {\n message: e instanceof Error ? e.message : 'Invalid JSON',\n severity: 'error',\n line,\n column,\n },\n ],\n warnings: [],\n };\n }\n\n const errors: ValidationIssue[] = [];\n const warnings: ValidationIssue[] = [];\n\n // 2. Schema validation\n const zodResult = JsonSchema.safeParse(parsed);\n if (!zodResult.success) {\n for (const issue of zodResult.error.issues) {\n const path = issue.path.join('.');\n const pos = findPathPosition(json, issue.path as (string | number)[]);\n errors.push({\n message: issue.message,\n severity: 'error',\n path: path || 'root',\n ...pos,\n });\n }\n }\n\n // 3. Extract context + check references (only if JSON is an object with flows)\n const context = extractContext(parsed);\n if (context) {\n const refWarnings = checkReferences(json, context);\n warnings.push(...refWarnings);\n }\n\n return {\n valid: errors.length === 0,\n errors,\n warnings,\n context,\n };\n}\n\n// --- Context Extraction ---\n\nfunction extractContext(\n parsed: unknown,\n): Partial<IntelliSenseContext> | undefined {\n if (\n !isObject(parsed) ||\n !('version' in parsed) ||\n !('flows' in parsed) ||\n !isObject(parsed.flows)\n ) {\n return undefined;\n }\n\n const variables: Record<string, string | number | boolean> = {};\n const definitions: Record<string, unknown> = {};\n const sources: string[] = [];\n const destinations: string[] = [];\n const transformers: string[] = [];\n const packages: PackageInfo[] = [];\n const contractEntities: Array<{ entity: string; actions: string[] }> = [];\n let platform: 'web' | 'server' | undefined;\n\n // Setup-level\n mergeVars(variables, parsed.variables);\n mergeDefs(definitions, parsed.definitions);\n extractContractEntities(contractEntities, parsed.contract);\n\n // Walk each flow config\n for (const flow of Object.values(parsed.flows)) {\n if (!isObject(flow)) continue;\n\n if (!platform) {\n const cfg = flow.config;\n if (\n isObject(cfg) &&\n (cfg.platform === 'web' || cfg.platform === 'server')\n ) {\n platform = cfg.platform;\n }\n }\n\n mergeVars(variables, flow.variables);\n mergeDefs(definitions, flow.definitions);\n\n for (const type of ['sources', 'destinations', 'transformers'] as const) {\n const stepType =\n type === 'sources'\n ? 'source'\n : type === 'destinations'\n ? 'destination'\n : 'transformer';\n const list =\n type === 'sources'\n ? sources\n : type === 'destinations'\n ? destinations\n : transformers;\n\n if (isObject(flow[type])) {\n for (const [name, ref] of Object.entries(\n flow[type] as Record<string, unknown>,\n )) {\n list.push(name);\n if (isObject(ref)) {\n mergeVars(variables, ref.variables);\n mergeDefs(definitions, ref.definitions);\n if (typeof ref.package === 'string') {\n packages.push({\n package: ref.package,\n shortName: name,\n type: stepType,\n platform: platform || 'web',\n });\n }\n }\n }\n }\n }\n }\n\n const ctx: Partial<IntelliSenseContext> = {\n variables,\n definitions,\n stepNames: { sources, destinations, transformers },\n };\n\n if (platform) ctx.platform = platform;\n if (packages.length > 0) ctx.packages = packages;\n if (contractEntities.length > 0) ctx.contract = contractEntities;\n\n return ctx;\n}\n\n// --- Reference Checking ---\n\nfunction checkReferences(\n text: string,\n context: Partial<IntelliSenseContext>,\n): ValidationIssue[] {\n const issues: ValidationIssue[] = [];\n\n if (context.variables) {\n const regex = /\\$var\\.(\\w+)/g;\n let match: RegExpExecArray | null;\n while ((match = regex.exec(text)) !== null) {\n if (!(match[1] in context.variables)) {\n const pos = offsetToPosition(text, match.index, match[0].length);\n issues.push({\n message: `Unknown variable \"$var.${match[1]}\". Defined: ${Object.keys(context.variables).join(', ') || 'none'}`,\n severity: 'warning',\n path: `$var.${match[1]}`,\n ...pos,\n });\n }\n }\n }\n\n if (context.definitions) {\n const regex = /\\$def\\.(\\w+)/g;\n let match: RegExpExecArray | null;\n while ((match = regex.exec(text)) !== null) {\n if (!(match[1] in context.definitions)) {\n const pos = offsetToPosition(text, match.index, match[0].length);\n issues.push({\n message: `Unknown definition \"$def.${match[1]}\". Defined: ${Object.keys(context.definitions).join(', ') || 'none'}`,\n severity: 'warning',\n path: `$def.${match[1]}`,\n ...pos,\n });\n }\n }\n }\n\n return issues;\n}\n\n// --- Position Utilities ---\n\nfunction getJsonParsePosition(\n error: unknown,\n json: string,\n): { line: number; column: number } {\n if (error instanceof SyntaxError) {\n // Node.js: \"... at position N\" or \"... at line N column M\"\n const posMatch = error.message.match(/position\\s+(\\d+)/);\n if (posMatch) {\n const offset = parseInt(posMatch[1], 10);\n return offsetToLineCol(json, offset);\n }\n const lineColMatch = error.message.match(/line\\s+(\\d+)\\s+column\\s+(\\d+)/);\n if (lineColMatch) {\n return {\n line: parseInt(lineColMatch[1], 10),\n column: parseInt(lineColMatch[2], 10),\n };\n }\n }\n return { line: 1, column: 1 };\n}\n\nfunction offsetToLineCol(\n text: string,\n offset: number,\n): { line: number; column: number } {\n let line = 1;\n let col = 1;\n for (let i = 0; i < offset && i < text.length; i++) {\n if (text[i] === '\\n') {\n line++;\n col = 1;\n } else {\n col++;\n }\n }\n return { line, column: col };\n}\n\nfunction offsetToPosition(\n text: string,\n startOffset: number,\n length: number,\n): { line: number; column: number; endLine: number; endColumn: number } {\n const start = offsetToLineCol(text, startOffset);\n const end = offsetToLineCol(text, startOffset + length);\n return {\n line: start.line,\n column: start.column,\n endLine: end.line,\n endColumn: end.column,\n };\n}\n\nfunction findPathPosition(\n json: string,\n path: (string | number)[],\n): { line: number; column: number } {\n if (path.length === 0) return { line: 1, column: 1 };\n\n // Search for the last path segment as a JSON key\n const lastKey = path[path.length - 1];\n if (typeof lastKey === 'string') {\n const pattern = `\"${lastKey}\"`;\n const idx = json.lastIndexOf(pattern);\n if (idx !== -1) return offsetToLineCol(json, idx);\n }\n\n return { line: 1, column: 1 };\n}\n\n// --- Helpers ---\n\nfunction isObject(v: unknown): v is Record<string, unknown> {\n return typeof v === 'object' && v !== null && !Array.isArray(v);\n}\n\nfunction isPrimitive(v: unknown): v is string | number | boolean {\n return (\n typeof v === 'string' || typeof v === 'number' || typeof v === 'boolean'\n );\n}\n\nfunction mergeVars(\n target: Record<string, string | number | boolean>,\n source: unknown,\n): void {\n if (!isObject(source)) return;\n for (const [k, v] of Object.entries(source)) {\n if (isPrimitive(v)) target[k] = v;\n }\n}\n\nfunction mergeDefs(target: Record<string, unknown>, source: unknown): void {\n if (!isObject(source)) return;\n for (const [k, v] of Object.entries(source)) {\n target[k] = v;\n }\n}\n\nfunction extractContractEntities(\n target: Array<{ entity: string; actions: string[] }>,\n contract: unknown,\n): void {\n if (!isObject(contract)) return;\n\n // Named contracts: iterate each named entry\n for (const [, entry] of Object.entries(contract)) {\n if (!isObject(entry)) continue;\n const events = entry.events;\n if (!isObject(events)) continue;\n\n for (const [entity, actions] of Object.entries(events)) {\n if (!isObject(actions)) continue;\n const existing = target.find((e) => e.entity === entity);\n const actionNames = Object.keys(actions);\n if (existing) {\n for (const a of actionNames) {\n if (!existing.actions.includes(a)) existing.actions.push(a);\n }\n } else {\n target.push({ entity, actions: actionNames });\n }\n }\n }\n}\n","/**\n * JSON Schema type\n */\nexport type JSONSchema = Record<string, unknown>;\n\n/**\n * Schema Builder - DRY utility for creating JSON Schemas\n *\n * This utility allows destinations to define schemas using simple objects,\n * without needing Zod as a dependency. The core package handles conversion.\n *\n * Benefits:\n * - Single source of schema generation logic\n * - No Zod dependency in destination packages\n * - Simple, declarative schema definitions\n * - Type-safe with TypeScript\n * - Follows DRY principle\n *\n * @example\n * // In destination package (NO Zod needed!)\n * import { createObjectSchema, createArraySchema } from '@walkeros/core/dev';\n *\n * export const settingsSchema = createObjectSchema({\n * pixelId: {\n * type: 'string',\n * required: true,\n * pattern: '^[0-9]+$',\n * description: 'Your Meta Pixel ID',\n * },\n * });\n */\n\n/**\n * Property definition for schema builder\n */\nexport interface PropertyDef {\n type: 'string' | 'number' | 'boolean' | 'object' | 'array';\n required?: boolean;\n description?: string;\n pattern?: string;\n minLength?: number;\n maxLength?: number;\n minimum?: number;\n maximum?: number;\n enum?: readonly string[] | readonly number[];\n properties?: Record<string, PropertyDef>;\n items?: PropertyDef;\n default?: unknown;\n}\n\n/**\n * Create object schema from property definitions\n *\n * @param properties - Property definitions\n * @param title - Optional schema title\n * @returns JSON Schema\n *\n * @example\n * const schema = createObjectSchema({\n * pixelId: {\n * type: 'string',\n * required: true,\n * pattern: '^[0-9]+$',\n * description: 'Your Meta Pixel ID',\n * },\n * eventName: {\n * type: 'string',\n * enum: ['PageView', 'Purchase'],\n * },\n * }, 'Meta Pixel Settings');\n */\nexport function createObjectSchema(\n properties: Record<string, PropertyDef>,\n title?: string,\n): JSONSchema {\n const required: string[] = [];\n const schemaProperties: Record<string, unknown> = {};\n\n for (const [key, def] of Object.entries(properties)) {\n if (def.required) {\n required.push(key);\n }\n\n const property: Record<string, unknown> = {\n type: def.type,\n };\n\n if (def.description) property.description = def.description;\n if (def.pattern) property.pattern = def.pattern;\n if (def.minLength !== undefined) property.minLength = def.minLength;\n if (def.maxLength !== undefined) property.maxLength = def.maxLength;\n if (def.minimum !== undefined) property.minimum = def.minimum;\n if (def.maximum !== undefined) property.maximum = def.maximum;\n if (def.enum) property.enum = [...def.enum];\n if (def.default !== undefined) property.default = def.default;\n\n // Nested object\n if (def.type === 'object' && def.properties) {\n const props: Record<string, unknown> = {};\n for (const [nestedKey, nestedDef] of Object.entries(def.properties)) {\n props[nestedKey] = createPropertySchema(nestedDef);\n }\n property.properties = props;\n }\n\n // Array\n if (def.type === 'array' && def.items) {\n property.items = createPropertySchema(def.items);\n }\n\n schemaProperties[key] = property;\n }\n\n const schema: JSONSchema = {\n type: 'object',\n properties: schemaProperties,\n };\n\n if (title) schema.title = title;\n if (required.length > 0) schema.required = required;\n\n return schema;\n}\n\n/**\n * Create property schema from definition\n * Helper for nested properties\n */\nfunction createPropertySchema(def: PropertyDef): Record<string, unknown> {\n const property: Record<string, unknown> = {\n type: def.type,\n };\n\n if (def.description) property.description = def.description;\n if (def.pattern) property.pattern = def.pattern;\n if (def.minLength !== undefined) property.minLength = def.minLength;\n if (def.maxLength !== undefined) property.maxLength = def.maxLength;\n if (def.minimum !== undefined) property.minimum = def.minimum;\n if (def.maximum !== undefined) property.maximum = def.maximum;\n if (def.enum) property.enum = [...def.enum];\n if (def.default !== undefined) property.default = def.default;\n\n // Nested object\n if (def.type === 'object' && def.properties) {\n const props: Record<string, unknown> = {};\n for (const [key, nestedDef] of Object.entries(def.properties)) {\n props[key] = createPropertySchema(nestedDef);\n }\n property.properties = props;\n }\n\n // Array\n if (def.type === 'array' && def.items) {\n property.items = createPropertySchema(def.items);\n }\n\n return property;\n}\n\n/**\n * Create array schema\n *\n * @param itemDef - Definition for array items\n * @param options - Optional array constraints\n * @returns JSON Schema\n *\n * @example\n * // Simple string array\n * const tagsSchema = createArraySchema({ type: 'string' });\n *\n * // Tuple (loop pattern) - exactly 2 items\n * const loopSchema = createArraySchema(\n * { type: 'object' },\n * { minItems: 2, maxItems: 2 }\n * );\n *\n * // Array with enum\n * const includeSchema = createArraySchema({\n * type: 'string',\n * enum: ['data', 'context', 'globals'],\n * });\n */\nexport function createArraySchema(\n itemDef: PropertyDef,\n options?: {\n minItems?: number;\n maxItems?: number;\n description?: string;\n title?: string;\n },\n): JSONSchema {\n const schema: JSONSchema = {\n type: 'array',\n items: createPropertySchema(itemDef),\n };\n\n if (options?.minItems !== undefined) schema.minItems = options.minItems;\n if (options?.maxItems !== undefined) schema.maxItems = options.maxItems;\n if (options?.description) schema.description = options.description;\n if (options?.title) schema.title = options.title;\n\n return schema;\n}\n\n/**\n * Create enum schema\n *\n * @param values - Allowed values\n * @param type - Value type ('string' or 'number')\n * @param options - Optional constraints\n * @returns JSON Schema\n *\n * @example\n * const eventTypeSchema = createEnumSchema(\n * ['PageView', 'Purchase', 'AddToCart'],\n * 'string',\n * { description: 'Meta Pixel standard event' }\n * );\n */\nexport function createEnumSchema(\n values: readonly string[] | readonly number[],\n type: 'string' | 'number' = 'string',\n options?: {\n description?: string;\n title?: string;\n },\n): JSONSchema {\n const schema: JSONSchema = {\n type,\n enum: [...values],\n };\n\n if (options?.description) schema.description = options.description;\n if (options?.title) schema.title = options.title;\n\n return schema;\n}\n\n/**\n * Create tuple schema (Loop pattern)\n *\n * Creates an array schema with exactly 2 items, which the Explorer\n * type detector recognizes as a \"loop\" pattern.\n *\n * @param firstItem - Definition for first element (source)\n * @param secondItem - Definition for second element (transform)\n * @param description - Optional description\n * @returns JSON Schema with minItems=2, maxItems=2\n *\n * @example\n * const loopSchema = createTupleSchema(\n * { type: 'string' },\n * { type: 'object' },\n * 'Loop: [source, transform]'\n * );\n */\nexport function createTupleSchema(\n firstItem: PropertyDef,\n secondItem: PropertyDef,\n description?: string,\n): JSONSchema {\n return createArraySchema(\n { type: 'object' }, // Generic, items can be different\n {\n minItems: 2,\n maxItems: 2,\n description:\n description || 'Tuple with exactly 2 elements [source, transform]',\n },\n );\n}\n","import { SourceSchemas, DestinationSchemas } from './schemas';\n\ntype PackageType = 'source' | 'destination' | 'transformer' | 'store';\n\ninterface PackageSchemas {\n settings?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\n// Fields to exclude from merged config (runtime-only, not flow.json-relevant)\nconst RUNTIME_ONLY_FIELDS = new Set(['env', 'onError', 'onLog', 'primary']);\n\n// Base config schemas by type\nconst BASE_SCHEMAS: Partial<Record<PackageType, Record<string, unknown>>> = {\n source: SourceSchemas.configJsonSchema,\n destination: DestinationSchemas.configJsonSchema,\n};\n\nexport function mergeConfigSchema(\n type: PackageType,\n packageSchemas: PackageSchemas,\n): Record<string, unknown> {\n const rawBaseSchema = BASE_SCHEMAS[type];\n const baseSchema = resolveBaseSchema(rawBaseSchema);\n\n if (!baseSchema || !baseSchema.properties) {\n const result: Record<string, unknown> = {\n type: 'object',\n properties: {\n settings: packageSchemas.settings\n ? stripDollarSchema(packageSchemas.settings)\n : { description: 'Implementation-specific configuration' },\n },\n };\n return result;\n }\n\n const merged = JSON.parse(JSON.stringify(baseSchema)) as Record<\n string,\n unknown\n >;\n const props = merged.properties as Record<string, unknown>;\n\n for (const field of RUNTIME_ONLY_FIELDS) {\n delete props[field];\n }\n\n if (packageSchemas.settings) {\n props.settings = stripDollarSchema(packageSchemas.settings);\n }\n\n return merged;\n}\n\n/**\n * Resolve the effective base schema object. Zod 4 emits `.meta({id})`-decorated\n * root schemas as either:\n * - Draft-7 form: `{ allOf: [{ $ref: '#/definitions/X' }], definitions: {...} }`\n * - Draft-2020 form: `{ $ref: '#/$defs/X', $defs: {...} }`\n * Unwrap one level if needed so callers can mutate `properties` directly.\n */\nfunction resolveBaseSchema(\n baseSchema: Record<string, unknown> | undefined,\n): Record<string, unknown> | undefined {\n if (!baseSchema) return baseSchema;\n if (baseSchema.properties) return baseSchema;\n\n const { ref, container, containerKey } = extractRef(baseSchema);\n if (!ref || !container) return baseSchema;\n\n const match = ref.match(/^#\\/(\\$defs|definitions)\\/(.+)$/);\n if (!match) return baseSchema;\n\n const defKey = match[2];\n const resolved = container[defKey];\n if (!resolved || typeof resolved !== 'object') return baseSchema;\n\n // Merge the defs container back so nested refs still resolve\n return {\n ...(resolved as Record<string, unknown>),\n [containerKey]: container,\n };\n}\n\nfunction extractRef(schema: Record<string, unknown>): {\n ref: string | undefined;\n container: Record<string, unknown> | undefined;\n containerKey: string;\n} {\n const defs = schema.$defs as Record<string, unknown> | undefined;\n const definitions = schema.definitions as Record<string, unknown> | undefined;\n const container = defs ?? definitions;\n const containerKey = defs ? '$defs' : 'definitions';\n\n let ref: string | undefined;\n if (typeof schema.$ref === 'string') {\n ref = schema.$ref;\n } else if (Array.isArray(schema.allOf)) {\n const first = schema.allOf[0] as Record<string, unknown> | undefined;\n if (first && typeof first.$ref === 'string') ref = first.$ref;\n }\n\n return { ref, container, containerKey };\n}\n\nfunction stripDollarSchema(\n schema: Record<string, unknown>,\n): Record<string, unknown> {\n const { $schema, ...rest } = schema;\n return rest;\n}\n","import type { Flow } from '../types/flow';\n\ntype StepOut = Flow.StepOut;\ntype StepEffect = Flow.StepEffect;\n\n/**\n * Format a step example's `out` as readable code for docs/app rendering.\n *\n * - Empty `out` → `// no output`.\n * - `['return', value]` → `return <value>` (no parentheses).\n * - `[callable, ...args]` → `callable(<args>)`.\n * - Primitive args render as JSON (strings quoted, numbers/booleans/null bare).\n * - `undefined` renders as the literal token `undefined`.\n * - Objects/arrays render as `JSON.stringify(v, null, 2)`.\n * - Functions render as `[Function]` (rare in outs; safe fallback).\n *\n * Pure function. No runtime dependencies. Used by the website\n * `<StepExample>` renderer and the app `OutputPanel` for a single source of truth.\n */\nexport function formatOut(out: StepOut): string {\n if (out.length === 0) return '// no output';\n return out.map(formatEffect).join(';\\n\\n');\n}\n\nfunction formatEffect(effect: StepEffect): string {\n const [callable, ...args] = effect;\n const argStr = args.map(formatValue).join(', ');\n if (callable === 'return') return argStr ? `return ${argStr}` : 'return';\n return `${callable}(${argStr})`;\n}\n\nfunction formatValue(v: unknown): string {\n if (v === undefined) return 'undefined';\n if (v === null) return 'null';\n if (typeof v === 'function') return '[Function]';\n return JSON.stringify(v, null, 2);\n}\n"],"mappings":"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","names":["CodeSchema","ConfigSchema","SourceSchema","configJsonSchema","ValueSchema","ValuesSchema","RulesSchema","PolicySchema","ConsentSchema","ConfigSchema","ResultSchema","configJsonSchema","ConfigSchema","ResultSchema","configJsonSchema","ConfigSchema","DestinationsSchema","InstanceSchema","PushContextSchema","configJsonSchema","instanceJsonSchema","pushContextJsonSchema","ConfigSchema","PushContextSchema","DestinationsSchema","InstanceSchema","configJsonSchema","pushContextJsonSchema","instanceJsonSchema","ConfigSchema","InitSchema","InstanceSchema","PartialConfigSchema","configJsonSchema","instanceJsonSchema","partialConfigJsonSchema","ConfigSchema","PartialConfigSchema","InstanceSchema","InitSchema","configJsonSchema","partialConfigJsonSchema","instanceJsonSchema","ConfigSchema","PartialConfigSchema","configJsonSchema","partialConfigJsonSchema","ConfigSchema","PartialConfigSchema","configJsonSchema","partialConfigJsonSchema","ConfigSchema","PartialConfigSchema","configJsonSchema","partialConfigJsonSchema","ConfigSchema","PartialConfigSchema","configJsonSchema","partialConfigJsonSchema","ConfigSchema","SourceSchema","configJsonSchema","SourceSchema","ConfigSchema","configJsonSchema","import_zod","CodeSchema"]}
|
|
1
|
+
{"version":3,"sources":["../src/dev.ts","../src/schemas/index.ts","../src/schemas/validation.ts","../src/schemas/primitives.ts","../src/schemas/utilities.ts","../src/schemas/patterns.ts","../src/schemas/walkeros.ts","../src/schemas/mapping.ts","../src/schemas/destination.ts","../src/schemas/matcher.ts","../src/schemas/cache.ts","../src/schemas/logger.ts","../src/schemas/collector.ts","../src/schemas/source.ts","../src/schemas/transformer.ts","../src/schemas/store.ts","../src/schemas/flow.ts","../src/schemas/hint.ts","../src/schemas/marketing.ts","../src/schemas/validate-flow-config.ts","../src/schemas/schema-builder.ts","../src/merge-config-schema.ts","../src/examples/formatOut.ts"],"sourcesContent":["export * as schemas from './schemas';\nexport { z, zodToSchema, type JSONSchema } from './schemas';\nexport { ClickIdEntrySchema } from './schemas';\nexport { mergeConfigSchema } from './merge-config-schema';\n\nexport { formatOut } from './examples/formatOut';\nexport type { Flow } from './types/flow';\n","/**\n * walkerOS Core Schemas\n *\n * Zod schemas for runtime validation and JSON Schema generation.\n * These schemas mirror TypeScript types in packages/core/src/types/\n * and are used for:\n * - Runtime validation at system boundaries (MCP tools, APIs, CLI)\n * - JSON Schema generation for Explorer UI (RJSF)\n * - Documentation and type metadata\n *\n * Note: TypeScript types remain the source of truth for development.\n * Schemas are for runtime validation and tooling support.\n *\n * Organization: Schema files mirror type files\n * - types/walkeros.ts → schemas/walkeros.ts\n * - types/mapping.ts → schemas/mapping.ts\n * - types/destination.ts → schemas/destination.ts\n * - types/collector.ts → schemas/collector.ts\n * - types/source.ts → schemas/source.ts\n * - types/flow.ts → schemas/flow.ts\n * - types/storage.ts + types/handler.ts → schemas/utilities.ts\n *\n * Import strategy:\n * Due to overlapping schema names across domains (ConfigSchema, InstanceSchema, etc.),\n * schemas are organized into namespaces. Import either:\n * 1. From namespaces: import { WalkerOSSchemas, MappingSchemas } from '@walkeros/core/dev'\n * 2. Direct from files: import { EventSchema } from '@walkeros/core/schemas/walkeros'\n */\n\n// ========================================\n// Primitives & Patterns (DRY building blocks)\n// ========================================\n\nexport * from './primitives';\nexport * from './patterns';\n\n// ========================================\n// Namespace Exports (prevents name collisions)\n// ========================================\n\nimport * as WalkerOSSchemas from './walkeros';\nimport * as MappingSchemas from './mapping';\nimport * as DestinationSchemas from './destination';\nimport * as CollectorSchemas from './collector';\nimport * as SourceSchemas from './source';\nimport * as TransformerSchemas from './transformer';\nimport * as StoreSchemas from './store';\nimport * as FlowSchemas from './flow';\nimport * as UtilitySchemas from './utilities';\n\nexport {\n WalkerOSSchemas,\n MappingSchemas,\n DestinationSchemas,\n CollectorSchemas,\n SourceSchemas,\n TransformerSchemas,\n StoreSchemas,\n FlowSchemas,\n UtilitySchemas,\n};\n\n// Cache schemas (used by flow schemas for caching)\nimport * as CacheSchemas from './cache';\nexport { CacheSchemas };\nexport { CacheSchema, CacheRuleSchema } from './cache';\n\n// Matcher schemas (used by flow schemas for routing)\nimport * as MatcherSchemas from './matcher';\nexport { MatcherSchemas };\nexport {\n MatchExpressionSchema,\n RoutableNextSchema,\n NextRuleSchema,\n} from './matcher';\n\n// Hint schemas (direct export - flat record, no namespace needed)\nexport { CodeSchema, HintSchema, HintsSchema } from './hint';\nexport { ClickIdEntrySchema } from './marketing';\n\n// Logger schemas (shared config used by destination/source/transformer/store/collector)\nexport { LoggerConfigSchema, LoggerHandlerSchema } from './logger';\n\n// ========================================\n// Direct Exports (commonly used schemas)\n// ========================================\n\n// Export commonly used schemas from WalkerOS namespace directly\nexport {\n EventSchema,\n PartialEventSchema,\n DeepPartialEventSchema,\n PropertiesSchema,\n OrderedPropertiesSchema,\n UserSchema,\n EntitySchema,\n EntitiesSchema,\n ConsentSchema,\n SourceTypeSchema,\n SourceSchema,\n PropertySchema,\n PropertyTypeSchema,\n // JSON Schemas\n eventJsonSchema,\n partialEventJsonSchema,\n userJsonSchema,\n propertiesJsonSchema,\n orderedPropertiesJsonSchema,\n entityJsonSchema,\n sourceTypeJsonSchema,\n consentJsonSchema,\n} from './walkeros';\n\n// Export commonly used schemas from Mapping namespace directly\nexport {\n ValueSchema,\n ValuesSchema,\n ValueConfigSchema,\n LoopSchema,\n SetSchema,\n MapSchema,\n PolicySchema,\n RuleSchema,\n RulesSchema,\n ResultSchema as MappingResultSchema, // Alias to avoid conflict with Destination.ResultSchema\n // JSON Schemas\n valueJsonSchema,\n valueConfigJsonSchema,\n loopJsonSchema,\n setJsonSchema,\n mapJsonSchema,\n policyJsonSchema,\n ruleJsonSchema,\n rulesJsonSchema,\n} from './mapping';\n\n// Export commonly used schemas from Flow namespace directly\nexport {\n JsonSchema as FlowJsonSchema,\n FlowSchema,\n ConfigSchema as FlowConfigSchema,\n ContractSchema,\n ContractActionsSchema,\n ContractSchemaEntry,\n ContractRuleSchema,\n SourceSchema as FlowSourceSchema,\n DestinationSchema as FlowDestinationSchema,\n StoreSchema as FlowStoreSchema,\n TransformerSchema as FlowTransformerSchema,\n CodeSchema as FlowCodeSchema,\n BundleSchema as FlowBundleSchema,\n BundlePackageSchema as FlowBundlePackageSchema,\n parseConfig,\n safeParseConfig,\n parseFlow,\n safeParseFlow,\n // JSON Schemas\n configJsonSchema,\n flowJsonSchema,\n flowConfigJsonSchema,\n sourceJsonSchema,\n destinationJsonSchema,\n storeJsonSchema,\n transformerJsonSchema,\n contractRuleJsonSchema,\n contractJsonSchema,\n} from './flow';\n\n// Validation\nexport type { ValidationIssue, ValidationResult } from './validate';\nexport type { IntelliSenseContext, PackageInfo } from './intellisense';\nexport { validateFlowConfig } from './validate-flow-config';\n\n// ========================================\n// Schema Builder - DRY utility for destinations\n// ========================================\n\n/**\n * Schema Builder - DRY utility for destinations\n *\n * Destinations can use these utilities to create JSON Schemas WITHOUT\n * needing Zod as a dependency. The core package handles all schema logic.\n *\n * This follows the DRY principle - write once in core, use everywhere.\n */\nexport * from './schema-builder';\n\n/**\n * Re-export Zod and zod-to-json-schema for destinations\n *\n * Destinations can import Zod from @walkeros/core instead of adding\n * their own dependency. This ensures version consistency and reduces\n * duplicate dependencies in the monorepo.\n *\n * Usage in destinations:\n * import { z, zodToSchema } from '@walkeros/core/dev';\n */\nexport { z } from './validation';\n\nimport type { zod } from './validation';\nimport { z } from './validation';\n\n/**\n * JSONSchema type for JSON Schema Draft 7 objects\n *\n * Represents a JSON Schema object as returned by Zod's toJSONSchema().\n * Uses Record<string, unknown> as JSON Schema structure is dynamic.\n */\nexport type JSONSchema = Record<string, unknown>;\n\n/**\n * Utility to convert Zod schema to JSON Schema with consistent defaults\n *\n * This wrapper ensures all destinations use the same JSON Schema configuration:\n * - target: 'draft-7' (JSON Schema Draft 7 format)\n *\n * Usage in destinations:\n * import { zodToSchema } from '@walkeros/core/dev';\n * export const settings = zodToSchema(SettingsSchema);\n *\n * @param schema - Zod schema to convert\n * @returns JSON Schema Draft 7 object\n */\nexport function zodToSchema(schema: zod.ZodTypeAny): JSONSchema {\n return z.toJSONSchema(schema, {\n target: 'draft-7',\n }) as JSONSchema;\n}\n","/**\n * Central validation module\n * Single source of truth for validation library access\n *\n * All schema files should import from this module instead of directly\n * from zod to ensure consistent usage and easy maintenance.\n */\n\nimport { z } from 'zod';\n\n// Re-export validation tools for schema files\nexport { z };\nexport type { z as zod } from 'zod';\n\n/**\n * Standard JSON Schema conversion with consistent project defaults\n *\n * Uses Zod 4 native toJSONSchema() method for JSON Schema generation.\n * All walkerOS schemas use JSON Schema Draft 7 format.\n *\n * @param schema - Zod schema to convert\n * @param _name - Schema name (ignored in Zod 4, kept for API compatibility)\n * @param target - JSON Schema target version (default: 'draft-7')\n * @returns JSON Schema object\n */\nexport function toJsonSchema(\n schema: z.ZodTypeAny,\n _name?: string,\n target: 'draft-7' | 'draft-2020-12' | 'openapi-3.0' = 'draft-7',\n) {\n return z.toJSONSchema(schema, {\n target,\n });\n}\n","import { z } from './validation';\n\n/**\n * Primitive Schema Definitions\n *\n * Reusable primitive schemas following DRY principle.\n * These are the building blocks used throughout all schemas to ensure consistency.\n *\n * Benefits:\n * - Single source of truth for common patterns\n * - Consistent descriptions across all schemas\n * - Easier maintenance and updates\n * - Better IntelliSense/autocomplete\n */\n\n// ========================================\n// Basic Primitives\n// ========================================\n\n/**\n * Required string field\n * Used for required text fields throughout schemas\n */\nexport const RequiredString = z.string();\n\n/**\n * Required number field\n * Used for required numeric fields throughout schemas\n */\nexport const RequiredNumber = z.number();\n\n/**\n * Required boolean field\n * Used for required flag fields throughout schemas\n */\nexport const RequiredBoolean = z.boolean();\n\n// ========================================\n// Semantic Primitives\n// ========================================\n\n/**\n * Identifier - Required unique string identifier\n * Used for entity IDs, session IDs, etc.\n */\nexport const Identifier = z.string().min(1);\n\n/**\n * Timestamp - Unix timestamp in milliseconds\n * Used for event timestamps, session timestamps, etc.\n */\nexport const Timestamp = z.number().int().positive();\n\n/**\n * Counter - Sequential counter (non-negative integer)\n * Used for event counts, session counts, etc.\n */\nexport const Counter = z.number().int().nonnegative();\n\n// ========================================\n// Primitive Value Unions\n// ========================================\n\n/**\n * PrimitiveValue - Basic primitive types\n * Union of string, number, and boolean\n * Used in Property definitions and value transformations\n */\nexport const PrimitiveValue = z.union([z.string(), z.number(), z.boolean()]);\n\n/**\n * OptionalPrimitiveValue - Optional primitive value\n */\nexport const OptionalPrimitiveValue = PrimitiveValue.optional();\n","import { z, toJsonSchema } from './validation';\n\n/**\n * Utility Schemas\n *\n * Mirrors: types/storage.ts, types/handler.ts, and other utility types\n * Purpose: Runtime validation and JSON Schema generation for utility types\n *\n * Small, standalone schemas for utility types used throughout walkerOS:\n * - Storage types\n * - Handler functions\n * - Error/log management\n */\n\n// ========================================\n// Storage Schemas\n// ========================================\n\n/**\n * StorageType - Storage mechanism identifier\n *\n * Standard storage types:\n * - local: localStorage (persistent)\n * - session: sessionStorage (session-scoped)\n * - cookie: document.cookie (configurable expiry)\n *\n * Used for session persistence and user tracking\n */\nexport const StorageTypeSchema = z\n .enum(['local', 'session', 'cookie'])\n .meta({\n id: 'StorageType',\n title: 'Storage.Type',\n description: 'Storage mechanism: local, session, or cookie.',\n })\n .describe('Storage mechanism: local, session, or cookie');\n\n/**\n * Storage - Storage type constants\n * Provides const values for type-safe storage type references\n */\nexport const StorageSchema = z\n .object({\n Local: z.literal('local'),\n Session: z.literal('session'),\n Cookie: z.literal('cookie'),\n })\n .meta({\n id: 'StorageConstants',\n title: 'Storage',\n description: 'Storage type constants for type-safe references.',\n })\n .describe('Storage type constants for type-safe references');\n\n// ========================================\n// Handler Schemas\n// ========================================\n\n/**\n * Error - Error handler function type\n *\n * Signature: (error: unknown, state?: unknown) => void\n *\n * Called when errors occur during:\n * - Event processing\n * - Destination push operations\n * - Source event handling\n * - Mapping transformations\n *\n * Parameters:\n * - error: The error that occurred\n * - state: Optional state information for debugging\n *\n * Note: Function schemas use z.unknown() as functions aren't serializable\n */\nexport const ErrorHandlerSchema = z\n .unknown()\n .meta({\n id: 'ErrorHandler',\n title: 'Error.Handler',\n description: 'Error handler function: (error, state?) => void.',\n })\n .describe('Error handler function: (error, state?) => void');\n\n/**\n * Log - Log handler function type\n *\n * Signature: (message: string, verbose?: boolean) => void\n *\n * Called for logging during:\n * - Event processing\n * - Configuration updates\n * - Debugging (when verbose enabled)\n *\n * Parameters:\n * - message: Log message\n * - verbose: Whether this is a verbose-only log\n *\n * Note: Function schemas use z.unknown() as functions aren't serializable\n */\nexport const LogHandlerSchema = z\n .unknown()\n .meta({\n id: 'LogHandler',\n title: 'Log.Handler',\n description: 'Log handler function: (message, verbose?) => void.',\n })\n .describe('Log handler function: (message, verbose?) => void');\n\n/**\n * Handler - Combined handler interface\n * Groups Error and Log handlers\n */\nexport const HandlerSchema = z\n .object({\n Error: ErrorHandlerSchema.describe('Error handler function'),\n Log: LogHandlerSchema.describe('Log handler function'),\n })\n .meta({\n id: 'Handler',\n title: 'Handler',\n description: 'Handler interface with error and log functions.',\n })\n .describe('Handler interface with error and log functions');\n\n// ========================================\n// JSON Schema Exports (for Explorer/RJSF/MCP)\n// ========================================\n\nexport const storageTypeJsonSchema = toJsonSchema(\n StorageTypeSchema,\n 'StorageType',\n);\n\nexport const storageJsonSchema = toJsonSchema(StorageSchema, 'Storage');\n\nexport const errorHandlerJsonSchema = toJsonSchema(\n ErrorHandlerSchema,\n 'ErrorHandler',\n);\n\nexport const logHandlerJsonSchema = toJsonSchema(\n LogHandlerSchema,\n 'LogHandler',\n);\n\nexport const handlerJsonSchema = toJsonSchema(HandlerSchema, 'Handler');\n","import { z } from './validation';\nimport {} from './primitives';\nimport { ErrorHandlerSchema, LogHandlerSchema } from './utilities';\n\n/**\n * Common Schema Patterns\n *\n * Reusable schema patterns that appear across multiple domain schemas.\n * These patterns combine primitives into commonly used configurations.\n *\n * Benefits:\n * - DRY principle for complex patterns\n * - Consistent configuration interfaces\n * - Single source of truth for common configs\n * - Easier to maintain and update patterns globally\n */\n\n// ========================================\n// Handler Patterns\n// ========================================\n\n/**\n * HandlersConfig - Error and log handler configuration\n * Used in: Destination.Config, Collector.Config, Source.Config\n */\nexport const HandlersConfig = z\n .object({\n onError: ErrorHandlerSchema.optional().describe(\n 'Error handler function: (error, state?) => void',\n ),\n onLog: LogHandlerSchema.optional().describe(\n 'Log handler function: (message, verbose?) => void',\n ),\n })\n .partial();\n\n// ========================================\n// Configuration Patterns\n// ========================================\n\n/**\n * VerboseConfig - Verbose logging configuration\n * Used in: Destination.Config, Collector.Config\n */\nexport const VerboseConfig = z\n .object({\n verbose: z\n .boolean()\n .describe('Enable verbose logging for debugging')\n .optional(),\n })\n .partial();\n\n/**\n * QueueConfig - Event queueing configuration\n * Used in: Destination.Config\n */\nexport const QueueConfig = z\n .object({\n queue: z\n .boolean()\n .describe('Whether to queue events when consent is not granted')\n .optional(),\n })\n .partial();\n\n/**\n * IdConfig - ID configuration pattern\n * Used in: Destination.Config, Source.Config\n */\nexport const IdConfig = z.object({}).partial();\n\n/**\n * InitConfig - Initialization configuration pattern\n * Used in: Destination.Config\n */\nexport const InitConfig = z\n .object({\n init: z.boolean().describe('Whether to initialize immediately').optional(),\n loadScript: z\n .boolean()\n .describe('Whether to load external script (for web destinations)')\n .optional(),\n })\n .partial();\n\n/**\n * PrimaryConfig - Primary flag configuration\n * Used in: Source.Config, Source.InitSource\n */\nexport const PrimaryConfig = z\n .object({\n primary: z\n .boolean()\n .describe('Mark as primary (only one can be primary)')\n .optional(),\n })\n .partial();\n\n// ========================================\n// Generic Configuration Patterns\n// ========================================\n\n/**\n * GenericSettingsConfig - Generic settings configuration\n * Used in: Destination.Config, Source.Config, Collector runtime\n * Settings are implementation-specific and can't be validated generically\n */\nexport const GenericSettingsConfig = z\n .object({\n settings: z\n .any()\n .optional()\n .describe('Implementation-specific configuration'),\n })\n .partial();\n\n/**\n * GenericEnvConfig - Generic environment configuration\n * Used in: Destination.Config, Source.Config, Source.BaseEnv\n * Environment is platform-specific and can't be validated generically\n */\nexport const GenericEnvConfig = z\n .object({\n env: z\n .any()\n .optional()\n .describe('Environment dependencies (platform-specific)'),\n })\n .partial();\n\n// ========================================\n// Mapping Patterns\n// ========================================\n\n/**\n * DataTransformationConfig - Data transformation configuration\n * Used in: Destination.Config, Mapping.Config, Mapping.Rule\n *\n * Note: This creates a forward reference to ValueSchema/ValuesSchema\n * Import from mapping.ts to avoid circular dependencies\n */\nexport function createDataTransformationConfig(\n ValueSchema: z.ZodTypeAny,\n ValuesSchema: z.ZodTypeAny,\n) {\n return z\n .object({\n data: z\n .union([ValueSchema, ValuesSchema])\n .optional()\n .describe('Data transformation rules'),\n })\n .partial();\n}\n\n/**\n * MappingRulesConfig - Mapping rules configuration\n * Used in: Destination.Config, Source.Config (via Mapping.Config)\n *\n * Note: This creates a forward reference to RulesSchema\n * Import from mapping.ts to avoid circular dependencies\n */\nexport function createMappingRulesConfig(RulesSchema: z.ZodTypeAny) {\n return z\n .object({\n mapping: RulesSchema.optional().describe('Event mapping rules'),\n })\n .partial();\n}\n\n/**\n * PolicyConfig - Policy rules configuration\n * Used in: Destination.Config, Mapping.Config, Mapping.Rule\n *\n * Note: This creates a forward reference to PolicySchema\n * Import from mapping.ts to avoid circular dependencies\n */\nexport function createPolicyConfig(PolicySchema: z.ZodTypeAny) {\n return z\n .object({\n policy: PolicySchema.optional().describe('Pre-processing policy rules'),\n })\n .partial();\n}\n\n/**\n * ConsentConfig - Consent requirements configuration\n * Used in: Destination.Config, Mapping.Config, Mapping.Rule, Event\n *\n * Note: This creates a forward reference to ConsentSchema\n * Import from walkeros.ts to avoid circular dependencies\n */\nexport function createConsentConfig(ConsentSchema: z.ZodTypeAny) {\n return z\n .object({\n consent: ConsentSchema.optional().describe('Required consent states'),\n })\n .partial();\n}\n\n// ========================================\n// Instance Patterns\n// ========================================\n\n/**\n * RuntimeInstanceConfig - Runtime instance configuration\n * Used in: Destination.Instance, Source.Instance, Collector.Instance\n *\n * Common fields for runtime instances:\n * - type: Instance type identifier\n * - config: Configuration object\n * - Functions (push, init, etc.) are instance-specific\n */\nexport const RuntimeInstanceConfig = z\n .object({\n type: z.string().optional().describe('Instance type identifier'),\n config: z.unknown().describe('Instance configuration'),\n })\n .partial();\n\n// ========================================\n// Context Patterns\n// ========================================\n\n/**\n * BaseContextConfig - Base context configuration\n * Used in: Destination.Context, Source contexts\n *\n * Common fields for contexts:\n * - collector: Collector instance (runtime)\n * - config: Configuration\n * - env: Environment dependencies\n */\nexport const BaseContextConfig = z\n .object({\n collector: z.unknown().describe('Collector instance (runtime object)'),\n config: z.unknown().describe('Configuration'),\n env: z.unknown().describe('Environment dependencies'),\n })\n .partial();\n\n// ========================================\n// Batch Patterns\n// ========================================\n\n/**\n * BatchConfig - Batch processing configuration\n * Used in: Mapping.Rule\n */\nexport const BatchConfig = z\n .object({\n batch: z\n .number()\n .optional()\n .describe('Batch size: bundle N events for batch processing'),\n batched: z.unknown().optional().describe('Batch of events to be processed'),\n })\n .partial();\n\n// ========================================\n// Processing Patterns\n// ========================================\n\n/**\n * ProcessingControlConfig - Processing control flags\n * Used in: Mapping.Rule\n */\nexport const ProcessingControlConfig = z\n .object({\n ignore: z.boolean().describe('Set to true to skip processing').optional(),\n condition: z\n .string()\n .optional()\n .describe('Condition function: return true to process'),\n })\n .partial();\n\n// ========================================\n// Collection Patterns\n// ========================================\n\n/**\n * SourcesMapConfig - Sources collection pattern\n * Used in: Collector.Instance\n */\nexport const SourcesMapConfig = z\n .object({\n sources: z\n .record(z.string(), z.unknown())\n .describe('Map of source instances'),\n })\n .partial();\n\n/**\n * DestinationsMapConfig - Destinations collection pattern\n * Used in: Collector.Instance\n */\nexport const DestinationsMapConfig = z\n .object({\n destinations: z\n .record(z.string(), z.unknown())\n .describe('Map of destination instances'),\n })\n .partial();\n","import { z, toJsonSchema } from './validation';\nimport {\n RequiredString,\n RequiredNumber,\n Identifier,\n Timestamp,\n} from './primitives';\n\n/**\n * Core walkerOS Event Model Schemas\n *\n * Mirrors: types/walkeros.ts\n * Purpose: Runtime validation and JSON Schema generation for MCP tools, Explorer UI, and API boundaries\n *\n * These schemas provide:\n * 1. Runtime validation for event data\n * 2. JSON Schema generation for RJSF/Explorer\n * 3. Type documentation via .describe()\n * 4. Compile-time type checking (schemas mirror TypeScript types)\n *\n * Note: TypeScript types in types/walkeros.ts remain the source of truth for development.\n * These Zod schemas are for validation and JSON Schema generation at runtime boundaries.\n */\n\n// ========================================\n// Base Property Types (Recursive)\n// ========================================\n\n/**\n * PropertyType - Base property value types\n * Can be primitive (boolean, string, number) or nested object with Property values\n */\nexport const PropertyTypeSchema: z.ZodTypeAny = z\n .lazy(() =>\n z.union([\n z.boolean(),\n z.string(),\n z.number(),\n z.record(z.string(), PropertySchema),\n ]),\n )\n .meta({\n id: 'WalkerOSPropertyType',\n title: 'WalkerOS.PropertyType',\n description:\n 'Base property value types (boolean, string, number, or nested Property record).',\n });\n\n/**\n * Property - PropertyType or array of PropertyType\n * Recursive structure allows nested objects and arrays\n */\nexport const PropertySchema: z.ZodTypeAny = z\n .lazy(() => z.union([PropertyTypeSchema, z.array(PropertyTypeSchema)]))\n .meta({\n id: 'WalkerOSProperty',\n title: 'WalkerOS.Property',\n description:\n 'PropertyType or an array of PropertyType. Recursive structure for nested objects and arrays.',\n });\n\n/**\n * Properties - Record of string keys to Property values\n * Used throughout event structure (data, globals, custom, etc.)\n */\nexport const PropertiesSchema = z\n .record(z.string(), PropertySchema.optional())\n .meta({\n id: 'WalkerOSProperties',\n title: 'WalkerOS.Properties',\n description: 'Flexible property collection with optional values.',\n })\n .describe('Flexible property collection with optional values');\n\n/**\n * OrderedProperties - Record with [value, order] tuples\n * Used for context data where order matters\n */\nexport const OrderedPropertiesSchema = z\n .record(z.string(), z.tuple([PropertySchema, z.number()]).optional())\n .meta({\n id: 'WalkerOSOrderedProperties',\n title: 'WalkerOS.OrderedProperties',\n description:\n 'Ordered properties with [value, order] tuples for priority control.',\n })\n .describe(\n 'Ordered properties with [value, order] tuples for priority control',\n );\n\n// ========================================\n// Enums & Union Types\n// ========================================\n\n/**\n * SourceType - Event source identifier\n * Standard types: web, server, app, other\n * Extensible: allows custom string values\n */\nexport const SourceTypeSchema = z\n .union([z.enum(['web', 'server', 'app', 'other']), z.string()])\n .meta({\n id: 'WalkerOSSourceType',\n title: 'WalkerOS.SourceType',\n description:\n 'Source type identifier. Standard: web, server, app, other. Extensible to custom strings.',\n })\n .describe('Source type: web, server, app, other, or custom');\n\n// ========================================\n// Event Sub-Types\n// ========================================\n\n/**\n * Consent - Consent state mapping\n * Maps consent group names to boolean states\n * Used in Event and Destination/Source configs\n */\nexport const ConsentSchema = z\n .record(z.string(), z.boolean())\n .meta({\n id: 'WalkerOSConsent',\n title: 'WalkerOS.Consent',\n description:\n 'Consent state mapping. Keys are consent groups (e.g. marketing, functional), values are booleans for granted/denied.',\n })\n .describe('Consent requirement mapping (group name to state)');\n\n/**\n * User - User identification and attributes\n * Extends Properties with specific optional fields\n * Contains IDs, demographics, device info, and location data\n */\nexport const UserSchema = PropertiesSchema.and(\n z.object({\n // IDs\n id: z.string().optional().describe('User identifier'),\n device: z.string().optional().describe('Device identifier'),\n session: z.string().optional().describe('Session identifier'),\n hash: z.string().optional().describe('Hashed identifier'),\n // User attributes\n address: z.string().optional().describe('User address'),\n email: z.string().email().optional().describe('User email address'),\n phone: z.string().optional().describe('User phone number'),\n // Technical attributes\n userAgent: z.string().optional().describe('Browser user agent string'),\n browser: z.string().optional().describe('Browser name'),\n browserVersion: z.string().optional().describe('Browser version'),\n deviceType: z\n .string()\n .optional()\n .describe('Device type (mobile, desktop, tablet)'),\n os: z.string().optional().describe('Operating system'),\n osVersion: z.string().optional().describe('Operating system version'),\n screenSize: z.string().optional().describe('Screen dimensions'),\n // Location attributes\n language: z.string().optional().describe('User language'),\n country: z.string().optional().describe('User country'),\n region: z.string().optional().describe('User region/state'),\n city: z.string().optional().describe('User city'),\n zip: z.string().optional().describe('User postal code'),\n timezone: z.string().optional().describe('User timezone'),\n ip: z.string().optional().describe('User IP address'),\n // Flags\n internal: z\n .boolean()\n .optional()\n .describe('Internal user flag (employee, test user)'),\n }),\n)\n .meta({\n id: 'WalkerOSUser',\n title: 'WalkerOS.User',\n description: 'User identification and attributes.',\n })\n .describe('User identification and properties');\n\n/**\n * Source - Event source information (v4)\n * Identifies where the event originated. The `type` field is the source kind\n * (browser, dataLayer, gtag, ...). All other fields are optional since each\n * source kind augments this differently via `SourceMap`.\n */\nexport const SourceSchema = PropertiesSchema.and(\n z.object({\n type: z.string().describe('Source kind (browser, dataLayer, gtag, ...)'),\n platform: z\n .string()\n .optional()\n .describe(\n 'Runtime platform (web, server, app, ios, android, terminal, ...)',\n ),\n version: z\n .string()\n .optional()\n .describe('Deployment version of the source emitter'),\n schema: z\n .string()\n .optional()\n .describe('Event model spec version (collector defaults to \"4\")'),\n count: z\n .number()\n .int()\n .nonnegative()\n .optional()\n .describe('Emission sequence per run'),\n trace: z.string().optional().describe('W3C traceparent full string'),\n url: z.string().optional(),\n referrer: z.string().optional(),\n tool: z.string().optional(),\n command: z.string().optional(),\n }),\n)\n .meta({\n id: 'WalkerOSSource',\n title: 'WalkerOS.Source',\n description: 'Event source information (origin of the event).',\n })\n .describe('Event source information');\n\n/**\n * Entity - Nested entity structure\n * Allows events to contain related entities with their own data and context\n * Recursive: entities can contain nested entities\n */\nexport const EntitySchema: z.ZodTypeAny = z\n .lazy(() =>\n z.object({\n entity: z.string().describe('Entity name'),\n data: PropertiesSchema.describe('Entity-specific properties'),\n nested: z\n .array(EntitySchema)\n .optional()\n .describe('Nested child entities'),\n context: OrderedPropertiesSchema.optional().describe(\n 'Entity context data',\n ),\n }),\n )\n .meta({\n id: 'WalkerOSEntity',\n title: 'WalkerOS.Entity',\n description: 'Nested entity structure with recursive nesting support.',\n })\n .describe('Nested entity structure with recursive nesting support');\n\n/**\n * Entities - Array of Entity objects\n */\nexport const EntitiesSchema = z\n .array(EntitySchema)\n .meta({\n id: 'WalkerOSEntities',\n title: 'WalkerOS.Entities',\n description: 'Array of nested entities.',\n })\n .describe('Array of nested entities');\n\n// ========================================\n// Main Event Schema\n// ========================================\n\n/**\n * Event - Complete walkerOS event structure\n *\n * Core fields:\n * - name: Event identifier in \"entity action\" format (e.g., \"page view\")\n * - data: Event-specific properties\n * - context: Ordered context properties\n * - globals: Global properties shared across events\n * - custom: Custom properties specific to implementation\n * - user: User identification and attributes\n * - nested: Related entities\n * - consent: Consent states at event time\n *\n * System-generated fields:\n * - id: Unique event identifier\n * - timestamp: Event creation time (milliseconds since epoch)\n * - entity: Parsed entity name from event.name\n * - action: Parsed action name from event.name\n * - trigger: Event trigger identifier\n * - timing: Event processing timing information\n * - group: Event grouping identifier\n * - count: Event count in session\n * - version: Walker version information\n * - source: Event source information\n */\nexport const EventSchema = z\n .object({\n // Core event identification\n name: z\n .string()\n .describe(\n 'Event name in \"entity action\" format (e.g., \"page view\", \"product add\")',\n ),\n\n // Event data\n data: PropertiesSchema.describe('Event-specific properties'),\n context: OrderedPropertiesSchema.describe(\n 'Ordered context properties with priorities',\n ),\n globals: PropertiesSchema.describe(\n 'Global properties shared across events',\n ),\n custom: PropertiesSchema.describe(\n 'Custom implementation-specific properties',\n ),\n\n // Related data\n user: UserSchema.describe('User identification and attributes'),\n nested: EntitiesSchema.describe('Related nested entities'),\n consent: ConsentSchema.describe('Consent states at event time'),\n\n // System-generated fields\n id: Identifier.describe('W3C span_id, 16 lowercase hex characters'),\n trigger: RequiredString.describe('Event trigger identifier'),\n entity: RequiredString.describe('Parsed entity from event name'),\n action: RequiredString.describe('Parsed action from event name'),\n timestamp: Timestamp.describe('Unix timestamp in milliseconds since epoch'),\n timing: RequiredNumber.describe('Event processing timing information'),\n\n // Source tracking (event-model spec version moved to source.schema)\n source: SourceSchema.describe('Event source information'),\n })\n .meta({\n id: 'WalkerOSEvent',\n title: 'WalkerOS.Event',\n description: 'Complete walkerOS event structure.',\n })\n .describe('Complete walkerOS event structure');\n\n/**\n * PartialEvent - Event with all fields optional\n * Used for event creation where not all fields are provided\n */\nexport const PartialEventSchema = EventSchema.partial()\n .meta({\n id: 'WalkerOSPartialEvent',\n title: 'WalkerOS.PartialEvent',\n description: 'Partial event structure with all fields optional.',\n })\n .describe('Partial event structure with all fields optional');\n\n/**\n * DeepPartialEvent - Event with all fields optional\n * Used for event updates and patches\n *\n * Note: While the TypeScript type uses DeepPartial<Event> for compile-time validation,\n * the Zod schema uses .partial() which makes top-level fields optional. This is\n * sufficient for runtime validation as deeply nested partial objects are rarely\n * provided (users typically omit entire objects rather than providing partial nested data).\n * Zod 4 deliberately removed .deepPartial() due to internal type complexity issues.\n */\nexport const DeepPartialEventSchema: z.ZodTypeAny = EventSchema.partial()\n .meta({\n id: 'WalkerOSDeepPartialEvent',\n title: 'WalkerOS.DeepPartialEvent',\n description: 'Partial event structure with all top-level fields optional.',\n })\n .describe('Partial event structure with all top-level fields optional');\n\n// ========================================\n// JSON Schema Exports (for Explorer/RJSF/MCP)\n// ========================================\n\nexport const eventJsonSchema = toJsonSchema(EventSchema, 'Event');\n\nexport const partialEventJsonSchema = toJsonSchema(\n PartialEventSchema,\n 'PartialEvent',\n);\n\nexport const userJsonSchema = toJsonSchema(UserSchema, 'User');\n\nexport const propertiesJsonSchema = toJsonSchema(\n PropertiesSchema,\n 'Properties',\n);\n\nexport const orderedPropertiesJsonSchema = toJsonSchema(\n OrderedPropertiesSchema,\n 'OrderedProperties',\n);\n\nexport const entityJsonSchema = toJsonSchema(EntitySchema, 'Entity');\n\nexport const sourceTypeJsonSchema = toJsonSchema(\n SourceTypeSchema,\n 'SourceType',\n);\n\nexport const consentJsonSchema = toJsonSchema(ConsentSchema, 'Consent');\n","import { z, toJsonSchema } from './validation';\nimport { ConsentSchema } from './walkeros';\n\n/**\n * Mapping System Schemas\n *\n * Mirrors: types/mapping.ts\n * Purpose: Runtime validation and JSON Schema generation for event transformation rules\n *\n * The mapping system allows flexible transformation of events as they flow through\n * the collector to destinations. This includes:\n * - Value extraction and transformation\n * - Conditional logic\n * - Data mapping and restructuring\n * - Array processing (loops)\n * - Consent-based filtering\n *\n * Key Features:\n * - Recursive value definitions (Value → ValueConfig → Value)\n * - Loop vs Set distinction via JSON Schema (minItems/maxItems)\n * - Lazy evaluation for circular dependencies\n * - Function serialization support (functions as strings)\n */\n\n// ========================================\n// Recursive Value Schemas\n// ========================================\n\n// Forward declaration for circular dependency\nlet ValueConfigSchemaLazy: z.ZodTypeAny;\n\n/**\n * Value - Core value type for mapping transformations\n *\n * Can be:\n * - Primitive: string, number, boolean\n * - ValueConfig: Complex transformation object\n * - Array: Multiple values/configs\n *\n * Recursive structure allows nested transformations\n */\nexport const ValueSchema: z.ZodTypeAny = z\n .lazy(() =>\n z.union([\n z.string().describe('String value or property path (e.g., \"data.id\")'),\n z.number().describe('Numeric value'),\n z.boolean().describe('Boolean value'),\n z.lazy(() => ValueConfigSchemaLazy),\n z.array(ValueSchema).describe('Array of values'),\n ]),\n )\n .meta({\n id: 'MappingValue',\n title: 'Mapping.Value',\n description:\n 'Polymorphic transform primitive used in every mapping field. A string path, constant, operator object (map/loop/set/condition/consent), or array of values.',\n });\n\n/**\n * Values - Array of Value objects\n * Used for multiple data transformations\n */\nexport const ValuesSchema = z\n .array(ValueSchema)\n .meta({\n id: 'MappingValues',\n title: 'Mapping.Values',\n description: 'Array of transformation values.',\n })\n .describe('Array of transformation values');\n\n/**\n * Loop - Tuple for array processing\n * Format: [source, transform]\n *\n * IMPORTANT: z.tuple() generates JSON Schema with minItems/maxItems = 2\n * This is how Explorer distinguishes Loop from Set\n *\n * Example: ['nested', { map: { id: 'data.id' } }]\n * Means: Iterate over event.nested array, transform each item\n */\nconst LoopSchema: z.ZodTypeAny = z\n .lazy(() =>\n z\n .tuple([ValueSchema, ValueSchema])\n .describe(\n 'Loop transformation: [source, transform] tuple for array processing',\n ),\n )\n .meta({\n id: 'MappingLoop',\n title: 'Mapping.Loop',\n description:\n 'Loop tuple [source, transform] for iterating and transforming arrays.',\n });\n\n/**\n * Set - Array of values for selection/combination\n * Format: [value1, value2, ...]\n *\n * IMPORTANT: z.array() generates JSON Schema without minItems/maxItems\n * This distinguishes Set from Loop\n *\n * Example: ['data.firstName', ' ', 'data.lastName']\n * Means: Combine multiple values\n */\nconst SetSchema: z.ZodTypeAny = z\n .lazy(() =>\n z\n .array(ValueSchema)\n .describe('Set: Array of values for selection or combination'),\n )\n .meta({\n id: 'MappingSet',\n title: 'Mapping.Set',\n description: 'Set: array of values for selection or combination.',\n });\n\n/**\n * Map - Object mapping for data transformation\n * Format: { outputKey: value, ... }\n *\n * Example: { item_id: 'data.id', item_name: 'data.name' }\n * Means: Transform event data to destination format\n */\nconst MapSchema: z.ZodTypeAny = z\n .lazy(() =>\n z\n .record(z.string(), ValueSchema)\n .describe('Map: Object mapping keys to transformation values'),\n )\n .meta({\n id: 'MappingMap',\n title: 'Mapping.Map',\n description: 'Map: object mapping keys to transformation values.',\n });\n\n/**\n * ValueConfig - Configuration object for value transformations\n *\n * Supports multiple transformation strategies:\n * - key: Extract property from event (e.g., \"data.id\")\n * - value: Static primitive value\n * - fn: Custom transformation function (as string)\n * - map: Object mapping for structured output\n * - loop: Array iteration and transformation\n * - set: Value combination/selection\n * - consent: Consent-based filtering\n * - condition: Conditional transformation\n * - validate: Value validation\n *\n * At least one property must be present.\n */\nValueConfigSchemaLazy = z\n .object({\n key: z\n .string()\n .optional()\n .describe(\n 'Property path to extract from event (e.g., \"data.id\", \"user.email\")',\n ),\n value: z\n .union([z.string(), z.number(), z.boolean()])\n .optional()\n .describe('Static primitive value'),\n fn: z\n .string()\n .optional()\n .describe('Custom transformation function as string (serialized)'),\n map: MapSchema.optional().describe(\n 'Object mapping: transform event data to structured output',\n ),\n loop: LoopSchema.optional().describe(\n 'Loop transformation: [source, transform] for array processing',\n ),\n set: SetSchema.optional().describe(\n 'Set of values: combine or select from multiple values',\n ),\n consent: ConsentSchema.optional().describe(\n 'Required consent states to include this value',\n ),\n condition: z\n .string()\n .optional()\n .describe('Condition function as string: return true to include value'),\n validate: z\n .string()\n .optional()\n .describe('Validation function as string: return true if value is valid'),\n })\n .refine((data) => Object.keys(data).length > 0, {\n message: 'ValueConfig must have at least one property',\n })\n .meta({\n id: 'MappingValueConfig',\n title: 'Mapping.ValueConfig',\n description:\n 'Object-form value transformation with map/loop/set/condition/consent etc.',\n })\n .describe('Value transformation configuration with multiple strategies');\n\n// Export with original name for backward compatibility\nexport const ValueConfigSchema = ValueConfigSchemaLazy;\n\n// Re-export for use in other schemas\nexport { LoopSchema, SetSchema, MapSchema };\n\n// ========================================\n// Policy Schema\n// ========================================\n\n/**\n * Policy - Pre-processing rules\n * Applied before event mapping\n * Maps policy keys to transformation values\n *\n * Example: { 'consent.marketing': true }\n * Means: Only process events with marketing consent\n */\nexport const PolicySchema = z\n .record(z.string(), ValueSchema)\n .meta({\n id: 'MappingPolicy',\n title: 'Mapping.Policy',\n description:\n 'Policy rules for event pre-processing (key → value transformation).',\n })\n .describe('Policy rules for event pre-processing (key → value mapping)');\n\n// ========================================\n// Mapping Rule Schemas\n// ========================================\n\n/**\n * Rule - Event-specific mapping configuration\n *\n * Defines how to transform events for a specific entity-action combination\n * Can include:\n * - Batching configuration\n * - Conditional processing\n * - Consent requirements\n * - Custom settings\n * - Data transformation\n * - Event naming\n * - Policy overrides\n */\nexport const RuleSchema = z\n .object({\n name: z\n .string()\n .optional()\n .describe(\n 'Custom event name override (e.g., \"view_item\" for \"product view\")',\n ),\n data: z\n .union([ValueSchema, ValuesSchema])\n .optional()\n .describe('Data transformation rules for event'),\n settings: z\n .any()\n .optional()\n .describe('Destination-specific settings for this event mapping'),\n condition: z\n .string()\n .optional()\n .describe('Condition function as string: return true to process event'),\n consent: ConsentSchema.optional().describe(\n 'Required consent states to process this event',\n ),\n policy: PolicySchema.optional().describe(\n 'Event-level policy overrides (applied after config-level policy)',\n ),\n batch: z\n .number()\n .optional()\n .describe('Batch size: bundle N events for batch processing'),\n // Note: batchFn and batched are runtime functions, not serializable\n include: z\n .array(z.string())\n .optional()\n .describe(\n 'Event sections (e.g. [\"context\", \"globals\"]) flattened into context.data',\n ),\n ignore: z\n .boolean()\n .optional()\n .describe(\n 'Skip the event entirely. No push, no side effects. Use for suppression.',\n ),\n silent: z\n .boolean()\n .optional()\n .describe(\n 'Run side effects (settings.identify, ...) but suppress the destination default push call.',\n ),\n })\n .meta({\n id: 'MappingRule',\n title: 'Mapping.Rule',\n description:\n 'Configuration for transforming a single event at one stage of the flow (source or destination).',\n })\n .describe('Mapping rule for specific entity-action combination');\n\n/**\n * Rules - Nested mapping rules structure\n * Format: { entity: { action: Rule | Rule[], ... }, ... }\n *\n * Supports:\n * - Specific entity-action mappings\n * - Wildcard patterns (entity: *, action: *)\n * - Multiple rules per entity-action (array)\n *\n * Example:\n * {\n * product: {\n * view: { name: 'view_item' },\n * add: { name: 'add_to_cart' }\n * },\n * page: {\n * '*': { name: 'page_interaction' }\n * }\n * }\n */\nexport const RulesSchema = z\n .record(\n z.string(),\n z.record(z.string(), z.union([RuleSchema, z.array(RuleSchema)])).optional(),\n )\n .meta({\n id: 'MappingRules',\n title: 'Mapping.Rules',\n description:\n 'Event mapping rules tree: entity → action → Rule (or Rule[]). Use \"*\" as wildcard for entity or action.',\n })\n .describe(\n 'Event mapping rules: entity → action → Rule. Keys match event name split by space. Use \"*\" as wildcard for entity or action. Priority: exact > entity wildcard > action wildcard > global wildcard (*→*).',\n );\n\n/**\n * Config - Shared mapping configuration\n * Used by both Source.Config and Destination.Config\n *\n * Provides:\n * - Consent requirements\n * - Global data transformations\n * - Entity-action mapping rules\n * - Pre-processing policies\n */\nexport const ConfigSchema = z\n .object({\n consent: ConsentSchema.optional().describe(\n 'Required consent states to process any events',\n ),\n data: z\n .union([ValueSchema, ValuesSchema])\n .optional()\n .describe('Global data transformation applied to all events'),\n include: z\n .array(z.string())\n .optional()\n .describe('Event sections to flatten into context.data'),\n mapping: RulesSchema.optional().describe(\n 'Entity-action specific mapping rules',\n ),\n policy: PolicySchema.optional().describe(\n 'Pre-processing policy rules applied before mapping',\n ),\n })\n .meta({\n id: 'MappingConfig',\n title: 'Mapping.Config',\n description:\n 'Shared mapping configuration (consent, data, include, mapping, policy).',\n })\n .describe('Shared mapping configuration for sources and destinations');\n\n/**\n * Result - Mapping resolution result\n * Contains the resolved mapping rule and key used\n */\nexport const ResultSchema = z\n .object({\n eventMapping: RuleSchema.optional().describe(\n 'Resolved mapping rule for event',\n ),\n mappingKey: z\n .string()\n .optional()\n .describe('Mapping key used (e.g., \"product.view\")'),\n })\n .meta({\n id: 'MappingResult',\n title: 'Mapping.Result',\n description: 'Mapping resolution result (matched rule + key).',\n })\n .describe('Mapping resolution result');\n\n// ========================================\n// JSON Schema Exports (for Explorer/RJSF/MCP)\n// ========================================\n\nexport const valueJsonSchema = toJsonSchema(ValueSchema, 'Value');\n\nexport const valueConfigJsonSchema = toJsonSchema(\n ValueConfigSchema,\n 'ValueConfig',\n);\n\nexport const loopJsonSchema = toJsonSchema(LoopSchema, 'Loop');\n\nexport const setJsonSchema = toJsonSchema(SetSchema, 'Set');\n\nexport const mapJsonSchema = toJsonSchema(MapSchema, 'Map');\n\nexport const policyJsonSchema = toJsonSchema(PolicySchema, 'Policy');\n\nexport const ruleJsonSchema = toJsonSchema(RuleSchema, 'Rule');\n\nexport const rulesJsonSchema = toJsonSchema(RulesSchema, 'Rules');\n\nexport const configJsonSchema = toJsonSchema(ConfigSchema, 'MappingConfig');\n","import { z, toJsonSchema } from './validation';\nimport { ConsentSchema, EventSchema } from './walkeros';\nimport {\n ValueSchema,\n ValuesSchema,\n RuleSchema,\n RulesSchema,\n PolicySchema,\n} from './mapping';\nimport { Identifier } from './primitives';\nimport { RoutableNextSchema } from './matcher';\nimport { CacheSchema } from './cache';\nimport { LoggerConfigSchema } from './logger';\n\n/**\n * Destination Schemas\n *\n * Mirrors: types/destination.ts\n * Purpose: Runtime validation and JSON Schema generation for destination configurations\n *\n * Destinations are the endpoints where processed events are sent (analytics tools,\n * marketing platforms, data warehouses, etc.). This file defines schemas for:\n * - Destination configuration\n * - Type bundles for generic constraints\n * - Push contexts\n * - Batching structures\n */\n\n// ========================================\n// Configuration Schemas\n// ========================================\n\n/**\n * Config - Destination configuration\n *\n * Defines how a destination processes events:\n * - Consent requirements\n * - Settings (destination-specific)\n * - Data transformations\n * - Environment dependencies\n * - Initialization options\n * - Mapping rules\n * - Processing policies\n * - Queueing behavior\n * - Logging verbosity\n * - Error/log handlers\n *\n * Generic note: settings, env, and mapping can have destination-specific types\n * but for schema validation we use z.unknown() to allow flexibility\n */\nexport const ConfigSchema = z\n .object({\n consent: ConsentSchema.optional().describe(\n 'Required consent states to send events to this destination',\n ),\n settings: z\n .any()\n .meta({\n id: 'DestinationSettings',\n title: 'Destination.Settings',\n description:\n 'Implementation-specific configuration (destination-defined shape).',\n })\n .describe('Implementation-specific configuration')\n .optional(),\n data: z\n .union([ValueSchema, ValuesSchema])\n .optional()\n .describe(\n 'Global data transformation applied to all events for this destination',\n ),\n include: z\n .array(z.string())\n .optional()\n .describe('Event sections to flatten into context.data'),\n env: z\n .any()\n .meta({\n id: 'DestinationEnv',\n title: 'Destination.Env',\n description:\n 'Environment dependencies (destination-defined shape) — platform, SDK, or mock hook.',\n })\n .describe('Environment dependencies (platform-specific)')\n .optional(),\n id: Identifier.describe(\n 'Destination instance identifier (defaults to destination key)',\n ).optional(),\n init: z.boolean().describe('Whether to initialize immediately').optional(),\n loadScript: z\n .boolean()\n .describe('Whether to load external script (for web destinations)')\n .optional(),\n mapping: RulesSchema.optional().describe(\n 'Entity-action specific mapping rules for this destination',\n ),\n policy: PolicySchema.optional().describe(\n 'Pre-processing policy rules applied before event mapping',\n ),\n queue: z\n .boolean()\n .describe('Whether to queue events when consent is not granted')\n .optional(),\n require: z\n .array(z.string())\n .optional()\n .describe(\n 'Defer destination initialization until these collector events fire (e.g., [\"consent\"])',\n ),\n logger: LoggerConfigSchema.optional().describe(\n 'Logger configuration (level, handler) to override the collector defaults',\n ),\n setup: z\n .union([z.boolean(), z.record(z.string(), z.unknown())])\n .optional()\n .describe(\n 'One-time setup options applied during destination registration (boolean enables defaults, object configures specifics)',\n ),\n before: RoutableNextSchema.optional().describe(\n 'Post-collector transformer chain applied before this destination receives the event',\n ),\n next: RoutableNextSchema.optional().describe(\n 'Post-push transformer chain. Runs after destination push completes; push response is available at ingest._response',\n ),\n cache: CacheSchema.optional().describe(\n 'Cache configuration for deduplication; skip push on cache HIT',\n ),\n disabled: z\n .boolean()\n .describe('Completely skip this destination (no init, no push, no queue)')\n .optional(),\n mock: z\n .unknown()\n .meta({\n id: 'DestinationMock',\n title: 'Destination.Mock',\n description:\n 'Return this value instead of calling push(). Dev/testing only.',\n })\n .optional()\n .describe(\n 'Return this value instead of calling push(). Dev/testing only.',\n ),\n })\n .meta({\n id: 'DestinationConfig',\n title: 'Destination.Config',\n description:\n 'Destination configuration: consent, settings, data, env, mapping rules, policy, queue, logger, before/next chains, cache.',\n })\n .describe('Destination configuration');\n\n/**\n * PartialConfig - Config with all fields optional\n * Used for config updates and overrides\n *\n * Note: All fields in ConfigSchema are already optional (.optional() on each field).\n * Using .partial() ensures the schema itself makes all fields optional at the type level.\n */\nexport const PartialConfigSchema = ConfigSchema.partial()\n .meta({\n id: 'DestinationPartialConfig',\n title: 'Destination.PartialConfig',\n description: 'Partial destination configuration with all fields optional.',\n })\n .describe('Partial destination configuration with all fields optional');\n\n/**\n * Policy - Processing policy rules\n * Maps policy keys to transformation values\n * Applied before event mapping\n */\nexport const DestinationPolicySchema = PolicySchema.describe(\n 'Destination policy rules for event pre-processing',\n);\n// Note: DestinationPolicySchema is an alias of MappingPolicySchema;\n// it intentionally shares the Mapping.Policy id/title via the underlying schema.\n\n// ========================================\n// Context Schemas\n// ========================================\n\n/**\n * Context - Base destination context\n * Passed to init and push functions\n * Contains collector instance, config, data, and environment\n *\n * Note: collector is runtime instance, not easily serializable\n */\nexport const ContextSchema = z\n .object({\n collector: z\n .unknown()\n .meta({\n id: 'DestinationContextCollector',\n title: 'Collector.Instance',\n description:\n 'Collector instance handed to the destination (runtime object).',\n })\n .describe('Collector instance (runtime object)'),\n config: ConfigSchema.describe('Destination configuration'),\n data: z\n .union([\n z.unknown(), // WalkerOS.Property\n z.array(z.unknown()),\n ])\n .optional()\n .describe('Transformed event data'),\n env: z\n .unknown()\n .meta({\n id: 'DestinationContextEnv',\n title: 'Destination.Env',\n description: 'Environment dependencies (destination-defined shape).',\n })\n .describe('Environment dependencies'),\n })\n .meta({\n id: 'DestinationContext',\n title: 'Destination.Context',\n description: 'Destination context passed to init and push functions.',\n })\n .describe('Destination context for init and push functions');\n\n/**\n * PushContext - Context for push function\n * Extends Context with mapping rule information\n */\nexport const PushContextSchema = ContextSchema.extend({\n mapping: RuleSchema.optional().describe(\n 'Resolved mapping rule for this specific event',\n ),\n})\n .meta({\n id: 'DestinationPushContext',\n title: 'Destination.PushContext',\n description:\n 'Destination context for push() with the resolved event mapping rule.',\n })\n .describe('Push context with event-specific mapping');\n\n/**\n * PushBatchContext - Context for pushBatch function\n * Same as PushContext but for batch processing\n */\nexport const PushBatchContextSchema = PushContextSchema.describe(\n 'Batch push context with event-specific mapping',\n);\n// Note: PushBatchContextSchema is the same shape as PushContextSchema; it\n// shares the Destination.PushContext id via the underlying schema.\n\n// ========================================\n// Batch Processing Schemas\n// ========================================\n\n/**\n * PushEvent - Single event with mapping in a batch\n */\nexport const PushEventSchema = z\n .object({\n event: EventSchema.describe('The event to process'),\n mapping: RuleSchema.optional().describe('Mapping rule for this event'),\n })\n .meta({\n id: 'DestinationPushEvent',\n title: 'Destination.PushEvent',\n description:\n 'Single event paired with its resolved mapping rule (batch element).',\n })\n .describe('Event with optional mapping for batch processing');\n\n/**\n * PushEvents - Array of PushEvent\n */\nexport const PushEventsSchema = z\n .array(PushEventSchema)\n .meta({\n id: 'DestinationPushEvents',\n title: 'Destination.PushEvents',\n description: 'Array of events with mappings (batch input).',\n })\n .describe('Array of events with mappings');\n\n/**\n * Batch - Batched events for processing\n * Groups events by mapping key for efficient batch sends\n */\nexport const BatchSchema = z\n .object({\n key: z\n .string()\n .describe('Batch key (usually mapping key like \"product.view\")'),\n events: z.array(EventSchema).describe('Array of events in batch'),\n data: z\n .array(\n z\n .union([\n z.unknown(), // WalkerOS.Property\n z.array(z.unknown()),\n ])\n .optional(),\n )\n .describe('Transformed data for each event'),\n mapping: RuleSchema.optional().describe('Shared mapping rule for batch'),\n })\n .meta({\n id: 'DestinationBatch',\n title: 'Destination.Batch',\n description: 'Batch of events grouped by mapping key for batch delivery.',\n })\n .describe('Batch of events grouped by mapping key');\n\n/**\n * Data - Transformed event data types\n * Can be single property, undefined, or array of properties\n */\nexport const DataSchema = z\n .union([\n z.unknown(), // WalkerOS.Property\n z.array(z.unknown()),\n ])\n .meta({\n id: 'DestinationData',\n title: 'Destination.Data',\n description:\n 'Transformed event data delivered to the destination (Property, undefined, or array).',\n })\n .optional()\n .describe('Transformed event data (Property, undefined, or array)');\n\n// ========================================\n// Instance Schemas\n// ========================================\n\n/**\n * Instance - Destination instance (runtime object)\n *\n * Note: This schema is primarily for documentation\n * Runtime functions (init, push, pushBatch) cannot be validated\n * Use z.unknown() for function fields\n */\nexport const InstanceSchema = z\n .object({\n config: ConfigSchema.describe('Destination configuration'),\n queue: z\n .array(EventSchema)\n .optional()\n .describe('Queued events awaiting consent'),\n dlq: z\n .array(z.tuple([EventSchema, z.unknown()]))\n .optional()\n .describe('Dead letter queue (failed events with errors)'),\n type: z.string().optional().describe('Destination type identifier'),\n env: z.unknown().optional().describe('Environment dependencies'),\n // Functions - not validated, use z.unknown()\n init: z.unknown().optional().describe('Initialization function'),\n push: z.unknown().describe('Push function for single events'),\n pushBatch: z.unknown().optional().describe('Batch push function'),\n on: z.unknown().optional().describe('Event lifecycle hook function'),\n })\n .meta({\n id: 'DestinationInstance',\n title: 'Destination.Instance',\n description:\n 'Destination instance (runtime object with init/push/pushBatch/on).',\n })\n .describe('Destination instance (runtime object with functions)');\n\n/**\n * Init - Initialization config\n * Contains destination code and configuration\n */\nexport const InitSchema = z\n .object({\n code: InstanceSchema.describe('Destination instance with implementation'),\n config: PartialConfigSchema.optional().describe(\n 'Partial configuration overrides',\n ),\n env: z.unknown().optional().describe('Partial environment overrides'),\n })\n .meta({\n id: 'DestinationInit',\n title: 'Destination.Init',\n description:\n 'Destination initialization bundle (instance code + config + env).',\n })\n .describe('Destination initialization configuration');\n\n/**\n * InitDestinations - Map of destination IDs to Init configs\n */\nexport const InitDestinationsSchema = z\n .record(z.string(), InitSchema)\n .meta({\n id: 'DestinationInitDestinations',\n title: 'Destination.InitDestinations',\n description: 'Map of destination IDs to initialization configurations.',\n })\n .describe('Map of destination IDs to initialization configurations');\n\n/**\n * Destinations - Map of destination IDs to instances\n */\nexport const DestinationsSchema = z\n .record(z.string(), InstanceSchema)\n .meta({\n id: 'DestinationDestinations',\n title: 'Destination.Destinations',\n description: 'Map of destination IDs to runtime destination instances.',\n })\n .describe('Map of destination IDs to runtime instances');\n\n// ========================================\n// Result Schemas\n// ========================================\n\n/**\n * Ref - Destination reference\n * Contains destination type and optional response data or error\n */\nexport const RefSchema = z\n .object({\n type: z.string().describe('Destination type (\"gtag\", \"meta\", \"bigquery\")'),\n data: z.unknown().optional().describe('Response from push()'),\n error: z.unknown().optional().describe('Error if failed'),\n })\n .meta({\n id: 'DestinationRef',\n title: 'Destination.Ref',\n description:\n 'Reference to a destination outcome (type + response data or error).',\n })\n .describe('Destination reference with type and response data');\n\n/**\n * Push - Push operation result\n */\nexport const PushResultSchema = z\n .object({\n queue: z\n .array(EventSchema)\n .optional()\n .describe('Events queued (awaiting consent)'),\n error: z.unknown().optional().describe('Error if push failed'),\n })\n .meta({\n id: 'DestinationPushResult',\n title: 'Destination.PushResult',\n description:\n 'Result of a single destination push (queued events, optional error).',\n })\n .describe('Push operation result');\n\n/**\n * Result - Overall processing result\n * Note: This type has been removed from types/destination.ts\n * Results are now part of Elb.PushResult with Record<string, Ref> structure\n */\nexport const ResultSchema = z\n .object({\n ok: z.boolean().describe('True if nothing failed'),\n event: z.unknown().optional().describe('The processed event'),\n done: z\n .record(z.string(), RefSchema)\n .optional()\n .describe('Destinations that processed successfully'),\n queued: z\n .record(z.string(), RefSchema)\n .optional()\n .describe('Destinations that queued events'),\n failed: z\n .record(z.string(), RefSchema)\n .optional()\n .describe('Destinations that failed to process'),\n })\n .meta({\n id: 'DestinationResult',\n title: 'Destination.Result',\n description:\n 'Overall push result aggregated across all destinations (done/queued/failed maps).',\n })\n .describe('Push result with destination outcomes');\n\n/**\n * DLQ - Dead Letter Queue\n * Array of failed events with their errors\n */\nexport const DLQSchema = z\n .array(z.tuple([EventSchema, z.unknown()]))\n .meta({\n id: 'DestinationDLQ',\n title: 'Destination.DLQ',\n description: 'Dead-letter queue: list of [event, error] tuples.',\n })\n .describe('Dead letter queue: [(event, error), ...]');\n\n// ========================================\n// JSON Schema Exports (for Explorer/RJSF/MCP)\n// ========================================\n\nexport const configJsonSchema = toJsonSchema(ConfigSchema, 'DestinationConfig');\n\nexport const partialConfigJsonSchema = toJsonSchema(\n PartialConfigSchema,\n 'PartialDestinationConfig',\n);\n\nexport const contextJsonSchema = toJsonSchema(\n ContextSchema,\n 'DestinationContext',\n);\n\nexport const pushContextJsonSchema = toJsonSchema(\n PushContextSchema,\n 'PushContext',\n);\n\nexport const batchJsonSchema = toJsonSchema(BatchSchema, 'Batch');\n\nexport const instanceJsonSchema = toJsonSchema(\n InstanceSchema,\n 'DestinationInstance',\n);\n\nexport const resultJsonSchema = toJsonSchema(ResultSchema, 'DestinationResult');\n","import { z } from './validation';\n\nconst MatchOperatorSchema = z\n .enum(['eq', 'contains', 'prefix', 'suffix', 'regex', 'gt', 'lt', 'exists'])\n .meta({\n id: 'MatcherOperator',\n title: 'Matcher.Operator',\n description: 'Supported operators for a match condition.',\n });\n\nconst MatchConditionSchema = z\n .object({\n key: z.string(),\n operator: MatchOperatorSchema,\n value: z.string(),\n not: z.boolean().optional(),\n })\n .meta({\n id: 'MatcherCondition',\n title: 'Matcher.Condition',\n description: 'Single match condition (key, operator, value, optional not).',\n });\n\nexport const MatchExpressionSchema: z.ZodType = z\n .union([\n MatchConditionSchema,\n z.object({ and: z.array(z.lazy(() => MatchExpressionSchema)) }),\n z.object({ or: z.array(z.lazy(() => MatchExpressionSchema)) }),\n ])\n .meta({\n id: 'MatcherExpression',\n title: 'Matcher.Expression',\n description: 'Boolean expression tree of match conditions (leaf, and, or).',\n });\n\nconst MatchOrWildcard = z.union([MatchExpressionSchema, z.literal('*')]);\n\n// Recursive: NextRule.next is itself a RoutableNext\nexport const RoutableNextSchema: z.ZodType = z\n .union([\n z.string(),\n z.array(z.string()),\n z.array(\n z.object({\n match: MatchOrWildcard,\n next: z.lazy(() => RoutableNextSchema),\n }),\n ),\n ])\n .meta({\n id: 'MatcherNext',\n title: 'Matcher.Next',\n description:\n 'Routable next target: ID, ID list, or list of {match, next} rules.',\n });\n\nexport const NextRuleSchema = z\n .object({\n match: MatchOrWildcard,\n next: z.lazy(() => RoutableNextSchema),\n })\n .meta({\n id: 'MatcherNextRule',\n title: 'Matcher.NextRule',\n description:\n 'Single routing rule pairing a match expression with a next target.',\n });\n","import { z } from './validation';\nimport { MatchExpressionSchema } from './matcher';\nimport { ValueSchema } from './mapping';\n\n// ========================================\n// Cache Rule Schema\n// ========================================\n\n/**\n * CacheRule — a single caching rule for a pipeline step.\n *\n * Mirrors: types/cache.ts → CacheRule\n *\n * - match: MatchExpression or '*' wildcard\n * - key: array of dot-path strings used to build the cache key\n * - ttl: time-to-live in seconds (must be positive)\n * - update: optional record of response mutations applied on cache hit\n */\nexport const CacheRuleSchema = z\n .object({\n match: z\n .union([MatchExpressionSchema, z.literal('*')])\n .describe(\n 'Match expression or wildcard to determine when this rule applies',\n ),\n key: z\n .array(z.string())\n .min(1)\n .describe('Dot-path fields used to build the cache key'),\n ttl: z\n .number()\n .positive()\n .describe('Time-to-live in seconds for cached entries'),\n update: z\n .record(z.string(), ValueSchema)\n .optional()\n .describe(\n 'Response mutations applied on cache hit (key → Value mapping)',\n ),\n })\n .meta({\n id: 'CacheRule',\n title: 'Cache.Rule',\n description:\n 'Single caching rule: when it applies (match), what keys it keys off, TTL, and optional response mutations on hit.',\n });\n\n// ========================================\n// Cache Schema\n// ========================================\n\n/**\n * Cache — top-level cache configuration for a pipeline step.\n *\n * Mirrors: types/cache.ts → Cache\n *\n * - store: optional store ID for persistent caching ($store.storeId wiring)\n * - rules: at least one CacheRule is required\n */\nexport const CacheSchema = z\n .object({\n full: z\n .boolean()\n .optional()\n .describe(\n 'Stop flow on cache HIT (default: false). When true, skip remaining steps and return cached value.',\n ),\n store: z\n .string()\n .optional()\n .describe(\n 'Store ID for persistent caching (references a configured store)',\n ),\n rules: z\n .array(CacheRuleSchema)\n .min(1)\n .describe('Cache rules — at least one required'),\n })\n .meta({\n id: 'CacheConfig',\n title: 'Cache.Config',\n description:\n 'Top-level cache configuration for a pipeline step (destination / transformer / source ref).',\n });\n","import { z } from './validation';\n\n/**\n * Logger schemas\n *\n * Mirrors: types/handler.ts (Logger namespace)\n * Purpose: Canonical schemas for logger configuration used across\n * destination / source / transformer / store / collector configs.\n *\n * Extracted from five duplicated inline `logger: z.object({...})` blocks\n * to satisfy the DRY principle and provide a single canonical `Logger.Config`\n * title in the generated JSON Schema output.\n */\n\n/**\n * LoggerHandlerSchema - Custom log handler function\n *\n * Kept as `z.any()` because function-signature enforcement belongs in the\n * TypeScript layer; the Zod schema only needs to be nameable in JSON Schema.\n */\nexport const LoggerHandlerSchema = z.any().meta({\n id: 'LoggerHandler',\n title: 'Logger.Handler',\n description: 'Custom log handler function (level, ...args) => void',\n});\n\n/**\n * LoggerConfigSchema - Logger configuration\n *\n * Allows components to override the collector-default logger by providing a\n * minimum log level and / or a custom handler.\n */\nexport const LoggerConfigSchema = z\n .object({\n level: z\n .union([z.number(), z.enum(['ERROR', 'WARN', 'INFO', 'DEBUG'])])\n .optional()\n .describe('Minimum log level (default: ERROR)'),\n handler: LoggerHandlerSchema.optional().describe(\n 'Custom log handler function',\n ),\n })\n .meta({\n id: 'LoggerConfig',\n title: 'Logger.Config',\n description:\n 'Logger configuration (level, handler) to override the collector defaults',\n });\n","import { z, toJsonSchema } from './validation';\nimport {\n ConsentSchema,\n UserSchema,\n PropertiesSchema,\n EventSchema,\n} from './walkeros';\nimport { ConfigSchema as MappingConfigSchema } from './mapping';\nimport { Identifier, Timestamp, Counter } from './primitives';\nimport { LoggerConfigSchema } from './logger';\n\n/**\n * Collector Schemas\n *\n * Mirrors: types/collector.ts\n * Purpose: Runtime validation and JSON Schema generation for collector configurations\n *\n * The collector is the central event processing engine in walkerOS:\n * - Receives events from sources\n * - Processes events with consent and context\n * - Routes events to destinations\n * - Manages session state and globals\n * - Handles lifecycle hooks\n *\n * This file defines schemas for collector configuration, commands, and state management.\n */\n\n// ========================================\n// Command Type Schema\n// ========================================\n\n/**\n * CommandType - Walker command identifiers\n *\n * Standard commands:\n * - action: TODO - need documentation\n * - config: Update collector configuration\n * - consent: Update consent state\n * - context: TODO - need documentation\n * - destination: Add/update destination\n * - elb: TODO - need documentation\n * - globals: Update global properties\n * - hook: Register lifecycle hook\n * - init: Initialize collector\n * - link: TODO - need documentation\n * - run: Start/restart collector with state\n * - user: Update user data\n * - walker: TODO - need documentation\n *\n * Extensible: allows custom command strings\n */\nexport const CommandTypeSchema = z\n .union([\n z.enum([\n 'action',\n 'config',\n 'consent',\n 'context',\n 'destination',\n 'elb',\n 'globals',\n 'hook',\n 'init',\n 'link',\n 'run',\n 'user',\n 'walker',\n ]),\n z.string(), // Allow custom commands\n ])\n .meta({\n id: 'CollectorCommandType',\n title: 'Collector.CommandType',\n description:\n 'Collector command type identifier (standard or extension string).',\n })\n .describe(\n 'Collector command type: standard commands or custom string for extensions',\n );\n\n// ========================================\n// Configuration Schemas\n// ========================================\n\n/**\n * Config - Core collector configuration\n *\n * Controls collector behavior:\n * - run: Auto-run on initialization\n * - globalsStatic: Static globals (persist across runs)\n * - sessionStatic: Static session data (persist across runs)\n * - verbose: Enable verbose logging\n * - onError: Error handler\n * - onLog: Log handler\n */\nexport const ConfigSchema = z\n .object({\n run: z\n .boolean()\n .describe('Whether to run collector automatically on initialization')\n .optional(),\n globalsStatic: PropertiesSchema.describe(\n 'Static global properties that persist across collector runs',\n ),\n sessionStatic: z\n .record(z.string(), z.unknown())\n .meta({\n id: 'CollectorSessionStatic',\n title: 'Collector.SessionStatic',\n description: 'Static session data that persists across collector runs.',\n })\n .describe('Static session data that persists across collector runs'),\n logger: LoggerConfigSchema.optional().describe(\n 'Logger configuration (level, handler)',\n ),\n })\n .meta({\n id: 'CollectorConfig',\n title: 'Collector.Config',\n description:\n 'Core collector configuration (globals/session statics, logger).',\n })\n .describe('Core collector configuration');\n\n/**\n * SessionData - Session state management\n *\n * Tracks session-level information:\n * - IDs and lifecycle\n * - Storage state\n * - Marketing tracking\n * - Timestamps\n * - Counters\n *\n * Extends Properties to allow custom session data\n */\nexport const SessionDataSchema = PropertiesSchema.and(\n z.object({\n isStart: z.boolean().describe('Whether this is a new session start'),\n storage: z.boolean().describe('Whether storage is available'),\n id: Identifier.describe('Session identifier').optional(),\n start: Timestamp.describe('Session start timestamp').optional(),\n marketing: z\n .literal(true)\n .optional()\n .describe('Marketing attribution flag'),\n updated: Timestamp.describe('Last update timestamp').optional(),\n isNew: z.boolean().describe('Whether this is a new session').optional(),\n device: Identifier.describe('Device identifier').optional(),\n count: Counter.describe('Event count in session').optional(),\n runs: Counter.describe('Number of runs').optional(),\n }),\n)\n .meta({\n id: 'CollectorSessionData',\n title: 'Collector.SessionData',\n description: 'Session state and tracking data.',\n })\n .describe('Session state and tracking data');\n\n/**\n * InitConfig - Initialization configuration\n *\n * Extends Config with initial state:\n * - Initial consent\n * - Initial user data\n * - Initial globals\n * - Source configurations\n * - Destination configurations\n * - Initial custom properties\n */\nexport const InitConfigSchema = ConfigSchema.partial()\n .extend({\n consent: ConsentSchema.optional().describe('Initial consent state'),\n user: UserSchema.optional().describe('Initial user data'),\n globals: PropertiesSchema.optional().describe('Initial global properties'),\n // Sources, destinations, transformers, stores are complex runtime objects\n sources: z\n .unknown()\n .meta({\n id: 'CollectorInitSources',\n title: 'Source.InitSources',\n description: 'Source configurations map (id → InitSource).',\n })\n .optional()\n .describe('Source configurations'),\n destinations: z\n .unknown()\n .meta({\n id: 'CollectorInitDestinations',\n title: 'Destination.InitDestinations',\n description: 'Destination configurations map (id → Init).',\n })\n .optional()\n .describe('Destination configurations'),\n transformers: z\n .unknown()\n .meta({\n id: 'CollectorInitTransformers',\n title: 'Transformer.Configs',\n description: 'Transformer configurations map (id → Config).',\n })\n .optional()\n .describe('Transformer configurations'),\n stores: z\n .unknown()\n .meta({\n id: 'CollectorInitStores',\n title: 'Store.Configs',\n description: 'Store configurations map (id → Config).',\n })\n .optional()\n .describe('Store configurations'),\n custom: PropertiesSchema.optional().describe(\n 'Initial custom implementation-specific properties',\n ),\n hooks: z\n .unknown()\n .meta({\n id: 'CollectorHooks',\n title: 'Collector.Hooks',\n description: 'Pipeline observation hooks.',\n })\n .optional()\n .describe('Pipeline observation hooks'),\n })\n .meta({\n id: 'CollectorInitConfig',\n title: 'Collector.InitConfig',\n description:\n 'Collector initialization configuration with initial state (consent, user, globals, components, hooks).',\n })\n .describe('Collector initialization configuration with initial state');\n\n// ========================================\n// Context Schemas\n// ========================================\n\n/**\n * PushContext - Context for collector.push\n *\n * Provides source-level mapping configuration\n * Applied before destination-specific mappings\n */\nexport const PushContextSchema = z\n .object({\n mapping: MappingConfigSchema.optional().describe(\n 'Source-level mapping configuration',\n ),\n })\n .meta({\n id: 'CollectorPushContext',\n title: 'Collector.PushContext',\n description: 'Push context with optional source-level mapping.',\n })\n .describe('Push context with optional source mapping');\n\n// ========================================\n// Collection Schemas\n// ========================================\n\n/**\n * Sources - Map of source IDs to instances\n */\nexport const SourcesSchema = z\n .record(z.string(), z.unknown())\n .meta({\n id: 'CollectorSources',\n title: 'Collector.Sources',\n description: 'Map of source IDs to runtime source instances.',\n })\n .describe('Map of source IDs to source instances');\n\n/**\n * Destinations - Map of destination IDs to instances\n */\nexport const DestinationsSchema = z\n .record(z.string(), z.unknown())\n .meta({\n id: 'CollectorDestinations',\n title: 'Collector.Destinations',\n description: 'Map of destination IDs to runtime destination instances.',\n })\n .describe('Map of destination IDs to destination instances');\n\n// ========================================\n// Instance Schema\n// ========================================\n\n/**\n * Instance - Collector instance (runtime object)\n *\n * The main collector interface with all state and methods\n *\n * State:\n * - config: Current configuration\n * - consent: Current consent state\n * - user: Current user data\n * - globals: Current global properties\n * - custom: Custom properties\n * - session: Session state\n * - sources: Registered sources\n * - destinations: Registered destinations\n * - hooks: Lifecycle hooks\n * - on: Event lifecycle config\n * - queue: Queued events\n *\n * Flags:\n * - allowed: Processing allowed\n * - count: Event count\n * - round: Collector run count\n * - timing: Processing timing\n * - group: Event grouping ID\n *\n * Methods (not validated):\n * - push: Process events\n * - command: Execute commands\n */\nexport const InstanceSchema = z\n .object({\n // Methods (functions - not validated)\n push: z.unknown().describe('Push function for processing events'),\n command: z.unknown().describe('Command function for walker commands'),\n // State\n allowed: z.boolean().describe('Whether event processing is allowed'),\n config: ConfigSchema.describe('Current collector configuration'),\n consent: ConsentSchema.describe('Current consent state'),\n custom: PropertiesSchema.describe(\n 'Custom implementation-specific properties',\n ),\n sources: SourcesSchema.describe('Registered source instances'),\n destinations: DestinationsSchema.describe(\n 'Registered destination instances',\n ),\n globals: PropertiesSchema.describe('Current global properties'),\n hooks: z.unknown().describe('Lifecycle hook functions'),\n on: z.unknown().describe('Event lifecycle configuration'),\n queue: z.array(EventSchema).describe('Queued events awaiting processing'),\n round: z\n .number()\n .describe('Collector run count (increments with each run)'),\n session: z.union([SessionDataSchema]).describe('Current session state'),\n timing: z.number().describe('Event processing timing information'),\n user: UserSchema.describe('Current user data'),\n })\n .meta({\n id: 'CollectorInstance',\n title: 'Collector.Instance',\n description:\n 'Collector instance (runtime object with push/command + full state and component maps).',\n })\n .describe('Collector instance with state and methods');\n\n// ========================================\n// JSON Schema Exports (for Explorer/RJSF/MCP)\n// ========================================\n\nexport const commandTypeJsonSchema = toJsonSchema(\n CommandTypeSchema,\n 'CommandType',\n);\n\nexport const configJsonSchema = toJsonSchema(ConfigSchema, 'CollectorConfig');\n\nexport const sessionDataJsonSchema = toJsonSchema(\n SessionDataSchema,\n 'SessionData',\n);\n\nexport const initConfigJsonSchema = toJsonSchema(\n InitConfigSchema,\n 'InitConfig',\n);\n\nexport const pushContextJsonSchema = toJsonSchema(\n PushContextSchema,\n 'CollectorPushContext',\n);\n\nexport const instanceJsonSchema = toJsonSchema(\n InstanceSchema,\n 'CollectorInstance',\n);\n","import { z, toJsonSchema } from './validation';\nimport {\n ConfigSchema as MappingConfigSchema,\n ValueSchema,\n ValuesSchema,\n} from './mapping';\nimport { Identifier } from './primitives';\nimport { LoggerConfigSchema } from './logger';\n\n/**\n * Source Schemas\n *\n * Mirrors: types/source.ts\n * Purpose: Runtime validation and JSON Schema generation for source configurations\n *\n * Sources are the entry points where events enter walkerOS:\n * - Browser sources (DOM events, dataLayer)\n * - Server sources (HTTP handlers, cloud functions)\n * - App sources (mobile, desktop)\n *\n * Sources are platform-agnostic through dependency injection via BaseEnv.\n * All platform-specific dependencies (DOM, HTTP, etc.) are provided through\n * the env object, making sources testable and portable.\n *\n * Key concept: Source.push IS the handler - no wrappers needed\n * Example: http('handler', source.push) for direct deployment\n */\n\n// ========================================\n// Environment Schema\n// ========================================\n\n/**\n * BaseEnv - Base environment interface for dependency injection\n *\n * Sources receive all dependencies through this environment object:\n * - push: Collector push function\n * - command: Collector command function\n * - sources: Other registered sources\n * - elb: Public API function (alias for collector.push)\n *\n * Platform-specific sources extend this with their requirements\n * (e.g., window, document, fetch, req, res)\n *\n * This makes sources:\n * - Platform-agnostic (no direct dependencies)\n * - Testable (mock env for tests)\n * - Composable (share env between sources)\n */\nexport const BaseEnvSchema = z\n .object({\n push: z\n .unknown()\n .meta({\n id: 'SourcePushFn',\n title: 'Source.PushFn',\n description:\n 'Collector push function passed to the source via dependency injection.',\n })\n .describe('Collector push function'),\n command: z\n .unknown()\n .meta({\n id: 'SourceCommandFn',\n title: 'Source.CommandFn',\n description: 'Collector command function passed to the source.',\n })\n .describe('Collector command function'),\n sources: z\n .unknown()\n .optional()\n .describe('Map of registered source instances'),\n elb: z\n .unknown()\n .meta({\n id: 'ElbFn',\n title: 'Elb.Fn',\n description: 'Public `elb(...)` API function alias for collector.push.',\n })\n .describe('Public API function (alias for collector.push)'),\n })\n .catchall(z.unknown())\n .meta({\n id: 'SourceBaseEnv',\n title: 'Source.BaseEnv',\n description:\n 'Base environment for source dependency injection; platform-specific sources extend this.',\n })\n .describe(\n 'Base environment for dependency injection - platform-specific sources extend this',\n );\n\n// ========================================\n// Configuration Schema\n// ========================================\n\n/**\n * Config - Source configuration\n *\n * Extends Mapping.Config with source-specific options:\n * - consent: Required consent to process events\n * - data: Global data transformations\n * - mapping: Entity-action mapping rules\n * - policy: Pre-processing policies\n * - settings: Source-specific settings\n * - env: Environment dependencies\n * - id: Source identifier\n * - onError: Error handler\n * - primary: Primary source flag (only one can be primary)\n *\n * Generic note: settings, env, and mapping can have source-specific types\n */\nexport const ConfigSchema = MappingConfigSchema.extend({\n settings: z\n .any()\n .meta({\n id: 'SourceSettings',\n title: 'Source.Settings',\n description:\n 'Implementation-specific configuration (source-defined shape).',\n })\n .describe('Implementation-specific configuration')\n .optional(),\n env: BaseEnvSchema.optional().describe(\n 'Environment dependencies (platform-specific)',\n ),\n id: Identifier.describe(\n 'Source identifier (defaults to source key)',\n ).optional(),\n primary: z\n .boolean()\n .describe('Mark as primary (only one can be primary)')\n .optional(),\n require: z\n .array(z.string())\n .optional()\n .describe(\n 'Defer source initialization until these collector events fire (e.g., [\"consent\"])',\n ),\n logger: LoggerConfigSchema.optional().describe(\n 'Logger configuration (level, handler) to override the collector defaults',\n ),\n setup: z\n .union([z.boolean(), z.record(z.string(), z.unknown())])\n .optional()\n .describe(\n 'One-time setup options applied during source registration (boolean enables defaults, object configures specifics)',\n ),\n ingest: z\n .union([ValueSchema, ValuesSchema])\n .optional()\n .describe(\n 'Ingest metadata extraction mapping. Extracts values from raw request objects (Express req, Lambda event) using mapping syntax.',\n ),\n disabled: z\n .boolean()\n .describe('Completely skip this source (no init, no event capture)')\n .optional(),\n init: z\n .boolean()\n .optional()\n .describe(\n 'Init lifecycle flag set by collector to true after Instance.init() runs',\n ),\n})\n .meta({\n id: 'SourceConfig',\n title: 'Source.Config',\n description:\n 'Source configuration with mapping, environment, and lifecycle hooks.',\n })\n .describe('Source configuration with mapping and environment');\n\n/**\n * PartialConfig - Config with all fields optional\n * Used for config updates and overrides\n *\n * Note: ConfigSchema extends MappingConfigSchema with mostly optional fields.\n * Using .partial() ensures all fields are optional for config updates.\n */\nexport const PartialConfigSchema = ConfigSchema.partial()\n .meta({\n id: 'SourcePartialConfig',\n title: 'Source.PartialConfig',\n description: 'Partial source configuration with all fields optional.',\n })\n .describe('Partial source configuration with all fields optional');\n\n// ========================================\n// Instance Schema\n// ========================================\n\n/**\n * Instance - Source instance (runtime object)\n *\n * Contains:\n * - type: Source type identifier\n * - config: Current configuration\n * - push: Push function (THE HANDLER)\n * - destroy: Cleanup function\n * - on: Lifecycle hook function\n *\n * Key concept: push IS the handler\n * The push function signature is flexible to support different platforms:\n * - Browser: push(event, data) => Promise<void>\n * - HTTP: push(req, res) => Promise<void>\n * - Cloud: push(event, context) => Promise<void>\n *\n * This flexibility allows direct deployment without wrappers:\n * - http.createServer(source.push)\n * - functions.https.onRequest(source.push)\n * - addEventListener('click', source.push)\n */\nexport const InstanceSchema = z\n .object({\n type: z\n .string()\n .describe('Source type identifier (e.g., \"browser\", \"dataLayer\")'),\n config: ConfigSchema.describe('Current source configuration'),\n // Push function - flexible signature, not validated\n push: z\n .any()\n .meta({\n id: 'SourceInstancePushFn',\n title: 'Source.PushFn',\n description:\n 'Push function — THE HANDLER (flexible signature for platform compatibility).',\n })\n .describe(\n 'Push function - THE HANDLER (flexible signature for platform compatibility)',\n ),\n // Optional lifecycle methods\n destroy: z\n .any()\n .meta({\n id: 'SourceDestroyFn',\n title: 'Source.DestroyFn',\n description: 'Cleanup function called when the source is removed.',\n })\n .optional()\n .describe('Cleanup function called when source is removed'),\n on: z\n .unknown()\n .optional()\n .describe('Lifecycle hook function for event types'),\n })\n .meta({\n id: 'SourceInstance',\n title: 'Source.Instance',\n description:\n 'Source instance (runtime object with push handler and lifecycle methods).',\n })\n .describe('Source instance with push handler and lifecycle methods');\n\n// ========================================\n// Initialization Schemas\n// ========================================\n\n/**\n * Init - Source initialization function\n *\n * Factory function that creates a source instance:\n * (config, env) => Instance | Promise<Instance>\n *\n * Receives:\n * - config: Partial configuration\n * - env: Environment dependencies\n *\n * Returns:\n * - Source instance with push function\n *\n * The init function sets up the source (e.g., attach DOM listeners,\n * start HTTP server, subscribe to events) and returns the instance.\n */\nexport const InitSchema = z\n .any()\n .meta({\n id: 'SourceInit',\n title: 'Source.Init',\n description:\n 'Source initialization function: (config, env) => Instance | Promise<Instance>.',\n })\n .describe(\n 'Source initialization function: (config, env) => Instance | Promise<Instance>',\n );\n\n/**\n * InitSource - Initialization configuration\n *\n * Contains:\n * - code: Init function\n * - config: Partial config overrides\n * - env: Partial env overrides\n * - primary: Primary source flag\n */\nexport const InitSourceSchema = z\n .object({\n code: InitSchema.describe('Source initialization function'),\n config: PartialConfigSchema.optional().describe(\n 'Partial configuration overrides',\n ),\n env: BaseEnvSchema.partial()\n .optional()\n .describe('Partial environment overrides'),\n primary: z\n .boolean()\n .optional()\n .describe('Mark as primary source (only one can be primary)'),\n })\n .meta({\n id: 'SourceInitSource',\n title: 'Source.InitSource',\n description:\n 'Source initialization bundle (init function + config + env + primary flag).',\n })\n .describe('Source initialization configuration');\n\n/**\n * InitSources - Map of source IDs to init configs\n */\nexport const InitSourcesSchema = z\n .record(z.string(), InitSourceSchema)\n .meta({\n id: 'SourceInitSources',\n title: 'Source.InitSources',\n description: 'Map of source IDs to initialization configurations.',\n })\n .describe('Map of source IDs to initialization configurations');\n\n// ========================================\n// JSON Schema Exports (for Explorer/RJSF/MCP)\n// ========================================\n\nexport const baseEnvJsonSchema = toJsonSchema(BaseEnvSchema, 'SourceBaseEnv');\n\nexport const configJsonSchema = toJsonSchema(ConfigSchema, 'SourceConfig');\n\nexport const partialConfigJsonSchema = toJsonSchema(\n PartialConfigSchema,\n 'PartialSourceConfig',\n);\n\nexport const instanceJsonSchema = toJsonSchema(\n InstanceSchema,\n 'SourceInstance',\n);\n\nexport const initSourceJsonSchema = toJsonSchema(\n InitSourceSchema,\n 'InitSource',\n);\n\nexport const initSourcesJsonSchema = toJsonSchema(\n InitSourcesSchema,\n 'InitSources',\n);\n","import { z, toJsonSchema } from './validation';\nimport { Identifier } from './primitives';\nimport { RoutableNextSchema } from './matcher';\nimport { CacheSchema } from './cache';\nimport { LoggerConfigSchema } from './logger';\n\n/**\n * Transformer Schemas\n *\n * Mirrors: types/transformer.ts\n * Purpose: Runtime validation and JSON Schema generation for transformer configurations\n *\n * Transformers run between source and collector (pre-chain via `source.next`) or\n * between collector and destination (post-chain via `destination.before`), and\n * after destination push (`destination.next`). They validate, enrich, or redact\n * events in flight.\n */\n\n// ========================================\n// Configuration Schemas\n// ========================================\n\n/**\n * Config - Transformer configuration\n *\n * Mirrors types/transformer.ts Config interface. Shared fields wrap the\n * package-specific `settings` field.\n */\nexport const ConfigSchema = z\n .object({\n settings: z\n .any()\n .meta({\n id: 'TransformerSettings',\n title: 'Transformer.Settings',\n description:\n 'Implementation-specific configuration (transformer-defined shape).',\n })\n .describe('Implementation-specific configuration')\n .optional(),\n env: z\n .any()\n .meta({\n id: 'TransformerEnv',\n title: 'Transformer.Env',\n description: 'Environment dependencies (transformer-defined shape).',\n })\n .describe('Environment dependencies (platform-specific)')\n .optional(),\n id: Identifier.describe(\n 'Transformer instance identifier (defaults to transformer key)',\n ).optional(),\n logger: LoggerConfigSchema.optional().describe(\n 'Logger configuration (level, handler) to override the collector defaults',\n ),\n before: RoutableNextSchema.optional().describe(\n 'Pre-transformer chain that runs before this transformer pushes',\n ),\n next: RoutableNextSchema.optional().describe(\n 'Graph wiring to the next transformer in the chain',\n ),\n cache: CacheSchema.optional().describe(\n 'Step-level cache configuration for this transformer',\n ),\n init: z.boolean().describe('Whether to initialize immediately').optional(),\n disabled: z\n .boolean()\n .describe('Completely skip this transformer in chains')\n .optional(),\n mock: z\n .unknown()\n .meta({\n id: 'TransformerMock',\n title: 'Transformer.Mock',\n description:\n 'Return this value instead of calling push(). Dev/testing only.',\n })\n .optional()\n .describe(\n 'Return this value instead of calling push(). Global mock for all chains. Dev/testing only.',\n ),\n chainMocks: z\n .record(\n z.string(),\n z.unknown().meta({\n id: 'TransformerChainMock',\n title: 'Transformer.ChainMock',\n description: 'Chain-path-specific mock value. Dev/testing only.',\n }),\n )\n .optional()\n .describe(\n 'Path-specific mock values keyed by chain path. Takes precedence over global mock. Dev/testing only.',\n ),\n })\n .meta({\n id: 'TransformerConfig',\n title: 'Transformer.Config',\n description:\n 'Transformer configuration (settings, env, chain wiring, cache, mocks).',\n })\n .describe('Transformer configuration');\n\n/**\n * PartialConfig - Config with all fields optional\n */\nexport const PartialConfigSchema = ConfigSchema.partial()\n .meta({\n id: 'TransformerPartialConfig',\n title: 'Transformer.PartialConfig',\n description: 'Partial transformer configuration with all fields optional.',\n })\n .describe('Partial transformer configuration with all fields optional');\n\n// ========================================\n// JSON Schema Exports (for Explorer/RJSF/MCP)\n// ========================================\n\nexport const configJsonSchema = toJsonSchema(ConfigSchema, 'TransformerConfig');\n\nexport const partialConfigJsonSchema = toJsonSchema(\n PartialConfigSchema,\n 'PartialTransformerConfig',\n);\n","import { z, toJsonSchema } from './validation';\nimport { Identifier } from './primitives';\nimport { LoggerConfigSchema } from './logger';\n\n/**\n * Store Schemas\n *\n * Mirrors: types/store.ts\n * Purpose: Runtime validation and JSON Schema generation for store configurations\n *\n * Stores are the 4th component type — passive key-value infrastructure that\n * other components consume via `env`. They are referenced via `$store.storeId`\n * in `env` values. Init first, destroy last. No chains.\n */\n\n// ========================================\n// Configuration Schemas\n// ========================================\n\n/**\n * Config - Store configuration\n *\n * Mirrors types/store.ts Config interface. Minimal set of shared fields around\n * the package-specific `settings` field.\n */\nexport const ConfigSchema = z\n .object({\n settings: z\n .unknown()\n .meta({\n id: 'StoreSettings',\n title: 'Store.Settings',\n description:\n 'Implementation-specific configuration (store-defined shape).',\n })\n .describe('Implementation-specific configuration')\n .optional(),\n env: z\n .unknown()\n .meta({\n id: 'StoreEnv',\n title: 'Store.Env',\n description: 'Environment dependencies (store-defined shape).',\n })\n .describe('Environment dependencies (platform-specific)')\n .optional(),\n id: Identifier.describe(\n 'Store instance identifier (defaults to store key)',\n ).optional(),\n logger: LoggerConfigSchema.optional().describe(\n 'Logger configuration (level, handler) to override the collector defaults',\n ),\n setup: z\n .union([z.boolean(), z.record(z.string(), z.unknown())])\n .optional()\n .describe(\n 'One-time setup options applied during store registration (boolean enables defaults, object configures specifics)',\n ),\n })\n .meta({\n id: 'StoreConfig',\n title: 'Store.Config',\n description:\n 'Store configuration (settings, env, logger) — key-value infrastructure component.',\n })\n .describe('Store configuration');\n\n/**\n * PartialConfig - Config with all fields optional\n */\nexport const PartialConfigSchema = ConfigSchema.partial()\n .meta({\n id: 'StorePartialConfig',\n title: 'Store.PartialConfig',\n description: 'Partial store configuration with all fields optional.',\n })\n .describe('Partial store configuration with all fields optional');\n\n// ========================================\n// JSON Schema Exports (for Explorer/RJSF/MCP)\n// ========================================\n\nexport const configJsonSchema = toJsonSchema(ConfigSchema, 'StoreConfig');\n\nexport const partialConfigJsonSchema = toJsonSchema(\n PartialConfigSchema,\n 'PartialStoreConfig',\n);\n","/**\n * Flow Configuration System - Zod Schemas (v4)\n *\n * Mirrors: types/flow.ts\n * Purpose: Runtime validation and JSON Schema generation for Flow configurations\n *\n * The Flow system provides unified configuration across all walkerOS flows.\n * These schemas enable:\n * - Runtime validation of config files\n * - Clear error messages for configuration issues\n * - JSON Schema generation for IDE support\n * - Type-safe parsing with Zod\n *\n * SCHEMA SYNC: Run `npx tsx scripts/generate-flow-schema.ts` from the repo root\n * to regenerate website/static/schema/flow/v4.json.\n *\n * @packageDocumentation\n */\n\nimport { z, toJsonSchema } from './validation';\nimport { RoutableNextSchema } from './matcher';\nimport { CacheSchema } from './cache';\n\n// ========================================\n// Shared Type Schemas\n// ========================================\n\n/**\n * Variables schema for unified $var. interpolation.\n *\n * @remarks\n * Variables can hold any value (scalars, objects, arrays). Whole-string $var\n * references preserve native type; inline interpolation requires scalars.\n * Deep paths via `$var.name.deep.path` are supported.\n */\nexport const VariablesSchema = z.record(z.string(), z.unknown()).meta({\n id: 'FlowVariables',\n title: 'Flow.Variables',\n description:\n 'Reusable values referenced via $var.name (with optional deep paths). Whole-string refs preserve native type; inline interpolation requires scalars.',\n});\n\n/**\n * Settings schema - free-form key-value bag inside Flow.Config.settings.\n */\nexport const SettingsSchema = z\n .record(z.string(), z.unknown())\n .meta({\n id: 'FlowSettings',\n title: 'Flow.Settings',\n description:\n 'Free-form key-value settings consumed by the platform runtime.',\n })\n .describe('Free-form platform settings bag');\n\n/**\n * NPM package name validation pattern.\n */\nconst npmPackageNamePattern =\n /^(@[a-z0-9\\-~][a-z0-9\\-._~]*\\/)?[a-z0-9\\-~][a-z0-9\\-._~]*$/;\n\n/**\n * Single bundle package entry.\n */\nexport const BundlePackageSchema = z\n .object({\n version: z.string().optional(),\n imports: z.array(z.string()).optional(),\n path: z.string().optional(), // Local path (takes precedence over version)\n })\n .meta({\n id: 'FlowBundlePackage',\n title: 'Flow.BundlePackage',\n description: 'Per-package bundle spec (version / imports / local path).',\n });\n\n/**\n * Bundle schema - build-time configuration for the bundler.\n */\nexport const BundleSchema = z\n .object({\n packages: z\n .record(\n z.string().regex(npmPackageNamePattern, 'Invalid npm package name'),\n BundlePackageSchema,\n )\n .optional()\n .describe('NPM packages to bundle, keyed by package name'),\n overrides: z\n .record(\n z.string().regex(npmPackageNamePattern, 'Invalid npm package name'),\n z.string().min(1, 'Override version cannot be empty'),\n )\n .optional()\n .describe('Transitive dependency version pins'),\n traceInclude: z\n .array(z.string())\n .optional()\n .describe(\n 'Extra paths or globs the bundler must include in the trace output (server flows only)',\n ),\n })\n .strict()\n .meta({\n id: 'FlowBundle',\n title: 'Flow.Bundle',\n description: 'Bundle configuration (packages + overrides + traceInclude).',\n })\n .describe('Bundle configuration (packages + overrides + traceInclude)');\n\n// ========================================\n// Inline Code Schema\n// ========================================\n\n/**\n * Inline code schema for embedding JavaScript functions in JSON configs.\n *\n * @remarks\n * Enables custom sources, transformers, destinations, and stores without\n * npm packages. The `push` function is required; `type` and `init` are optional.\n *\n * @example\n * ```json\n * {\n * \"code\": {\n * \"type\": \"enricher\",\n * \"push\": \"$code:(event) => ({ ...event, data: { ...event.data, enriched: true } })\"\n * }\n * }\n * ```\n */\nexport const CodeSchema = z\n .object({\n push: z\n .string()\n .min(1, 'Push function cannot be empty')\n .describe(\n 'JavaScript function for processing events. Must start with \"$code:\" prefix.',\n ),\n type: z\n .string()\n .optional()\n .describe('Optional type identifier for the inline instance'),\n init: z\n .string()\n .optional()\n .describe(\n 'Optional initialization function. Use $code: prefix for inline JavaScript.',\n ),\n })\n .meta({\n id: 'FlowCode',\n title: 'Flow.Code',\n description:\n 'Inline code block for custom sources / transformers / destinations / stores.',\n })\n .describe('Inline code for custom components');\n\n// ========================================\n// Step Example Schemas\n// ========================================\n\n/**\n * Trigger descriptor - source trigger metadata for step examples.\n */\nexport const TriggerDescriptorSchema = z\n .object({\n type: z\n .string()\n .optional()\n .describe('Trigger mechanism (e.g., click, POST, load)'),\n options: z.unknown().optional().describe('Mechanism-specific options'),\n })\n .meta({\n id: 'TriggerDescriptor',\n title: 'Trigger.Descriptor',\n description:\n 'Source trigger metadata (mechanism + options) used by step examples.',\n });\n\n/**\n * Step example schema - a named { in, out } pair.\n */\nexport const StepExampleSchema = z\n .object({\n title: z\n .string()\n .optional()\n .describe('Human-readable title (overrides default heading)'),\n description: z.string().optional().describe('Human-readable description'),\n public: z\n .boolean()\n .optional()\n .describe(\n 'Whether this example is shown in docs/UI/MCP default output (default: true). Set false for test-only fixtures.',\n ),\n in: z.unknown().optional().describe('Input to the step'),\n trigger: TriggerDescriptorSchema.optional().describe(\n 'Source trigger metadata',\n ),\n mapping: z.unknown().optional().describe('Mapping configuration'),\n out: z.unknown().optional().describe('Expected output from the step'),\n command: z\n .enum(['config', 'consent', 'user', 'run'])\n .optional()\n .describe(\n \"Invoke elb('walker <command>', in) instead of pushing in as an event\",\n ),\n })\n .meta({\n id: 'FlowStepExample',\n title: 'Flow.StepExample',\n description: 'Named example with input/output pair used for step testing.',\n })\n .describe('Named example with input/output pair');\n\n/**\n * Step examples record - keyed by scenario name.\n */\nexport const StepExamplesSchema = z\n .record(z.string(), StepExampleSchema)\n .meta({\n id: 'FlowStepExamples',\n title: 'Flow.StepExamples',\n description: 'Named step examples keyed by scenario name.',\n })\n .describe('Named step examples for testing and documentation');\n\n// ========================================\n// Source / Destination / Transformer / Store Schemas\n// ========================================\n\n/**\n * Source reference schema (Flow.Source).\n *\n * @remarks\n * Defines how to reference and configure a source package.\n * Sources capture events from various origins (browser, HTTP, etc.).\n * Either `package` (npm package) or `code` (inline object) may be provided.\n */\nexport const SourceSchema = z\n .object({\n package: z\n .string()\n .min(1, 'Package name cannot be empty')\n .optional()\n .describe(\n 'Package specifier with optional version (e.g., \"@walkeros/web-source-browser@2.0.0\")',\n ),\n code: z\n .union([z.string(), CodeSchema])\n .optional()\n .describe(\n 'Either a named export string (e.g., \"sourceExpress\") or an inline code object with push function',\n ),\n config: z\n .looseObject({\n setup: z\n .union([z.boolean(), z.record(z.string(), z.unknown())])\n .optional()\n .describe(\n 'One-time setup options applied during source registration (boolean enables defaults, object configures specifics)',\n ),\n })\n .meta({\n id: 'FlowSourceConfig',\n title: 'Source.Config',\n description: 'Source-specific configuration object (Source.Config).',\n })\n .optional()\n .describe('Source-specific configuration object'),\n env: z\n .unknown()\n .meta({\n id: 'FlowSourceEnv',\n title: 'Source.BaseEnv',\n description:\n 'Source environment configuration (Source.BaseEnv overrides).',\n })\n .optional()\n .describe('Source environment configuration'),\n primary: z\n .boolean()\n .optional()\n .describe(\n 'Mark as primary source (provides main elb). Only one source should be primary.',\n ),\n variables: VariablesSchema.optional().describe(\n 'Source-level variables (highest priority in cascade)',\n ),\n next: RoutableNextSchema.optional().describe(\n 'Pre-collector transformer chain. String, string[], or NextRule[] for conditional routing based on ingest data.',\n ),\n before: RoutableNextSchema.optional().describe(\n 'Pre-source transformer chain (consent-exempt). Handles transport-level preprocessing.',\n ),\n examples: StepExamplesSchema.optional().describe(\n 'Named step examples for testing and documentation (stripped during bundling)',\n ),\n cache: CacheSchema.optional().describe(\n 'Cache configuration for this source (match → key → ttl rules)',\n ),\n })\n .meta({\n id: 'FlowSource',\n title: 'Flow.Source',\n description:\n 'Source package reference with configuration, env, chains, and examples.',\n })\n .describe('Source package reference with configuration');\n\n/**\n * Transformer reference schema (Flow.Transformer).\n */\nexport const TransformerSchema = z\n .object({\n package: z\n .string()\n .min(1, 'Package name cannot be empty')\n .optional()\n .describe(\n 'Package specifier with optional version (e.g., \"@walkeros/transformer-enricher@1.0.0\")',\n ),\n code: z\n .union([z.string(), CodeSchema])\n .optional()\n .describe(\n 'Either a named export string (e.g., \"transformerEnricher\") or an inline code object with push function',\n ),\n config: z\n .unknown()\n .meta({\n id: 'FlowTransformerConfig',\n title: 'Transformer.Config',\n description: 'Transformer-specific configuration object.',\n })\n .optional()\n .describe('Transformer-specific configuration object'),\n env: z\n .unknown()\n .meta({\n id: 'FlowTransformerEnv',\n title: 'Transformer.Env',\n description: 'Transformer environment configuration.',\n })\n .optional()\n .describe('Transformer environment configuration'),\n before: RoutableNextSchema.optional().describe(\n 'Pre-transformer chain. Runs before this transformer push function.',\n ),\n next: RoutableNextSchema.optional().describe(\n 'Next transformer in chain. String, string[], or NextRule[] for conditional routing.',\n ),\n variables: VariablesSchema.optional().describe(\n 'Transformer-level variables (highest priority in cascade)',\n ),\n examples: StepExamplesSchema.optional().describe(\n 'Named step examples for testing and documentation (stripped during bundling)',\n ),\n cache: CacheSchema.optional().describe(\n 'Cache configuration for this transformer (match → key → ttl rules)',\n ),\n })\n .meta({\n id: 'FlowTransformer',\n title: 'Flow.Transformer',\n description:\n 'Transformer package reference with configuration, env, chains, and cache.',\n })\n .describe('Transformer package reference with configuration');\n\n/**\n * Destination reference schema (Flow.Destination).\n */\nexport const DestinationSchema = z\n .object({\n package: z\n .string()\n .min(1, 'Package name cannot be empty')\n .optional()\n .describe(\n 'Package specifier with optional version (e.g., \"@walkeros/web-destination-gtag@2.0.0\")',\n ),\n code: z\n .union([z.string(), CodeSchema])\n .optional()\n .describe(\n 'Either a named export string (e.g., \"destinationAnalytics\") or an inline code object with push function',\n ),\n config: z\n .looseObject({\n setup: z\n .union([z.boolean(), z.record(z.string(), z.unknown())])\n .optional()\n .describe(\n 'One-time setup options applied during destination registration (boolean enables defaults, object configures specifics)',\n ),\n })\n .meta({\n id: 'FlowDestinationConfig',\n title: 'Destination.Config',\n description: 'Destination-specific configuration object.',\n })\n .optional()\n .describe('Destination-specific configuration object'),\n env: z\n .unknown()\n .meta({\n id: 'FlowDestinationEnv',\n title: 'Destination.Env',\n description: 'Destination environment configuration.',\n })\n .optional()\n .describe('Destination environment configuration'),\n variables: VariablesSchema.optional().describe(\n 'Destination-level variables (highest priority in cascade)',\n ),\n before: RoutableNextSchema.optional().describe(\n 'Post-collector transformer chain. String, string[], or NextRule[] for conditional routing.',\n ),\n next: RoutableNextSchema.optional().describe(\n 'Post-push transformer chain. Push response available at context.ingest._response.',\n ),\n examples: StepExamplesSchema.optional().describe(\n 'Named step examples for testing and documentation (stripped during bundling)',\n ),\n cache: CacheSchema.optional().describe(\n 'Cache configuration for this destination (match → key → ttl rules)',\n ),\n })\n .meta({\n id: 'FlowDestination',\n title: 'Flow.Destination',\n description:\n 'Destination package reference with configuration, env, chains, and cache.',\n })\n .describe('Destination package reference with configuration');\n\n/**\n * Store reference schema (Flow.Store).\n *\n * @remarks\n * Stores are passive key-value infrastructure - no chain properties (next/before).\n * Consumed by other components via `$store.storeId` env wiring.\n */\nexport const StoreSchema = z\n .object({\n package: z\n .string()\n .min(1, 'Package name cannot be empty')\n .optional()\n .describe('Store package specifier with optional version'),\n code: z\n .union([z.string(), CodeSchema])\n .optional()\n .describe('Named export string or inline code definition'),\n config: z\n .looseObject({\n setup: z\n .union([z.boolean(), z.record(z.string(), z.unknown())])\n .optional()\n .describe(\n 'One-time setup options applied during store registration (boolean enables defaults, object configures specifics)',\n ),\n })\n .meta({\n id: 'FlowStoreConfig',\n title: 'Store.Config',\n description: 'Store-specific configuration object.',\n })\n .optional()\n .describe('Store-specific configuration object'),\n env: z\n .unknown()\n .meta({\n id: 'FlowStoreEnv',\n title: 'Store.Env',\n description: 'Store environment configuration.',\n })\n .optional()\n .describe('Store environment configuration'),\n variables: VariablesSchema.optional().describe(\n 'Store-level variables (highest priority in cascade)',\n ),\n examples: StepExamplesSchema.optional().describe(\n 'Named step examples for testing and documentation (stripped during bundling)',\n ),\n })\n .meta({\n id: 'FlowStore',\n title: 'Flow.Store',\n description:\n 'Store package reference with configuration, env, and examples.',\n })\n .describe('Store package reference with configuration');\n\n// ========================================\n// Contract Schemas\n// ========================================\n\n/**\n * Contract schema entry - a JSON Schema object.\n * Passthrough to allow any valid JSON Schema keywords.\n */\nexport const ContractSchemaEntry = z\n .record(z.string(), z.unknown())\n .meta({\n id: 'FlowContractSchemaEntry',\n title: 'Flow.ContractSchemaEntry',\n description:\n 'JSON Schema object for event validation with description/examples annotations.',\n })\n .describe(\n 'JSON Schema object for event validation with description/examples annotations',\n );\n\n/**\n * Contract actions - keyed by action name (or \"*\" wildcard).\n */\nexport const ContractActionsSchema = z\n .record(z.string(), ContractSchemaEntry)\n .meta({\n id: 'FlowContractActions',\n title: 'Flow.ContractActions',\n description: 'Action-level contract entries keyed by action name.',\n })\n .describe('Action-level contract entries');\n\n/**\n * Contract events map - entity → action keyed.\n */\nexport const ContractEventsSchema = z\n .record(z.string(), ContractActionsSchema)\n .meta({\n id: 'FlowContractEvents',\n title: 'Flow.ContractEvents',\n description: 'Entity-action event schemas (entity → action → schema).',\n })\n .describe('Entity-action event schemas');\n\n/**\n * Single named contract rule.\n */\nexport const ContractRuleSchema = z\n .object({\n extends: z\n .string()\n .optional()\n .describe('Inherit from another named contract'),\n tagging: z\n .number()\n .optional()\n .describe('Tagging level (used by validators / runtime tagging policy)'),\n description: z.string().optional().describe('Human-readable description'),\n globals: ContractSchemaEntry.optional().describe(\n 'JSON Schema for event.globals',\n ),\n context: ContractSchemaEntry.optional().describe(\n 'JSON Schema for event.context',\n ),\n custom: ContractSchemaEntry.optional().describe(\n 'JSON Schema for event.custom',\n ),\n user: ContractSchemaEntry.optional().describe('JSON Schema for event.user'),\n consent: ContractSchemaEntry.optional().describe(\n 'JSON Schema for event.consent',\n ),\n events: ContractEventsSchema.optional().describe(\n 'Entity-action event schemas',\n ),\n })\n .meta({\n id: 'FlowContractRule',\n title: 'Flow.ContractRule',\n description:\n 'Named contract rule with optional sections (globals/context/custom/user/consent) and event schemas.',\n })\n .describe('Named contract rule with optional sections and events');\n\n/**\n * Named contract map.\n */\nexport const ContractSchema = z\n .record(z.string(), ContractRuleSchema)\n .meta({\n id: 'FlowContract',\n title: 'Flow.Contract',\n description: 'Named contracts map with optional extends inheritance.',\n })\n .describe('Named contracts with optional extends inheritance');\n\n// ========================================\n// Per-flow Config block + Single Flow\n// ========================================\n\n/**\n * Per-flow Config schema (Flow.Config).\n *\n * @remarks\n * Groups platform identity, optional public URL, free-form settings bag,\n * and bundle (build-time) configuration.\n */\nexport const ConfigSchema = z\n .object({\n platform: z\n .enum(['web', 'server'])\n .describe(\n 'Platform identity for this flow. Drives bundle target/format.',\n ),\n url: z\n .string()\n .min(1)\n .optional()\n .describe(\n 'Public URL where this flow is reachable (for cross-flow $flow.X.url references).',\n ),\n settings: SettingsSchema.optional().describe(\n 'Free-form key-value settings consumed by the platform runtime.',\n ),\n bundle: BundleSchema.optional().describe(\n 'Bundle configuration: NPM packages, transitive dependency overrides.',\n ),\n })\n .meta({\n id: 'FlowConfig',\n title: 'Flow.Config',\n description:\n 'Per-flow configuration block: platform identity, optional public URL, settings, bundle.',\n })\n .describe('Per-flow configuration block');\n\n/**\n * Single flow schema (Flow).\n *\n * @remarks\n * Represents one deployment target (e.g., web_prod, server_stage).\n * The platform is determined by `config.platform`.\n */\nexport const FlowSchema = z\n .object({\n config: ConfigSchema.optional().describe(\n 'Per-flow configuration: platform, url, settings, bundle.',\n ),\n sources: z\n .record(z.string(), SourceSchema)\n .optional()\n .describe(\n 'Source configurations (data capture) keyed by unique identifier',\n ),\n destinations: z\n .record(z.string(), DestinationSchema)\n .optional()\n .describe(\n 'Destination configurations (data output) keyed by unique identifier',\n ),\n transformers: z\n .record(z.string(), TransformerSchema)\n .optional()\n .describe(\n 'Transformer configurations (event transformation) keyed by unique identifier',\n ),\n stores: z\n .record(z.string(), StoreSchema)\n .optional()\n .describe(\n 'Store configurations (key-value storage) keyed by unique identifier',\n ),\n collector: z\n .unknown()\n .meta({\n id: 'FlowCollector',\n title: 'Collector.InitConfig',\n description:\n 'Collector configuration for event processing (Collector.InitConfig).',\n })\n .optional()\n .describe(\n 'Collector configuration for event processing (uses Collector.InitConfig)',\n ),\n variables: VariablesSchema.optional().describe(\n 'Flow-level variables (override root variables, overridden by source/destination variables)',\n ),\n })\n .meta({\n id: 'Flow',\n title: 'Flow',\n description:\n 'Single flow definition (one deployment target): config, sources, destinations, transformers, stores, collector.',\n })\n .describe('Single flow definition for one deployment target');\n\n// ========================================\n// Root Json Schema (walkeros.config.json)\n// ========================================\n\n/**\n * Root walkerOS multi-flow configuration schema (Flow.Json, v4).\n *\n * @remarks\n * This is the complete schema for walkeros.config.json files.\n * Contains multiple named flows with shared variables and contracts.\n */\nexport const JsonSchema = z\n .object({\n version: z\n .literal(4)\n .describe('Configuration schema version (v4, current).'),\n $schema: z\n .string()\n .url('Schema URL must be a valid URL')\n .optional()\n .describe(\n 'JSON Schema reference for IDE validation (e.g., \"https://walkeros.io/schema/flow/v4.json\")',\n ),\n include: z\n .array(z.string())\n .optional()\n .describe('Folders to include in the bundle output'),\n variables: VariablesSchema.optional().describe(\n 'Shared variables for interpolation across all flows (use $var.name syntax, deep paths supported)',\n ),\n contract: ContractSchema.optional().describe(\n 'Named contracts with extends inheritance and dot-path references',\n ),\n flows: z\n .record(z.string(), FlowSchema)\n .refine((flows) => Object.keys(flows).length > 0, {\n message: 'At least one flow is required',\n })\n .describe(\n 'Named flow configurations (e.g., production, staging, development)',\n ),\n })\n .meta({\n id: 'FlowJson',\n title: 'Flow.Json',\n description:\n 'walkerOS root configuration (walkeros.config.json) v4: version, variables, contract, named flows.',\n })\n .describe('walkerOS root configuration (walkeros.config.json)');\n\n// ========================================\n// Helper Functions\n// ========================================\n\n/**\n * Parse and validate a Flow.Json (root) configuration.\n *\n * @param data - Raw JSON data from config file\n * @returns Validated Flow.Json object\n * @throws ZodError if validation fails with detailed error messages\n *\n * @example\n * ```typescript\n * import { parseConfig } from '@walkeros/core/dev';\n * import { readFileSync } from 'fs';\n *\n * const raw = JSON.parse(readFileSync('walkeros.config.json', 'utf8'));\n * const config = parseConfig(raw);\n * console.log(`Found ${Object.keys(config.flows).length} flows`);\n * ```\n */\nexport function parseConfig(data: unknown): z.infer<typeof JsonSchema> {\n return JsonSchema.parse(data);\n}\n\n/**\n * Safely parse a Flow.Json (root) configuration without throwing.\n *\n * @param data - Raw JSON data from config file\n * @returns Success result with data or error result with issues\n */\nexport function safeParseConfig(data: unknown) {\n return JsonSchema.safeParse(data);\n}\n\n/**\n * Parse and validate a single Flow definition.\n *\n * @param data - Raw JSON data for a single flow\n * @returns Validated Flow object\n * @throws ZodError if validation fails\n */\nexport function parseFlow(data: unknown): z.infer<typeof FlowSchema> {\n return FlowSchema.parse(data);\n}\n\n/**\n * Safely parse a single Flow definition without throwing.\n */\nexport function safeParseFlow(data: unknown) {\n return FlowSchema.safeParse(data);\n}\n\n// ========================================\n// JSON Schema Generation (consumed by IDE / tooling)\n// ========================================\n\n/**\n * JSON Schema for Flow.Json (root walkeros.config.json).\n *\n * @remarks\n * Used for IDE validation and autocomplete.\n * Hosted at https://walkeros.io/schema/flow/v4.json\n */\nexport const configJsonSchema = z.toJSONSchema(JsonSchema, {\n target: 'draft-7',\n});\n\n/**\n * JSON Schema for a single Flow.\n */\nexport const flowJsonSchema = toJsonSchema(FlowSchema, 'Flow');\n\n/**\n * JSON Schema for the per-flow Config block (Flow.Config).\n */\nexport const flowConfigJsonSchema = toJsonSchema(ConfigSchema, 'FlowConfig');\n\n/**\n * JSON Schema for Flow.Source.\n */\nexport const sourceJsonSchema = toJsonSchema(SourceSchema, 'Source');\n\n/**\n * JSON Schema for Flow.Destination.\n */\nexport const destinationJsonSchema = toJsonSchema(\n DestinationSchema,\n 'Destination',\n);\n\n/**\n * JSON Schema for Flow.Transformer.\n */\nexport const transformerJsonSchema = toJsonSchema(\n TransformerSchema,\n 'Transformer',\n);\n\n/**\n * JSON Schema for Flow.Store.\n */\nexport const storeJsonSchema = toJsonSchema(StoreSchema, 'Store');\n\n/**\n * JSON Schema for a single Contract rule (Flow.ContractRule).\n */\nexport const contractRuleJsonSchema = toJsonSchema(\n ContractRuleSchema,\n 'ContractRule',\n);\n\n/**\n * JSON Schema for the named Contract map (Flow.Contract).\n */\nexport const contractJsonSchema = toJsonSchema(ContractSchema, 'Contract');\n","import { z } from 'zod';\n\nexport const CodeSchema = z.object({\n lang: z\n .string()\n .optional()\n .describe('Language identifier (e.g. json, sql, bash, typescript)'),\n code: z.string().describe('Code snippet'),\n});\n\nexport const HintSchema = z.object({\n text: z\n .string()\n .describe('Short actionable hint text focused on walkerOS usage'),\n code: z.array(CodeSchema).optional().describe('Optional code snippets'),\n});\n\nexport const HintsSchema = z\n .record(z.string(), HintSchema)\n .describe(\n 'Keyed hints for AI consumption — lightweight context beyond schemas and examples',\n );\n","import { z } from './validation';\n\n/**\n * Click-ID registry entry — maps a URL parameter name to a canonical platform.\n *\n * Runtime use of this schema is optional; `getMarketingParameters()` accepts\n * plain `ClickIdEntry` objects without validating. This schema exists for\n * dev tooling (Explorer UI, MCP package_get, JSON Schema generation).\n */\nexport const ClickIdEntrySchema = z.object({\n param: z\n .string()\n .describe(\n 'Lowercase URL parameter name. Match is case-insensitive on lookup.',\n ),\n platform: z\n .string()\n .describe('Canonical platform identifier (lowercase, kebab-case).'),\n});\n","import { JsonSchema } from './flow';\nimport type { ValidationIssue, ValidationResult } from './validate';\nimport type { IntelliSenseContext, PackageInfo } from './intellisense';\n\n/**\n * Validate a Flow.Config JSON string.\n *\n * Performs three levels of validation:\n * 1. JSON syntax (parse error with line/column)\n * 2. Schema (Zod ConfigSchema validation with mapped positions)\n * 3. References (checks $var., $secret. against extracted context)\n *\n * Returns errors, warnings, and extracted IntelliSenseContext as a byproduct.\n * Pure function: works in Node.js (CLI/MCP) and browser (CodeBox).\n */\nexport function validateFlowConfig(json: string): ValidationResult {\n // 1. JSON parse\n let parsed: unknown;\n try {\n parsed = JSON.parse(json);\n } catch (e) {\n const { line, column } = getJsonParsePosition(e, json);\n return {\n valid: false,\n errors: [\n {\n message: e instanceof Error ? e.message : 'Invalid JSON',\n severity: 'error',\n line,\n column,\n },\n ],\n warnings: [],\n };\n }\n\n const errors: ValidationIssue[] = [];\n const warnings: ValidationIssue[] = [];\n\n // 2. Schema validation\n const zodResult = JsonSchema.safeParse(parsed);\n if (!zodResult.success) {\n for (const issue of zodResult.error.issues) {\n const path = issue.path.join('.');\n const pos = findPathPosition(json, issue.path as (string | number)[]);\n errors.push({\n message: issue.message,\n severity: 'error',\n path: path || 'root',\n ...pos,\n });\n }\n }\n\n // 3. Extract context + check references (only if JSON is an object with flows)\n const context = extractContext(parsed);\n if (context) {\n const refWarnings = checkReferences(json, context);\n warnings.push(...refWarnings);\n }\n\n return {\n valid: errors.length === 0,\n errors,\n warnings,\n context,\n };\n}\n\n// --- Context Extraction ---\n\nfunction extractContext(\n parsed: unknown,\n): Partial<IntelliSenseContext> | undefined {\n if (\n !isObject(parsed) ||\n !('version' in parsed) ||\n !('flows' in parsed) ||\n !isObject(parsed.flows)\n ) {\n return undefined;\n }\n\n const variables: Record<string, unknown> = {};\n const sources: string[] = [];\n const destinations: string[] = [];\n const transformers: string[] = [];\n const packages: PackageInfo[] = [];\n const contractEntities: Array<{ entity: string; actions: string[] }> = [];\n let platform: 'web' | 'server' | undefined;\n\n // Setup-level\n mergeVars(variables, parsed.variables);\n extractContractEntities(contractEntities, parsed.contract);\n\n // Walk each flow config\n for (const flow of Object.values(parsed.flows)) {\n if (!isObject(flow)) continue;\n\n if (!platform) {\n const cfg = flow.config;\n if (\n isObject(cfg) &&\n (cfg.platform === 'web' || cfg.platform === 'server')\n ) {\n platform = cfg.platform;\n }\n }\n\n mergeVars(variables, flow.variables);\n\n for (const type of ['sources', 'destinations', 'transformers'] as const) {\n const stepType =\n type === 'sources'\n ? 'source'\n : type === 'destinations'\n ? 'destination'\n : 'transformer';\n const list =\n type === 'sources'\n ? sources\n : type === 'destinations'\n ? destinations\n : transformers;\n\n if (isObject(flow[type])) {\n for (const [name, ref] of Object.entries(\n flow[type] as Record<string, unknown>,\n )) {\n list.push(name);\n if (isObject(ref)) {\n mergeVars(variables, ref.variables);\n if (typeof ref.package === 'string') {\n packages.push({\n package: ref.package,\n shortName: name,\n type: stepType,\n platform: platform || 'web',\n });\n }\n }\n }\n }\n }\n }\n\n const ctx: Partial<IntelliSenseContext> = {\n variables,\n stepNames: { sources, destinations, transformers },\n };\n\n if (platform) ctx.platform = platform;\n if (packages.length > 0) ctx.packages = packages;\n if (contractEntities.length > 0) ctx.contract = contractEntities;\n\n return ctx;\n}\n\n// --- Reference Checking ---\n\nfunction checkReferences(\n text: string,\n context: Partial<IntelliSenseContext>,\n): ValidationIssue[] {\n const issues: ValidationIssue[] = [];\n\n if (context.variables) {\n const regex = /\\$var\\.(\\w+)/g;\n let match: RegExpExecArray | null;\n while ((match = regex.exec(text)) !== null) {\n if (!(match[1] in context.variables)) {\n const pos = offsetToPosition(text, match.index, match[0].length);\n issues.push({\n message: `Unknown variable \"$var.${match[1]}\". Defined: ${Object.keys(context.variables).join(', ') || 'none'}`,\n severity: 'warning',\n path: `$var.${match[1]}`,\n ...pos,\n });\n }\n }\n }\n\n return issues;\n}\n\n// --- Position Utilities ---\n\nfunction getJsonParsePosition(\n error: unknown,\n json: string,\n): { line: number; column: number } {\n if (error instanceof SyntaxError) {\n // Node.js: \"... at position N\" or \"... at line N column M\"\n const posMatch = error.message.match(/position\\s+(\\d+)/);\n if (posMatch) {\n const offset = parseInt(posMatch[1], 10);\n return offsetToLineCol(json, offset);\n }\n const lineColMatch = error.message.match(/line\\s+(\\d+)\\s+column\\s+(\\d+)/);\n if (lineColMatch) {\n return {\n line: parseInt(lineColMatch[1], 10),\n column: parseInt(lineColMatch[2], 10),\n };\n }\n }\n return { line: 1, column: 1 };\n}\n\nfunction offsetToLineCol(\n text: string,\n offset: number,\n): { line: number; column: number } {\n let line = 1;\n let col = 1;\n for (let i = 0; i < offset && i < text.length; i++) {\n if (text[i] === '\\n') {\n line++;\n col = 1;\n } else {\n col++;\n }\n }\n return { line, column: col };\n}\n\nfunction offsetToPosition(\n text: string,\n startOffset: number,\n length: number,\n): { line: number; column: number; endLine: number; endColumn: number } {\n const start = offsetToLineCol(text, startOffset);\n const end = offsetToLineCol(text, startOffset + length);\n return {\n line: start.line,\n column: start.column,\n endLine: end.line,\n endColumn: end.column,\n };\n}\n\nfunction findPathPosition(\n json: string,\n path: (string | number)[],\n): { line: number; column: number } {\n if (path.length === 0) return { line: 1, column: 1 };\n\n // Search for the last path segment as a JSON key\n const lastKey = path[path.length - 1];\n if (typeof lastKey === 'string') {\n const pattern = `\"${lastKey}\"`;\n const idx = json.lastIndexOf(pattern);\n if (idx !== -1) return offsetToLineCol(json, idx);\n }\n\n return { line: 1, column: 1 };\n}\n\n// --- Helpers ---\n\nfunction isObject(v: unknown): v is Record<string, unknown> {\n return typeof v === 'object' && v !== null && !Array.isArray(v);\n}\n\nfunction mergeVars(target: Record<string, unknown>, source: unknown): void {\n if (!isObject(source)) return;\n for (const [k, v] of Object.entries(source)) {\n target[k] = v;\n }\n}\n\nfunction extractContractEntities(\n target: Array<{ entity: string; actions: string[] }>,\n contract: unknown,\n): void {\n if (!isObject(contract)) return;\n\n // Named contracts: iterate each named entry\n for (const [, entry] of Object.entries(contract)) {\n if (!isObject(entry)) continue;\n const events = entry.events;\n if (!isObject(events)) continue;\n\n for (const [entity, actions] of Object.entries(events)) {\n if (!isObject(actions)) continue;\n const existing = target.find((e) => e.entity === entity);\n const actionNames = Object.keys(actions);\n if (existing) {\n for (const a of actionNames) {\n if (!existing.actions.includes(a)) existing.actions.push(a);\n }\n } else {\n target.push({ entity, actions: actionNames });\n }\n }\n }\n}\n","/**\n * JSON Schema type\n */\nexport type JSONSchema = Record<string, unknown>;\n\n/**\n * Schema Builder - DRY utility for creating JSON Schemas\n *\n * This utility allows destinations to define schemas using simple objects,\n * without needing Zod as a dependency. The core package handles conversion.\n *\n * Benefits:\n * - Single source of schema generation logic\n * - No Zod dependency in destination packages\n * - Simple, declarative schema definitions\n * - Type-safe with TypeScript\n * - Follows DRY principle\n *\n * @example\n * // In destination package (NO Zod needed!)\n * import { createObjectSchema, createArraySchema } from '@walkeros/core/dev';\n *\n * export const settingsSchema = createObjectSchema({\n * pixelId: {\n * type: 'string',\n * required: true,\n * pattern: '^[0-9]+$',\n * description: 'Your Meta Pixel ID',\n * },\n * });\n */\n\n/**\n * Property definition for schema builder\n */\nexport interface PropertyDef {\n type: 'string' | 'number' | 'boolean' | 'object' | 'array';\n required?: boolean;\n description?: string;\n pattern?: string;\n minLength?: number;\n maxLength?: number;\n minimum?: number;\n maximum?: number;\n enum?: readonly string[] | readonly number[];\n properties?: Record<string, PropertyDef>;\n items?: PropertyDef;\n default?: unknown;\n}\n\n/**\n * Create object schema from property definitions\n *\n * @param properties - Property definitions\n * @param title - Optional schema title\n * @returns JSON Schema\n *\n * @example\n * const schema = createObjectSchema({\n * pixelId: {\n * type: 'string',\n * required: true,\n * pattern: '^[0-9]+$',\n * description: 'Your Meta Pixel ID',\n * },\n * eventName: {\n * type: 'string',\n * enum: ['PageView', 'Purchase'],\n * },\n * }, 'Meta Pixel Settings');\n */\nexport function createObjectSchema(\n properties: Record<string, PropertyDef>,\n title?: string,\n): JSONSchema {\n const required: string[] = [];\n const schemaProperties: Record<string, unknown> = {};\n\n for (const [key, def] of Object.entries(properties)) {\n if (def.required) {\n required.push(key);\n }\n\n const property: Record<string, unknown> = {\n type: def.type,\n };\n\n if (def.description) property.description = def.description;\n if (def.pattern) property.pattern = def.pattern;\n if (def.minLength !== undefined) property.minLength = def.minLength;\n if (def.maxLength !== undefined) property.maxLength = def.maxLength;\n if (def.minimum !== undefined) property.minimum = def.minimum;\n if (def.maximum !== undefined) property.maximum = def.maximum;\n if (def.enum) property.enum = [...def.enum];\n if (def.default !== undefined) property.default = def.default;\n\n // Nested object\n if (def.type === 'object' && def.properties) {\n const props: Record<string, unknown> = {};\n for (const [nestedKey, nestedDef] of Object.entries(def.properties)) {\n props[nestedKey] = createPropertySchema(nestedDef);\n }\n property.properties = props;\n }\n\n // Array\n if (def.type === 'array' && def.items) {\n property.items = createPropertySchema(def.items);\n }\n\n schemaProperties[key] = property;\n }\n\n const schema: JSONSchema = {\n type: 'object',\n properties: schemaProperties,\n };\n\n if (title) schema.title = title;\n if (required.length > 0) schema.required = required;\n\n return schema;\n}\n\n/**\n * Create property schema from definition\n * Helper for nested properties\n */\nfunction createPropertySchema(def: PropertyDef): Record<string, unknown> {\n const property: Record<string, unknown> = {\n type: def.type,\n };\n\n if (def.description) property.description = def.description;\n if (def.pattern) property.pattern = def.pattern;\n if (def.minLength !== undefined) property.minLength = def.minLength;\n if (def.maxLength !== undefined) property.maxLength = def.maxLength;\n if (def.minimum !== undefined) property.minimum = def.minimum;\n if (def.maximum !== undefined) property.maximum = def.maximum;\n if (def.enum) property.enum = [...def.enum];\n if (def.default !== undefined) property.default = def.default;\n\n // Nested object\n if (def.type === 'object' && def.properties) {\n const props: Record<string, unknown> = {};\n for (const [key, nestedDef] of Object.entries(def.properties)) {\n props[key] = createPropertySchema(nestedDef);\n }\n property.properties = props;\n }\n\n // Array\n if (def.type === 'array' && def.items) {\n property.items = createPropertySchema(def.items);\n }\n\n return property;\n}\n\n/**\n * Create array schema\n *\n * @param itemDef - Definition for array items\n * @param options - Optional array constraints\n * @returns JSON Schema\n *\n * @example\n * // Simple string array\n * const tagsSchema = createArraySchema({ type: 'string' });\n *\n * // Tuple (loop pattern) - exactly 2 items\n * const loopSchema = createArraySchema(\n * { type: 'object' },\n * { minItems: 2, maxItems: 2 }\n * );\n *\n * // Array with enum\n * const includeSchema = createArraySchema({\n * type: 'string',\n * enum: ['data', 'context', 'globals'],\n * });\n */\nexport function createArraySchema(\n itemDef: PropertyDef,\n options?: {\n minItems?: number;\n maxItems?: number;\n description?: string;\n title?: string;\n },\n): JSONSchema {\n const schema: JSONSchema = {\n type: 'array',\n items: createPropertySchema(itemDef),\n };\n\n if (options?.minItems !== undefined) schema.minItems = options.minItems;\n if (options?.maxItems !== undefined) schema.maxItems = options.maxItems;\n if (options?.description) schema.description = options.description;\n if (options?.title) schema.title = options.title;\n\n return schema;\n}\n\n/**\n * Create enum schema\n *\n * @param values - Allowed values\n * @param type - Value type ('string' or 'number')\n * @param options - Optional constraints\n * @returns JSON Schema\n *\n * @example\n * const eventTypeSchema = createEnumSchema(\n * ['PageView', 'Purchase', 'AddToCart'],\n * 'string',\n * { description: 'Meta Pixel standard event' }\n * );\n */\nexport function createEnumSchema(\n values: readonly string[] | readonly number[],\n type: 'string' | 'number' = 'string',\n options?: {\n description?: string;\n title?: string;\n },\n): JSONSchema {\n const schema: JSONSchema = {\n type,\n enum: [...values],\n };\n\n if (options?.description) schema.description = options.description;\n if (options?.title) schema.title = options.title;\n\n return schema;\n}\n\n/**\n * Create tuple schema (Loop pattern)\n *\n * Creates an array schema with exactly 2 items, which the Explorer\n * type detector recognizes as a \"loop\" pattern.\n *\n * @param firstItem - Definition for first element (source)\n * @param secondItem - Definition for second element (transform)\n * @param description - Optional description\n * @returns JSON Schema with minItems=2, maxItems=2\n *\n * @example\n * const loopSchema = createTupleSchema(\n * { type: 'string' },\n * { type: 'object' },\n * 'Loop: [source, transform]'\n * );\n */\nexport function createTupleSchema(\n firstItem: PropertyDef,\n secondItem: PropertyDef,\n description?: string,\n): JSONSchema {\n return createArraySchema(\n { type: 'object' }, // Generic, items can be different\n {\n minItems: 2,\n maxItems: 2,\n description:\n description || 'Tuple with exactly 2 elements [source, transform]',\n },\n );\n}\n","import { SourceSchemas, DestinationSchemas } from './schemas';\n\ntype PackageType = 'source' | 'destination' | 'transformer' | 'store';\n\ninterface PackageSchemas {\n settings?: Record<string, unknown>;\n [key: string]: unknown;\n}\n\n// Fields to exclude from merged config (runtime-only, not flow.json-relevant)\nconst RUNTIME_ONLY_FIELDS = new Set(['env', 'onError', 'onLog', 'primary']);\n\n// Base config schemas by type\nconst BASE_SCHEMAS: Partial<Record<PackageType, Record<string, unknown>>> = {\n source: SourceSchemas.configJsonSchema,\n destination: DestinationSchemas.configJsonSchema,\n};\n\nexport function mergeConfigSchema(\n type: PackageType,\n packageSchemas: PackageSchemas,\n): Record<string, unknown> {\n const rawBaseSchema = BASE_SCHEMAS[type];\n const baseSchema = resolveBaseSchema(rawBaseSchema);\n\n if (!baseSchema || !baseSchema.properties) {\n const result: Record<string, unknown> = {\n type: 'object',\n properties: {\n settings: packageSchemas.settings\n ? stripDollarSchema(packageSchemas.settings)\n : { description: 'Implementation-specific configuration' },\n },\n };\n return result;\n }\n\n const merged = JSON.parse(JSON.stringify(baseSchema)) as Record<\n string,\n unknown\n >;\n const props = merged.properties as Record<string, unknown>;\n\n for (const field of RUNTIME_ONLY_FIELDS) {\n delete props[field];\n }\n\n if (packageSchemas.settings) {\n props.settings = stripDollarSchema(packageSchemas.settings);\n }\n\n return merged;\n}\n\n/**\n * Resolve the effective base schema object. Zod 4 emits `.meta({id})`-decorated\n * root schemas as either:\n * - Draft-7 form: `{ allOf: [{ $ref: '#/definitions/X' }], definitions: {...} }`\n * - Draft-2020 form: `{ $ref: '#/$defs/X', $defs: {...} }`\n * Unwrap one level if needed so callers can mutate `properties` directly.\n */\nfunction resolveBaseSchema(\n baseSchema: Record<string, unknown> | undefined,\n): Record<string, unknown> | undefined {\n if (!baseSchema) return baseSchema;\n if (baseSchema.properties) return baseSchema;\n\n const { ref, container, containerKey } = extractRef(baseSchema);\n if (!ref || !container) return baseSchema;\n\n const match = ref.match(/^#\\/(\\$defs|definitions)\\/(.+)$/);\n if (!match) return baseSchema;\n\n const defKey = match[2];\n const resolved = container[defKey];\n if (!resolved || typeof resolved !== 'object') return baseSchema;\n\n // Merge the defs container back so nested refs still resolve\n return {\n ...(resolved as Record<string, unknown>),\n [containerKey]: container,\n };\n}\n\nfunction extractRef(schema: Record<string, unknown>): {\n ref: string | undefined;\n container: Record<string, unknown> | undefined;\n containerKey: string;\n} {\n const defs = schema.$defs as Record<string, unknown> | undefined;\n const definitions = schema.definitions as Record<string, unknown> | undefined;\n const container = defs ?? definitions;\n const containerKey = defs ? '$defs' : 'definitions';\n\n let ref: string | undefined;\n if (typeof schema.$ref === 'string') {\n ref = schema.$ref;\n } else if (Array.isArray(schema.allOf)) {\n const first = schema.allOf[0] as Record<string, unknown> | undefined;\n if (first && typeof first.$ref === 'string') ref = first.$ref;\n }\n\n return { ref, container, containerKey };\n}\n\nfunction stripDollarSchema(\n schema: Record<string, unknown>,\n): Record<string, unknown> {\n const { $schema, ...rest } = schema;\n return rest;\n}\n","import type { Flow } from '../types/flow';\n\ntype StepOut = Flow.StepOut;\ntype StepEffect = Flow.StepEffect;\n\n/**\n * Format a step example's `out` as readable code for docs/app rendering.\n *\n * - Empty `out` → `// no output`.\n * - `['return', value]` → `return <value>` (no parentheses).\n * - `[callable, ...args]` → `callable(<args>)`.\n * - Primitive args render as JSON (strings quoted, numbers/booleans/null bare).\n * - `undefined` renders as the literal token `undefined`.\n * - Objects/arrays render as `JSON.stringify(v, null, 2)`.\n * - Functions render as `[Function]` (rare in outs; safe fallback).\n *\n * Pure function. No runtime dependencies. Used by the website\n * `<StepExample>` renderer and the app `OutputPanel` for a single source of truth.\n */\nexport function formatOut(out: StepOut): string {\n if (out.length === 0) return '// no output';\n return out.map(formatEffect).join(';\\n\\n');\n}\n\nfunction formatEffect(effect: StepEffect): string {\n const [callable, ...args] = effect;\n const argStr = args.map(formatValue).join(', ');\n if (callable === 'return') return argStr ? `return ${argStr}` : 'return';\n return `${callable}(${argStr})`;\n}\n\nfunction formatValue(v: unknown): string {\n if (v === undefined) return 'undefined';\n if (v === null) return 'null';\n if (typeof v === 'function') return '[Function]';\n return JSON.stringify(v, null, 2);\n}\n"],"mappings":"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","names":["CodeSchema","ConfigSchema","SourceSchema","configJsonSchema","ValueSchema","ValuesSchema","RulesSchema","PolicySchema","ConsentSchema","ConfigSchema","ResultSchema","configJsonSchema","ConfigSchema","ResultSchema","configJsonSchema","ConfigSchema","DestinationsSchema","InstanceSchema","PushContextSchema","configJsonSchema","instanceJsonSchema","pushContextJsonSchema","ConfigSchema","PushContextSchema","DestinationsSchema","InstanceSchema","configJsonSchema","pushContextJsonSchema","instanceJsonSchema","ConfigSchema","InitSchema","InstanceSchema","PartialConfigSchema","configJsonSchema","instanceJsonSchema","partialConfigJsonSchema","ConfigSchema","PartialConfigSchema","InstanceSchema","InitSchema","configJsonSchema","partialConfigJsonSchema","instanceJsonSchema","ConfigSchema","PartialConfigSchema","configJsonSchema","partialConfigJsonSchema","ConfigSchema","PartialConfigSchema","configJsonSchema","partialConfigJsonSchema","ConfigSchema","PartialConfigSchema","configJsonSchema","partialConfigJsonSchema","ConfigSchema","PartialConfigSchema","configJsonSchema","partialConfigJsonSchema","ConfigSchema","SourceSchema","configJsonSchema","SourceSchema","ConfigSchema","configJsonSchema","import_zod","CodeSchema"]}
|