{"version":3,"sources":["../src/schemas/index.ts","../src/schemas/settings.ts","../src/examples/index.ts","../src/examples/step.ts","../src/hints.ts","../src/validate.ts","../src/event-format.schema.ts"],"sourcesContent":["import { zodToSchema } from '@walkeros/core/dev';\nimport { SettingsSchema } from './settings';\n\nexport { SettingsSchema, type Settings } from './settings';\nexport const settings = zodToSchema(SettingsSchema);\n","import { z } from '@walkeros/core/dev';\n\nexport const SettingsSchema = z\n  .object({\n    contract: z\n      .array(z.record(z.string(), z.unknown()))\n      .optional()\n      .describe(\n        'Validation constraints. Each entry is a resolved $contract.* rule (with entity-action `events` schemas and/or a full-event `schema`) or an inline whole-event JSON Schema. All entries are AND-ed; every error is aggregated.',\n      ),\n    format: z\n      .boolean()\n      .optional()\n      .describe(\n        'When true, also validate the canonical WalkerOS.Event structural shape (correct field types, no unknown fields). All fields are optional, so this checks structure and types, not presence.',\n      ),\n    mode: z\n      .enum(['strict', 'pass'])\n      .optional()\n      .describe(\n        '`strict` drops invalid events (chain-stop) after recording errors; `pass` annotates and continues. Default `pass`.',\n      ),\n    output: z\n      .object({\n        isValid: z\n          .string()\n          .optional()\n          .describe(\n            'Event dot-path for the boolean verdict. Default `source.valid`. Empty string = skip.',\n          ),\n        errors: z\n          .string()\n          .optional()\n          .describe(\n            'Ingest dot-path for the issue list. Default `validation`. Empty string = skip.',\n          ),\n      })\n      .optional()\n      .describe(\n        'Where the verdict (on the event) and the issue list (on the ingest) are written.',\n      ),\n  })\n  .describe(\n    'Validate transformer: checks events against JSON Schema contracts and annotates a verdict on the event plus issues on the ingest.',\n  );\n\nexport type Settings = z.infer<typeof SettingsSchema>;\n","export * as step from './step';\n","import type { Flow } from '@walkeros/core';\n\n/**\n * strict + valid: passes the contract, gets annotated source.valid:true and\n * continues down the chain.\n */\nexport const strictValidPageView: Flow.StepExample = {\n  title: 'Strict validate against a contract (valid)',\n  description:\n    'A \"page view\" with the required data.title passes the inline contract. The verdict source.valid:true is written to the event; the chain continues.',\n  in: {\n    name: 'page view',\n    entity: 'page',\n    action: 'view',\n    data: { title: 'Home' },\n  },\n  out: [\n    [\n      'return',\n      {\n        event: {\n          name: 'page view',\n          entity: 'page',\n          action: 'view',\n          data: { title: 'Home' },\n          source: { valid: true },\n        },\n      },\n    ],\n  ],\n};\n\n/**\n * strict + invalid: the same contract, but data.title is missing. In strict\n * mode the transformer stops the chain (drops). Errors are still written to the\n * ingest for observers; the drop itself is encoded as `['return', false]`.\n */\nexport const strictInvalidPageView: Flow.StepExample = {\n  public: false,\n  title: 'Strict validate against a contract (invalid, dropped)',\n  description:\n    'A \"page view\" missing the required data.title fails the contract. In strict mode the chain stops (event dropped). Validation errors are still written to the ingest for observers.',\n  in: {\n    name: 'page view',\n    entity: 'page',\n    action: 'view',\n    data: {},\n  },\n  out: [['return', false]],\n};\n\n/**\n * pass + invalid: same failure, but mode:'pass' annotates source.valid:false and\n * continues. Downstream destinations route on event.source.valid. The error list\n * is written to the ingest (default path \"validation\"), not asserted here.\n */\nexport const passAnnotateInvalid: Flow.StepExample = {\n  public: false,\n  title: 'Pass mode annotates an invalid event',\n  description:\n    'In mode:\"pass\" an invalid event is not dropped: source.valid:false is written to the event so downstream destinations can route on it, and the error list is written to the ingest path \"validation\".',\n  in: {\n    name: 'page view',\n    entity: 'page',\n    action: 'view',\n    data: {},\n  },\n  out: [\n    [\n      'return',\n      {\n        event: {\n          name: 'page view',\n          entity: 'page',\n          action: 'view',\n          data: {},\n          source: { valid: false },\n        },\n      },\n    ],\n  ],\n};\n\n/**\n * gtm filter via a contract pattern: the contract rejects names matching\n * ^gtm\\\\. There is no `ignore` field; filtering is a contract that fails. In\n * strict mode a \"gtm.js\" event is dropped.\n */\nexport const gtmFilterDropped: Flow.StepExample = {\n  public: false,\n  title: 'Filter gtm.* via a contract pattern (dropped)',\n  description:\n    'A contract whose name must NOT match ^gtm\\\\. rejects \"gtm.js\". In strict mode the event is dropped. This is how you filter without an \"ignore\" field.',\n  in: { name: 'gtm.js' },\n  out: [['return', false]],\n};\n\n/** Same gtm-filter contract, but a real \"page view\" passes the pattern. */\nexport const gtmFilterPasses: Flow.StepExample = {\n  title: 'Filter gtm.* via a contract pattern (real event passes)',\n  description:\n    'The same ^gtm\\\\. rejection contract leaves a real \"page view\" untouched: it passes and is annotated source.valid:true.',\n  in: { name: 'page view', entity: 'page', action: 'view' },\n  out: [\n    [\n      'return',\n      {\n        event: {\n          name: 'page view',\n          entity: 'page',\n          action: 'view',\n          source: { valid: true },\n        },\n      },\n    ],\n  ],\n};\n","import type { Hint } from '@walkeros/core';\n\nexport const hints: Hint.Hints = {\n  'contract-resolution': {\n    text: 'A $contract.* reference is resolved to a concrete JSON Schema at bundle time. The runtime transformer never sees a string: by the time push runs, settings.contract holds resolved ContractRule objects (entity-action event schemas and/or a full-event schema) or inline schemas. If you author a flow with $contract.web, the bundler inlines the matching schema before deploy.',\n    code: [\n      {\n        lang: 'json',\n        code: JSON.stringify(\n          {\n            transformers: {\n              validate: {\n                package: '@walkeros/transformer-validate',\n                config: {\n                  settings: {\n                    contract: ['$contract.web'],\n                    mode: 'strict',\n                  },\n                },\n              },\n            },\n          },\n          null,\n          2,\n        ),\n      },\n    ],\n  },\n  'mode-strict-vs-pass': {\n    text: 'mode:\"strict\" drops invalid events by stopping the transformer chain (push returns false), so they never reach downstream destinations. mode:\"pass\" (the default) never drops: it annotates the event with the verdict and continues, and you route downstream on event.source.valid. Use strict to enforce a contract as a hard gate; use pass to observe quality without losing data.',\n    code: [\n      {\n        lang: 'json',\n        code: JSON.stringify(\n          {\n            transformers: {\n              validate: {\n                package: '@walkeros/transformer-validate',\n                config: {\n                  settings: { contract: ['$contract.web'], mode: 'pass' },\n                },\n              },\n            },\n          },\n          null,\n          2,\n        ),\n      },\n    ],\n  },\n  'output-split': {\n    text: 'The verdict and the error list are written to two different places by design. The boolean verdict goes to the EVENT (default path source.valid): it is analytics-grade data that travels with the event to destinations, and source.valid stays type-clean under WalkerOS.Source. The error list goes to the INGEST (default path validation): it is observer-visible pipeline diagnostics, never analytics data, written in place so it survives even a strict-mode drop. Override either path via output.isValid / output.errors; set either to an empty string to skip that write.',\n    code: [\n      {\n        lang: 'json',\n        code: JSON.stringify(\n          {\n            transformers: {\n              validate: {\n                package: '@walkeros/transformer-validate',\n                config: {\n                  settings: {\n                    contract: ['$contract.web'],\n                    output: { isValid: 'source.valid', errors: 'validation' },\n                  },\n                },\n              },\n            },\n          },\n          null,\n          2,\n        ),\n      },\n    ],\n  },\n  'format-vs-contract': {\n    text: 'format:true is a built-in structural check, not an authored schema. It validates the canonical WalkerOS.Event shape (correct field types, no unknown fields). All fields are optional, so it checks structure and types, not presence: a wrong-typed field or malformed structure fails, a missing field does not. It is independent of contract: turn it on to catch malformed events even when you have no contract, or alongside a contract to AND both checks. A contract is the place for your domain rules; format is the place for \"is this even a well-formed event\".',\n    code: [\n      {\n        lang: 'json',\n        code: JSON.stringify(\n          {\n            transformers: {\n              validate: {\n                package: '@walkeros/transformer-validate',\n                config: { settings: { format: true, mode: 'pass' } },\n              },\n            },\n          },\n          null,\n          2,\n        ),\n      },\n    ],\n  },\n  'gtm-filtering': {\n    text: 'There is no ignore field. To filter unwanted events (for example GTM lifecycle pings like gtm.js / gtm.dom), author a contract that REJECTS them and run mode:\"strict\". A schema where name must NOT match ^gtm\\\\. fails those events, and strict mode drops them while real events pass. This keeps filtering declarative and contract-driven rather than a separate ad-hoc list.',\n    code: [\n      {\n        lang: 'json',\n        code: JSON.stringify(\n          {\n            type: 'object',\n            properties: { name: { not: { pattern: '^gtm\\\\.' } } },\n          },\n          null,\n          2,\n        ),\n      },\n    ],\n  },\n  'known-limitations': {\n    text: 'The errors list may contain an extra parent entry pointing at a properties wrapper per failure, a quirk of the underlying JSON Schema engine output. The isValid verdict is unaffected: a single real failure can surface as more than one error entry, but isValid is still false exactly when there is at least one failure. v1 emits level:\"error\" only (no warn level yet).',\n  },\n};\n","import type { Flow, Ingest, ValidateEvents, WalkerOS } from '@walkeros/core';\nimport * as cfworker from '@cfworker/json-schema';\nimport type { ContractSource, ValidationIssue } from './types';\nimport { eventFormatSchema } from './event-format.schema';\n\n/**\n * Module-level Validator cache keyed by the compact JSON of the schema.\n *\n * A plain Map (not WeakMap): schemas are re-cloned per flow load, so identical\n * structures arrive as distinct object references. Keying on serialized content\n * lets repeated pushes within and across loads share one compiled interpreter.\n */\nconst validatorCache = new Map<string, cfworker.Validator>();\n\nexport function getValidator(\n  schema: Record<string, unknown>,\n): cfworker.Validator {\n  const key = JSON.stringify(schema);\n  const cached = validatorCache.get(key);\n  if (cached) return cached;\n  // cfworker dereferences $ref by annotating each subschema in place\n  // (e.g. __absolute_uri__). Parse a fresh mutable copy from the cache key so a\n  // frozen input (the generated eventFormatSchema) stays untouched.\n  const mutable = JSON.parse(key) as Record<string, unknown>;\n  // Pin draft 2020-12 (the contract authoring draft).\n  const validator = new cfworker.Validator(mutable, '2020-12');\n  validatorCache.set(key, validator);\n  return validator;\n}\n\nfunction isContractRule(source: ContractSource): source is Flow.ContractRule {\n  if (typeof source !== 'object' || source === null) return false;\n  const hasEvents =\n    'events' in source &&\n    typeof source.events === 'object' &&\n    source.events !== null;\n  return hasEvents || 'schema' in source;\n}\n\n/**\n * Selects the entity-action schema with the documented wildcard fallback:\n * entity.action → entity.* → *.action → *.*.\n */\nfunction selectEventSchema(\n  events: ValidateEvents,\n  entity: string,\n  action: string,\n): Record<string, unknown> | undefined {\n  return (\n    events[entity]?.[action] ??\n    events[entity]?.['*'] ??\n    events['*']?.[action] ??\n    events['*']?.['*']\n  );\n}\n\n/** Collects every JSON Schema that applies to this event. */\nfunction collectSchemas(\n  event: WalkerOS.DeepPartialEvent,\n  opts: { contracts?: ContractSource[]; format?: boolean },\n): Record<string, unknown>[] {\n  const schemas: Record<string, unknown>[] = [];\n\n  if (opts.format) schemas.push(eventFormatSchema);\n\n  for (const source of opts.contracts ?? []) {\n    if (isContractRule(source)) {\n      const entity = typeof event.entity === 'string' ? event.entity : '';\n      const action = typeof event.action === 'string' ? event.action : '';\n      const selected = selectEventSchema(source.events ?? {}, entity, action);\n      if (selected) schemas.push(selected);\n      if (source.schema) schemas.push(source.schema);\n    } else {\n      // Inline whole-event JSON Schema.\n      schemas.push(source);\n    }\n  }\n\n  return schemas;\n}\n\n/**\n * The validation verdict authority. Runs the event through every applicable\n * JSON Schema (AND semantics) and aggregates all @cfworker errors.\n *\n * No matching constraint (empty schema set) means no opinion: isValid is true.\n */\nexport function validateEventAgainstContract(\n  event: WalkerOS.DeepPartialEvent,\n  _ingest: Ingest | undefined,\n  opts: { contracts?: ContractSource[]; format?: boolean },\n): { isValid: boolean; errors: ValidationIssue[] } {\n  const schemas = collectSchemas(event, opts);\n\n  const errors: ValidationIssue[] = [];\n  for (const schema of schemas) {\n    const result = getValidator(schema).validate(event);\n    if (!result.valid) {\n      for (const unit of result.errors) {\n        errors.push({\n          path: unit.instanceLocation,\n          message: unit.error,\n          level: 'error',\n        });\n      }\n    }\n  }\n\n  return { isValid: errors.length === 0, errors };\n}\n","// GENERATED by scripts/generate-format-schema.mjs: DO NOT EDIT.\n// Source: @walkeros/core partialEventJsonSchema (canonical zod EventSchema).\n// `format: true` validates that the value is a valid WalkerOS.PartialEvent:\n// the canonical event structure with all fields optional, so it checks shape\n// and field types, not presence. Required-field enforcement is the contract\n// arm's job (events/schema with required).\n// Regenerate: npm run generate:format-schema\n\nexport const eventFormatSchema = Object.freeze({\n  $schema: 'http://json-schema.org/draft-07/schema#',\n  description: 'Partial event structure with all fields optional',\n  allOf: [\n    {\n      $ref: '#/definitions/WalkerOSPartialEvent',\n    },\n  ],\n  definitions: {\n    WalkerOSProperty: {\n      title: 'WalkerOS.Property',\n      description:\n        'PropertyType or an array of PropertyType. Recursive structure for nested objects and arrays.',\n      anyOf: [\n        {\n          $ref: '#/definitions/WalkerOSPropertyType',\n        },\n        {\n          type: 'array',\n          items: {\n            $ref: '#/definitions/WalkerOSPropertyType',\n          },\n        },\n      ],\n    },\n    WalkerOSPropertyType: {\n      title: 'WalkerOS.PropertyType',\n      description:\n        'Base property value types (boolean, string, number, or nested Property record).',\n      anyOf: [\n        {\n          type: 'boolean',\n        },\n        {\n          type: 'string',\n        },\n        {\n          type: 'number',\n        },\n        {\n          type: 'object',\n          propertyNames: {\n            type: 'string',\n          },\n          additionalProperties: {\n            $ref: '#/definitions/WalkerOSProperty',\n          },\n        },\n      ],\n    },\n    WalkerOSProperties: {\n      type: 'object',\n      propertyNames: {\n        type: 'string',\n      },\n      additionalProperties: {\n        allOf: [\n          {\n            $ref: '#/definitions/WalkerOSProperty',\n          },\n        ],\n      },\n      title: 'WalkerOS.Properties',\n      description: 'Flexible property collection with optional values.',\n    },\n    WalkerOSOrderedProperties: {\n      type: 'object',\n      propertyNames: {\n        type: 'string',\n      },\n      additionalProperties: {\n        type: 'array',\n        items: [\n          {\n            $ref: '#/definitions/WalkerOSProperty',\n          },\n          {\n            type: 'number',\n          },\n        ],\n      },\n      title: 'WalkerOS.OrderedProperties',\n      description:\n        'Ordered properties with [value, order] tuples for priority control.',\n    },\n    WalkerOSUser: {\n      allOf: [\n        {\n          description: 'Flexible property collection with optional values',\n          allOf: [\n            {\n              $ref: '#/definitions/WalkerOSProperties',\n            },\n          ],\n        },\n        {\n          type: 'object',\n          properties: {\n            id: {\n              description: 'User identifier',\n              type: 'string',\n            },\n            device: {\n              description: 'Device identifier',\n              type: 'string',\n            },\n            session: {\n              description: 'Session identifier',\n              type: 'string',\n            },\n            hash: {\n              description: 'Hashed identifier',\n              type: 'string',\n            },\n            address: {\n              description: 'User address',\n              type: 'string',\n            },\n            email: {\n              description: 'User email address',\n              type: 'string',\n              format: 'email',\n              pattern:\n                \"^(?!\\\\.)(?!.*\\\\.\\\\.)([A-Za-z0-9_'+\\\\-\\\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\\\-]*\\\\.)+[A-Za-z]{2,}$\",\n            },\n            phone: {\n              description: 'User phone number',\n              type: 'string',\n            },\n            userAgent: {\n              description: 'Browser user agent string',\n              type: 'string',\n            },\n            browser: {\n              description: 'Browser name',\n              type: 'string',\n            },\n            browserVersion: {\n              description: 'Browser version',\n              type: 'string',\n            },\n            deviceType: {\n              description: 'Device type (mobile, desktop, tablet)',\n              type: 'string',\n            },\n            os: {\n              description: 'Operating system',\n              type: 'string',\n            },\n            osVersion: {\n              description: 'Operating system version',\n              type: 'string',\n            },\n            screenSize: {\n              description: 'Screen dimensions',\n              type: 'string',\n            },\n            language: {\n              description: 'User language',\n              type: 'string',\n            },\n            country: {\n              description: 'User country',\n              type: 'string',\n            },\n            region: {\n              description: 'User region/state',\n              type: 'string',\n            },\n            city: {\n              description: 'User city',\n              type: 'string',\n            },\n            zip: {\n              description: 'User postal code',\n              type: 'string',\n            },\n            timezone: {\n              description: 'User timezone',\n              type: 'string',\n            },\n            ip: {\n              description: 'User IP address',\n              type: 'string',\n            },\n            internal: {\n              description: 'Internal user flag (employee, test user)',\n              type: 'boolean',\n            },\n          },\n          additionalProperties: false,\n        },\n      ],\n      title: 'WalkerOS.User',\n      description: 'User identification and attributes.',\n    },\n    __schema0: {\n      description: 'Nested entity structure with recursive nesting support',\n      $ref: '#/definitions/WalkerOSEntity',\n    },\n    WalkerOSEntity: {\n      title: 'WalkerOS.Entity',\n      description: 'Nested entity structure with recursive nesting support.',\n      type: 'object',\n      properties: {\n        entity: {\n          type: 'string',\n          description: 'Entity name',\n        },\n        data: {\n          type: 'object',\n          propertyNames: {\n            type: 'string',\n          },\n          additionalProperties: {\n            allOf: [\n              {\n                $ref: '#/definitions/WalkerOSProperty',\n              },\n            ],\n          },\n          title: 'WalkerOS.Properties',\n          description: 'Entity-specific properties',\n          allOf: [\n            {\n              $ref: '#/definitions/WalkerOSProperties',\n            },\n          ],\n        },\n        nested: {\n          description: 'Nested child entities',\n          type: 'array',\n          items: {\n            $ref: '#/definitions/__schema0',\n          },\n        },\n        context: {\n          description: 'Entity context data',\n          allOf: [\n            {\n              $ref: '#/definitions/WalkerOSOrderedProperties',\n            },\n          ],\n        },\n      },\n      required: ['entity', 'data'],\n      additionalProperties: false,\n    },\n    WalkerOSEntities: {\n      type: 'array',\n      items: {\n        $ref: '#/definitions/__schema0',\n      },\n      title: 'WalkerOS.Entities',\n      description: 'Array of nested entities.',\n    },\n    WalkerOSConsent: {\n      type: 'object',\n      propertyNames: {\n        type: 'string',\n      },\n      additionalProperties: {\n        type: 'boolean',\n      },\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    WalkerOSSource: {\n      allOf: [\n        {\n          description: 'Flexible property collection with optional values',\n          allOf: [\n            {\n              $ref: '#/definitions/WalkerOSProperties',\n            },\n          ],\n        },\n        {\n          type: 'object',\n          properties: {\n            type: {\n              type: 'string',\n              description: 'Source kind (browser, dataLayer, gtag, ...)',\n            },\n            platform: {\n              description:\n                'Runtime platform (web, server, app, ios, android, terminal, ...)',\n              type: 'string',\n            },\n            version: {\n              description: 'Deployment version of the source emitter',\n              type: 'string',\n            },\n            schema: {\n              description:\n                'Event model spec version (collector defaults to \"4\")',\n              type: 'string',\n            },\n            count: {\n              description: 'Emission sequence per run',\n              type: 'integer',\n              minimum: 0,\n              maximum: 9007199254740991,\n            },\n            trace: {\n              description:\n                'Trace id shared by every event of a run (W3C trace-id shape)',\n              type: 'string',\n            },\n            release: {\n              description:\n                'Per-flow config release map, keyed by flow name; accumulates across walkerOS crossings',\n              type: 'object',\n              propertyNames: {\n                type: 'string',\n              },\n              additionalProperties: {\n                type: 'string',\n              },\n            },\n            url: {\n              type: 'string',\n            },\n            referrer: {\n              type: 'string',\n            },\n            tool: {\n              type: 'string',\n            },\n            command: {\n              type: 'string',\n            },\n          },\n          required: ['type'],\n          additionalProperties: false,\n        },\n      ],\n      title: 'WalkerOS.Source',\n      description: 'Event source information (origin of the event).',\n    },\n    WalkerOSPartialEvent: {\n      type: 'object',\n      properties: {\n        name: {\n          type: 'string',\n          description:\n            'Event name in \"entity action\" format (e.g., \"page view\", \"product add\")',\n        },\n        data: {\n          type: 'object',\n          propertyNames: {\n            type: 'string',\n          },\n          additionalProperties: {\n            allOf: [\n              {\n                $ref: '#/definitions/WalkerOSProperty',\n              },\n            ],\n          },\n          title: 'WalkerOS.Properties',\n          description: 'Event-specific properties',\n          allOf: [\n            {\n              $ref: '#/definitions/WalkerOSProperties',\n            },\n          ],\n        },\n        context: {\n          type: 'object',\n          propertyNames: {\n            type: 'string',\n          },\n          additionalProperties: {\n            type: 'array',\n            items: [\n              {\n                $ref: '#/definitions/WalkerOSProperty',\n              },\n              {\n                type: 'number',\n              },\n            ],\n          },\n          title: 'WalkerOS.OrderedProperties',\n          description: 'Ordered context properties with priorities',\n          allOf: [\n            {\n              $ref: '#/definitions/WalkerOSOrderedProperties',\n            },\n          ],\n        },\n        globals: {\n          type: 'object',\n          propertyNames: {\n            type: 'string',\n          },\n          additionalProperties: {\n            allOf: [\n              {\n                $ref: '#/definitions/WalkerOSProperty',\n              },\n            ],\n          },\n          title: 'WalkerOS.Properties',\n          description: 'Global properties shared across events',\n          allOf: [\n            {\n              $ref: '#/definitions/WalkerOSProperties',\n            },\n          ],\n        },\n        custom: {\n          type: 'object',\n          propertyNames: {\n            type: 'string',\n          },\n          additionalProperties: {\n            allOf: [\n              {\n                $ref: '#/definitions/WalkerOSProperty',\n              },\n            ],\n          },\n          title: 'WalkerOS.Properties',\n          description: 'Custom implementation-specific properties',\n          allOf: [\n            {\n              $ref: '#/definitions/WalkerOSProperties',\n            },\n          ],\n        },\n        user: {\n          allOf: [\n            {\n              description: 'Flexible property collection with optional values',\n              allOf: [\n                {\n                  $ref: '#/definitions/WalkerOSProperties',\n                },\n              ],\n            },\n            {\n              type: 'object',\n              properties: {\n                id: {\n                  description: 'User identifier',\n                  type: 'string',\n                },\n                device: {\n                  description: 'Device identifier',\n                  type: 'string',\n                },\n                session: {\n                  description: 'Session identifier',\n                  type: 'string',\n                },\n                hash: {\n                  description: 'Hashed identifier',\n                  type: 'string',\n                },\n                address: {\n                  description: 'User address',\n                  type: 'string',\n                },\n                email: {\n                  description: 'User email address',\n                  type: 'string',\n                  format: 'email',\n                  pattern:\n                    \"^(?!\\\\.)(?!.*\\\\.\\\\.)([A-Za-z0-9_'+\\\\-\\\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\\\-]*\\\\.)+[A-Za-z]{2,}$\",\n                },\n                phone: {\n                  description: 'User phone number',\n                  type: 'string',\n                },\n                userAgent: {\n                  description: 'Browser user agent string',\n                  type: 'string',\n                },\n                browser: {\n                  description: 'Browser name',\n                  type: 'string',\n                },\n                browserVersion: {\n                  description: 'Browser version',\n                  type: 'string',\n                },\n                deviceType: {\n                  description: 'Device type (mobile, desktop, tablet)',\n                  type: 'string',\n                },\n                os: {\n                  description: 'Operating system',\n                  type: 'string',\n                },\n                osVersion: {\n                  description: 'Operating system version',\n                  type: 'string',\n                },\n                screenSize: {\n                  description: 'Screen dimensions',\n                  type: 'string',\n                },\n                language: {\n                  description: 'User language',\n                  type: 'string',\n                },\n                country: {\n                  description: 'User country',\n                  type: 'string',\n                },\n                region: {\n                  description: 'User region/state',\n                  type: 'string',\n                },\n                city: {\n                  description: 'User city',\n                  type: 'string',\n                },\n                zip: {\n                  description: 'User postal code',\n                  type: 'string',\n                },\n                timezone: {\n                  description: 'User timezone',\n                  type: 'string',\n                },\n                ip: {\n                  description: 'User IP address',\n                  type: 'string',\n                },\n                internal: {\n                  description: 'Internal user flag (employee, test user)',\n                  type: 'boolean',\n                },\n              },\n              additionalProperties: false,\n            },\n          ],\n          title: 'WalkerOS.User',\n          description: 'User identification and attributes',\n        },\n        nested: {\n          type: 'array',\n          items: {\n            $ref: '#/definitions/__schema0',\n          },\n          title: 'WalkerOS.Entities',\n          description: 'Related nested entities',\n          allOf: [\n            {\n              $ref: '#/definitions/WalkerOSEntities',\n            },\n          ],\n        },\n        consent: {\n          type: 'object',\n          propertyNames: {\n            type: 'string',\n          },\n          additionalProperties: {\n            type: 'boolean',\n          },\n          title: 'WalkerOS.Consent',\n          description: 'Consent states at event time',\n          allOf: [\n            {\n              $ref: '#/definitions/WalkerOSConsent',\n            },\n          ],\n        },\n        id: {\n          type: 'string',\n          minLength: 1,\n          description: 'W3C span_id, 16 lowercase hex characters',\n        },\n        trigger: {\n          type: 'string',\n          description: 'Event trigger identifier',\n        },\n        entity: {\n          type: 'string',\n          description: 'Parsed entity from event name',\n        },\n        action: {\n          type: 'string',\n          description: 'Parsed action from event name',\n        },\n        timestamp: {\n          type: 'integer',\n          exclusiveMinimum: 0,\n          maximum: 9007199254740991,\n          description: 'Unix timestamp in milliseconds since epoch',\n        },\n        timing: {\n          type: 'number',\n          description: 'Event processing timing information',\n        },\n        source: {\n          allOf: [\n            {\n              description: 'Flexible property collection with optional values',\n              allOf: [\n                {\n                  $ref: '#/definitions/WalkerOSProperties',\n                },\n              ],\n            },\n            {\n              type: 'object',\n              properties: {\n                type: {\n                  type: 'string',\n                  description: 'Source kind (browser, dataLayer, gtag, ...)',\n                },\n                platform: {\n                  description:\n                    'Runtime platform (web, server, app, ios, android, terminal, ...)',\n                  type: 'string',\n                },\n                version: {\n                  description: 'Deployment version of the source emitter',\n                  type: 'string',\n                },\n                schema: {\n                  description:\n                    'Event model spec version (collector defaults to \"4\")',\n                  type: 'string',\n                },\n                count: {\n                  description: 'Emission sequence per run',\n                  type: 'integer',\n                  minimum: 0,\n                  maximum: 9007199254740991,\n                },\n                trace: {\n                  description:\n                    'Trace id shared by every event of a run (W3C trace-id shape)',\n                  type: 'string',\n                },\n                release: {\n                  description:\n                    'Per-flow config release map, keyed by flow name; accumulates across walkerOS crossings',\n                  type: 'object',\n                  propertyNames: {\n                    type: 'string',\n                  },\n                  additionalProperties: {\n                    type: 'string',\n                  },\n                },\n                url: {\n                  type: 'string',\n                },\n                referrer: {\n                  type: 'string',\n                },\n                tool: {\n                  type: 'string',\n                },\n                command: {\n                  type: 'string',\n                },\n              },\n              required: ['type'],\n              additionalProperties: false,\n            },\n          ],\n          title: 'WalkerOS.Source',\n          description: 'Event source information',\n        },\n      },\n      additionalProperties: false,\n      title: 'WalkerOS.PartialEvent',\n      description: 'Partial event structure with all fields optional.',\n    },\n  },\n} as const);\n"],"mappings":"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","names":[]}