walkerOS v3.0.0
Changes
Fix deterministic package version resolution in bundler.
- Two-phase resolve-then-install prevents version overwrites
- peerDependencies resolved at lowest priority (not equal to deps)
- Per-build temp directories prevent cross-build interference
- Optional peerDeps (peerDependenciesMeta) correctly skipped
- Prerelease versions handled with includePrerelease flag
- Package names validated against npm naming rules
Accept optional Store via env for swappable cache backends. Default to
@walkeros/store-memory. Remove inline store implementation.
Add cache transformer for server flows. Caches HTTP responses with LRU eviction,
per-rule TTL, and respond-wrapping pattern (MISS caches + forwards, HIT serves
directly and stops chain).
Fix: consent: {} on destination config now auto-grants instead of blocking all
events forever
Add $contract IntelliSense completions and contract-aware mapping value
completions
Add v2 structured contract format with globals, context, custom, user, and
consent sections.
Contracts can now describe cross-event properties (globals, consent, etc.)
alongside entity-action event schemas. Top-level sections are JSON Schemas that
merge additively into per-event validation.
Breaking: None. Legacy flat contracts continue working unchanged. v2 is opt-in
via version: 2 field.
Generated Dockerfiles now include COPY lines for include folders, enabling fs
store support in Docker containers.
Export enrichFlowConfigSchema, getVariablesSchema, and getEnrichedContractSchema
utilities for Monaco JSON schema enrichment in external apps.
Extract match logic (compileMatcher, MatchExpression, MatchCondition,
MatchOperator, CompiledMatcher) from router to core as shared utility. Router
now imports from core — no public API changes.
Fix double-queuing of denied events when all events lack consent
Fix getByPath breaking on falsy intermediate values (0, false, "")
BREAKING: Flow configs now require "version": 3. Versions 1 and 2 are no
longer accepted. To migrate, change "version": 1 or "version": 2 to
"version": 3 in your walkeros.config.json.
Rename Flow.Setup to Flow.Config and Flow.Config to Flow.Settings for consistent
Config/Settings naming convention at every level. Breaking change: all type
names, function names, schema names, and API URL paths (/configs → /settings)
updated.
Fix $var/$def/$env resolution in transformer configs and env fields
Previously, resolvePatterns was not called on transformer configs or any
component's env field. This meant $var.name, $def.name, and $env.NAME
references in those positions were passed through as literal strings. Now all
component types (sources, destinations, transformers, stores) have both config
and env resolved consistently.
Add hints field to walkerOS.json for lightweight AI-consumable package context.
Packages can now export a hints record from src/dev.ts containing short
actionable tips with optional code snippets. Hints are serialized into
walkerOS.json by buildDev() and surfaced via the MCP package_get tool.
Pilot: BigQuery destination includes hints for authentication, table setup, and
querying.
Redesign MCP flow server into unified orchestrator
- Rename tools to flow_* prefix (flow_validate, flow_bundle, flow_simulate,
flow_push, flow_examples) - Replace flow_init with flow_load (load existing or create new flows)
- Convert flow_schema tool to walkeros://reference/flow-schema resource
- Add 8 reference resources (event-model, mapping, consent, variables, contract,
api, packages, flow-schema) - Merge 17 API tools into single
apitool with action enum (conditional on
WALKEROS_TOKEN) - Add 4 MCP prompts (add-step, setup-mapping, manage-contract, use-definitions)
- Summarize simulate output with per-destination results
- Standardize responses with mcpResult/mcpError and _hints for next-step
guidance
Replace hand-written MCP resources with auto-generated JSON Schemas from
@walkeros/core. Add walkerOS.json to 5 transformer packages. Variables resource
remains hand-maintained (runtime interpolation patterns).
Replace flat/v2 contract format with named contracts supporting extends
inheritance.
BREAKING CHANGES:
contractis now a map of named contract entries (e.g.,
{ "default": { ... }, "web": { ... } })versionfield inside contracts removed$taggingrenamed totagging- Legacy flat contract format removed
$globals,$context,$custom,$user,$consentreferences removed- Settings-level
contractfield removed (use named contracts at config level) - Auto-injection of
$taggingintocollector.taggingremoved (use
$contract.name.taggingexplicitly) - Validator
contractsetting renamed toevents(receives raw schemas, not
{ schema: ... }wrappers)
NEW FEATURES: - Named contracts with
extendsfor inheritance (additive merge) - Generalized dot-path resolution:
$def.name.nested.path,
$contract.name.section $contractas first-class reference type with path access$definside contracts supported via two-pass resolution$defaliasing for reducing repetition:{ "c": "$contract.web" }then
$def.c.events
Standardize command pattern: all three commands (validate, simulate, push) now
route through their programmatic APIs for string resolution and orchestration.
Extract shared createCollectorLoggerConfig utility. Pass missing silent/step
options through simulate() API.
Router now preserves the current event when branching instead of resetting it to
{}. Downstream transformers receive the event as-is. This is a behavioral fix
— the router should be a pure routing decision that doesn't modify event data.
Unified CLI and Docker runner into single walkeros run code path with built-in
health server, heartbeat, polling, and secrets support. Added --flow-id and
--project flags. Removed legacy --deploy, --url, --health-endpoint,
--heartbeat-interval, and -h/--host flags.
Add S3-compatible object storage store using s3mini. Works with AWS S3,
Cloudflare R2, Scaleway, DigitalOcean Spaces, Backblaze B2, MinIO, and any
S3-compatible provider.
Add filesystem store implementing the Store interface. Reads/writes files
relative to configurable basePath with path traversal protection.
New package: Google Cloud Storage store with zero runtime dependencies and
built-in ADC + service account auth
Add file serving transformer that serves static files through any Store backend.
I/O-agnostic: works with FsStore, MemoryStore, or any Store.Instance. Built-in
MIME type detection and configurable prefix stripping.
Fix Shadow DOM support: use composedPath for event targets, recurse into open
shadow roots for element discovery and property collection
Add sideEffects declarations to all packages for bundler tree-shaking support.
Add Store types as fourth modular component type. Stores provide pluggable
key-value storage (get/set/delete/destroy) with sync and async support for
browser and server backends.
Fix $store: forward reference bug in bundler codegen — stores are now hoisted
into a separate variable declaration before the config object, ensuring store
references resolve correctly at runtime
Add @walkeros/store-memory package with in-memory store (LRU eviction, lazy
TTL), MockStore for testing, and withNamespace utility for key isolation.
Fix store reference resolution: env values from $store: now correctly resolve
to initialized Store.Instance during transformer/destination push. Preserve
config.env across transformer init lifecycle.
Add stores as a first-class component type in Flow.Config. Stores get their own
stores section in flow settings, a collector.stores registry, and
$store:storeId env wiring in the bundler. Includes storeMemoryInit for
Flow.Config compatibility and type widening in cache/file transformers.
Update @walkeros/web-source-browser dependency to include shadow DOM support
Published Packages
- @walkeros/cli
- @walkeros/collector
- @walkeros/config
- @walkeros/core
- @walkeros/destination-demo
- @walkeros/explorer
- @walkeros/mcp
- @walkeros/mcp-source-browser
- @walkeros/server-core
- @walkeros/server-destination-api
- @walkeros/server-destination-aws
- @walkeros/server-destination-datamanager
- @walkeros/server-destination-gcp
- @walkeros/server-destination-meta
- @walkeros/server-source-aws
- @walkeros/server-source-express
- @walkeros/server-source-fetch
- @walkeros/server-source-gcp
- @walkeros/server-store-fs
- @walkeros/server-store-gcs
- @walkeros/server-store-s3
- @walkeros/server-transformer-cache
- @walkeros/server-transformer-file
- @walkeros/server-transformer-fingerprint
- @walkeros/source-demo
- @walkeros/store-memory
- @walkeros/storybook-addon
- @walkeros/transformer-demo
- @walkeros/transformer-router
- @walkeros/transformer-validator
- @walkeros/walker.js
- @walkeros/web-core
- @walkeros/web-destination-api
- @walkeros/web-destination-gtag
- @walkeros/web-destination-meta
- @walkeros/web-destination-piwikpro
- @walkeros/web-destination-plausible
- @walkeros/web-destination-snowplow
- @walkeros/web-source-browser
- @walkeros/web-source-cmp-cookiefirst
- @walkeros/web-source-cmp-cookiepro
- @walkeros/web-source-cmp-usercentrics
- @walkeros/web-source-datalayer
- @walkeros/web-source-session