Skip to content

walkerOS v3.2.0

Choose a tag to compare

@github-actions github-actions released this 01 Apr 20:20
· 376 commits to main since this release
fb5dcd7

Changes

Add chainPath to ingest metadata and support path-specific mocks via --mock destination.ga4.before.redact='...'

Unify duplicated CLI patterns for reliability and consistency

  • Add unified event validator with graduated levels (strict/standard/minimal)
  • Fix package resolution in simulate to respect packages.path from flow config
  • Extract shared readStdinToTempFile utility, remove copy-paste dynamic imports
  • Standardize duration output to milliseconds (matching MCP schema contract)
  • Fix temp file cleanup in run command (hot-swap accumulation, shutdown handler)
  • Fix simulator bare /tmp cleanup bug
  • Unify URL fetching into shared fetchContentString, eliminate temp file
    roundtrip
  • Refactor loadJsonFromSource as thin wrapper around loadJsonConfig
  • Remove unused downloadFromUrl function

Replace externalServer hack with typed sourceSettings override in bundle wrapper

Flow graph architecture: symmetric before/next hooks, mutable Ingest, per-destination isolation.

  • Add symmetric before/next to all step types (sources, transformers, destinations)
  • Add Ingest interface with mutable _meta tracking (hops, path)
  • Parameterize Transformer.Fn<T, E> and Result<E> on event type
  • Support Result[] return from transformers for fan-out
  • Remove Object.freeze(ingest) — ingest is fully mutable
  • Upgrade setIngest to create typed Ingest with _meta
  • Clone ingest per destination to prevent cross-contamination
  • Add createMockContext test utility for context construction

Generalize queue flush: refresh user/globals/consent on queued events and flush
after any state mutation command

Wire initConfig.hooks into collector instance. Simulation uses
prePush/postDestinationPush hooks for event capture. Hooks are wired by
startFlow before events fire.

Polyfill fetch and navigator.sendBeacon in JSDOM during web simulation to prevent throws and capture network calls

Resolve transitive dependencies from local path packages automatically

Improve flow_simulate tool description, warnings, and prompts to explain require, consent, mapping, and policy behavior. Agents using the MCP now get actionable guidance when destinations are pending or events are silently skipped.

Add conditional routing and native cache as built-in config properties on
sources, transformers, and destinations.
Routing: NextRule[] in next/before properties enables conditional step
chaining, replacing @walkeros/transformer-router.
Cache:

  • Cache rules use the same match syntax as routing (MatchExpression)
  • Source cache: full pipeline caching with respond interception
  • Transformer cache: step-level memoization, chain continues
  • Destination cache: event deduplication
  • Update rules modify cached results on read via getMappingValue
  • Default per-collector memory store with namespaced keys
    compileMatcher upgraded to use getByPath for scoped dot-paths (ingest.method,
    event.name). Removed @walkeros/server-transformer-cache (replaced by native
    cache).

Support path-based package: references on flow config components

Add include/exclude destination filter to collector.push PushOptions.
Sources can now control which destinations receive their events.
Destination simulation uses the full collector pipeline with include filter,
giving production-identical event enrichment, consent, and mapping.

Transformer respond wrappers now propagate through the pipeline

Accept non-JSON POST bodies in all server sources
Server sources no longer reject non-JSON bodies with HTTP 400. Instead, they push an empty event {} to the collector, enabling source.before transformers to process raw input via ingest. Raw body is available through ingest mapping (e.g., "rawBody": "body").

Support single .ts files and directories without package.json as local packages in flow.json

Add --snapshot flag to push command for setting up global state before bundle execution

Add useHooks wrapping to store get/set/delete operations

Refactor bundler to two-step compilation: ESM code compilation + platform
wrapper. Config changes no longer require full rebuilds. Production bundles
carry zero dev/simulate code.

Unify simulation for sources, destinations, and transformers through the push
command.

  • All step types simulate via push with auto-env loading and call tracking
  • Add --simulate transformer.X to invoke a transformer directly with an event
  • Before chains run as mandatory preparation; next chains are skipped
  • Source simulation captures at the collector.push boundary, preserving the
    full before chain
  • Hooks (prePush/postDestinationPush) capture events instead of manual overrides
  • Timer interception flushes setTimeout/setInterval deterministically for
    async patterns (debounced batches, detached Promise chains)
  • MCP migrated to the push-based simulation pipeline
  • Legacy simulate code removed

Published Packages