Skip to content

640 conditional routes correction#641

Merged
alexanderkirtzel merged 6 commits into
mainfrom
640-conditional-routes-correction
May 11, 2026
Merged

640 conditional routes correction#641
alexanderkirtzel merged 6 commits into
mainfrom
640-conditional-routes-correction

Conversation

@alexanderkirtzel
Copy link
Copy Markdown
Collaborator

@alexanderkirtzel alexanderkirtzel commented May 11, 2026

Summary by CodeRabbit

  • Breaking Changes

    • Routing types renamed from NextRule/Next to Route/RouteSpec across configuration APIs.
    • Chain properties (before, next) now accept conditional routing via Route[] with match expressions.
  • New Features

    • Demo destination extended to support server platform alongside web.
  • Bug Fixes

    • Corrected CLI command references in documentation.
  • Documentation

    • Updated flow configuration guides for new RouteSpec routing model.

Review Change Stack

@alexanderkirtzel alexanderkirtzel linked an issue May 11, 2026 that may be closed by this pull request
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 11, 2026

Important

Review skipped

Too many files!

This PR contains 169 files, which is 19 over the limit of 150.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 4f7df811-5ccf-4d91-9d21-5703cf566cd4

📥 Commits

Reviewing files that changed from the base of the PR and between 664e9d9 and 68b0c94.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (169)
  • apps/cli/CHANGELOG.md
  • apps/cli/package.json
  • apps/demos/react/CHANGELOG.md
  • apps/demos/react/package.json
  • apps/demos/storybook/CHANGELOG.md
  • apps/demos/storybook/package.json
  • apps/explorer/CHANGELOG.md
  • apps/explorer/package.json
  • apps/quickstart/CHANGELOG.md
  • apps/quickstart/package.json
  • apps/storybook-addon/CHANGELOG.md
  • apps/storybook-addon/package.json
  • apps/walkerjs/CHANGELOG.md
  • apps/walkerjs/package.json
  • packages/cli/CHANGELOG.md
  • packages/cli/package.json
  • packages/collector/CHANGELOG.md
  • packages/collector/package.json
  • packages/collector/src/destination.ts
  • packages/collector/src/transformer.ts
  • packages/config/CHANGELOG.md
  • packages/config/package.json
  • packages/core/CHANGELOG.md
  • packages/core/package.json
  • packages/destinations/demo/CHANGELOG.md
  • packages/destinations/demo/package.json
  • packages/mcps/mcp/CHANGELOG.md
  • packages/mcps/mcp/package.json
  • packages/mcps/source-browser/CHANGELOG.md
  • packages/mcps/source-browser/package.json
  • packages/server/core/CHANGELOG.md
  • packages/server/core/package.json
  • packages/server/destinations/amplitude/CHANGELOG.md
  • packages/server/destinations/amplitude/package.json
  • packages/server/destinations/api/CHANGELOG.md
  • packages/server/destinations/api/package.json
  • packages/server/destinations/aws/CHANGELOG.md
  • packages/server/destinations/aws/package.json
  • packages/server/destinations/bing/CHANGELOG.md
  • packages/server/destinations/bing/package.json
  • packages/server/destinations/criteo/CHANGELOG.md
  • packages/server/destinations/criteo/package.json
  • packages/server/destinations/customerio/CHANGELOG.md
  • packages/server/destinations/customerio/package.json
  • packages/server/destinations/datamanager/CHANGELOG.md
  • packages/server/destinations/datamanager/package.json
  • packages/server/destinations/file/CHANGELOG.md
  • packages/server/destinations/file/package.json
  • packages/server/destinations/gcp/CHANGELOG.md
  • packages/server/destinations/gcp/package.json
  • packages/server/destinations/hubspot/CHANGELOG.md
  • packages/server/destinations/hubspot/package.json
  • packages/server/destinations/kafka/CHANGELOG.md
  • packages/server/destinations/kafka/package.json
  • packages/server/destinations/klaviyo/CHANGELOG.md
  • packages/server/destinations/klaviyo/package.json
  • packages/server/destinations/linkedin/CHANGELOG.md
  • packages/server/destinations/linkedin/package.json
  • packages/server/destinations/meta/CHANGELOG.md
  • packages/server/destinations/meta/package.json
  • packages/server/destinations/mixpanel/CHANGELOG.md
  • packages/server/destinations/mixpanel/package.json
  • packages/server/destinations/mparticle/CHANGELOG.md
  • packages/server/destinations/mparticle/package.json
  • packages/server/destinations/pinterest/CHANGELOG.md
  • packages/server/destinations/pinterest/package.json
  • packages/server/destinations/posthog/CHANGELOG.md
  • packages/server/destinations/posthog/package.json
  • packages/server/destinations/reddit/CHANGELOG.md
  • packages/server/destinations/reddit/package.json
  • packages/server/destinations/redis/CHANGELOG.md
  • packages/server/destinations/redis/package.json
  • packages/server/destinations/rudderstack/CHANGELOG.md
  • packages/server/destinations/rudderstack/package.json
  • packages/server/destinations/segment/CHANGELOG.md
  • packages/server/destinations/segment/package.json
  • packages/server/destinations/slack/CHANGELOG.md
  • packages/server/destinations/slack/package.json
  • packages/server/destinations/snapchat/CHANGELOG.md
  • packages/server/destinations/snapchat/package.json
  • packages/server/destinations/sqlite/CHANGELOG.md
  • packages/server/destinations/sqlite/package.json
  • packages/server/destinations/tiktok/CHANGELOG.md
  • packages/server/destinations/tiktok/package.json
  • packages/server/destinations/twitter/CHANGELOG.md
  • packages/server/destinations/twitter/package.json
  • packages/server/sources/aws/CHANGELOG.md
  • packages/server/sources/aws/package.json
  • packages/server/sources/express/CHANGELOG.md
  • packages/server/sources/express/package.json
  • packages/server/sources/fetch/CHANGELOG.md
  • packages/server/sources/fetch/package.json
  • packages/server/sources/gcp/CHANGELOG.md
  • packages/server/sources/gcp/package.json
  • packages/server/stores/fs/CHANGELOG.md
  • packages/server/stores/fs/package.json
  • packages/server/stores/gcs/CHANGELOG.md
  • packages/server/stores/gcs/package.json
  • packages/server/stores/s3/CHANGELOG.md
  • packages/server/stores/s3/package.json
  • packages/server/stores/sheets/CHANGELOG.md
  • packages/server/stores/sheets/package.json
  • packages/server/transformers/file/CHANGELOG.md
  • packages/server/transformers/file/package.json
  • packages/server/transformers/fingerprint/CHANGELOG.md
  • packages/server/transformers/fingerprint/package.json
  • packages/stores/memory/CHANGELOG.md
  • packages/stores/memory/package.json
  • packages/transformers/demo/CHANGELOG.md
  • packages/transformers/demo/package.json
  • packages/transformers/validator/CHANGELOG.md
  • packages/transformers/validator/package.json
  • packages/web/core/CHANGELOG.md
  • packages/web/core/package.json
  • packages/web/destinations/amplitude/CHANGELOG.md
  • packages/web/destinations/amplitude/package.json
  • packages/web/destinations/api/CHANGELOG.md
  • packages/web/destinations/api/package.json
  • packages/web/destinations/clarity/CHANGELOG.md
  • packages/web/destinations/clarity/package.json
  • packages/web/destinations/fullstory/CHANGELOG.md
  • packages/web/destinations/fullstory/package.json
  • packages/web/destinations/gtag/CHANGELOG.md
  • packages/web/destinations/gtag/package.json
  • packages/web/destinations/heap/CHANGELOG.md
  • packages/web/destinations/heap/package.json
  • packages/web/destinations/hotjar/CHANGELOG.md
  • packages/web/destinations/hotjar/package.json
  • packages/web/destinations/linkedin/CHANGELOG.md
  • packages/web/destinations/linkedin/package.json
  • packages/web/destinations/matomo/CHANGELOG.md
  • packages/web/destinations/matomo/package.json
  • packages/web/destinations/meta/CHANGELOG.md
  • packages/web/destinations/meta/package.json
  • packages/web/destinations/mixpanel/CHANGELOG.md
  • packages/web/destinations/mixpanel/package.json
  • packages/web/destinations/optimizely/CHANGELOG.md
  • packages/web/destinations/optimizely/package.json
  • packages/web/destinations/pinterest/CHANGELOG.md
  • packages/web/destinations/pinterest/package.json
  • packages/web/destinations/piwikpro/CHANGELOG.md
  • packages/web/destinations/piwikpro/package.json
  • packages/web/destinations/plausible/CHANGELOG.md
  • packages/web/destinations/plausible/package.json
  • packages/web/destinations/posthog/CHANGELOG.md
  • packages/web/destinations/posthog/package.json
  • packages/web/destinations/segment/CHANGELOG.md
  • packages/web/destinations/segment/package.json
  • packages/web/destinations/snowplow/CHANGELOG.md
  • packages/web/destinations/snowplow/package.json
  • packages/web/destinations/tiktok/CHANGELOG.md
  • packages/web/destinations/tiktok/package.json
  • packages/web/sources/browser/CHANGELOG.md
  • packages/web/sources/browser/package.json
  • packages/web/sources/cmps/cookiefirst/CHANGELOG.md
  • packages/web/sources/cmps/cookiefirst/package.json
  • packages/web/sources/cmps/cookiepro/CHANGELOG.md
  • packages/web/sources/cmps/cookiepro/package.json
  • packages/web/sources/cmps/usercentrics/CHANGELOG.md
  • packages/web/sources/cmps/usercentrics/package.json
  • packages/web/sources/dataLayer/CHANGELOG.md
  • packages/web/sources/dataLayer/package.json
  • packages/web/sources/demo/CHANGELOG.md
  • packages/web/sources/demo/package.json
  • packages/web/sources/session/CHANGELOG.md
  • packages/web/sources/session/package.json
  • skills/walkeros-using-cli/flow-configuration.md
  • website/CHANGELOG.md
  • website/package.json

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

This PR performs a hard rename of the routing type system: NextRuleRoute, NextRouteSpec, and RoutableNextSchemaRouteSpecSchema. The change updates type definitions, Zod schemas, route utilities, CLI command handlers, collector runtime logic, tests, and documentation to use the new naming. The SimulateDispatch interface field is renamed from route to kind, and unsafe type casts are replaced with explicit isRouteArray branching logic throughout the codebase.

Changes

Route Type System Refactor

Layer / File(s) Summary
Core Type Definitions
packages/core/src/types/transformer.ts, packages/core/src/types/source.ts, packages/core/src/types/destination.ts, packages/core/src/types/flow.ts, packages/core/src/types/store.ts
New Route interface with match and next fields; new RouteSpec = string | string[] | Route[] type. All public interfaces (Config, Result, Init*) updated from Next to RouteSpec. JSDoc references to "walker setup" corrected to "walkeros setup".
Schema Validation
packages/core/src/schemas/matcher.ts, packages/core/src/schemas/destination.ts, packages/core/src/schemas/transformer.ts, packages/core/src/schemas/flow.ts, packages/core/src/schemas/index.ts
RouteSpecSchema and RouteSchema replace RoutableNextSchema/NextRuleSchema; all Flow, Transformer, and Destination schemas updated to validate against RouteSpecSchema instead of RoutableNextSchema. Meta identifiers renamed from MatcherNext* to MatcherRoute*.
Route Utilities
packages/core/src/route.ts, packages/core/src/branch.ts
isRouteArray(next: RouteSpec): next is Route[] and compileNext(next: RouteSpec | undefined) updated to use new types. branch() function signature updated to accept RouteSpec.
CLI Dispatch
packages/cli/src/commands/push/dispatch-simulate.ts, packages/cli/src/commands/push/run.ts
SimulateDispatch interface field renamed routekind. Push command switch statement updated to branch on plan.kind.
CLI Bundler
packages/cli/src/commands/bundle/bundler.ts
Bundler imports Transformer type; generateInlineCode parameter type changed from string arrays to Transformer.RouteSpec; inline-code call sites for sources and destinations no longer cast to string | string[].
CLI Validation
packages/cli/src/commands/validate/validators/flow.ts
Added flattenRouteTargets(spec: RouteSpec) helper to extract de-duplicated target IDs from static and conditional route specs; buildConnectionGraph updated to derive edges via flattenRouteTargets instead of assuming simple strings/arrays.
CLI Push
packages/cli/src/commands/push/index.ts, packages/cli/src/commands/setup/resolve.ts
resolveBeforeChain casts to Transformer.RouteSpec and removes unsafe string | string[] casting. Docstring corrected from "walker push" to "walkeros push".
Collector Transformer
packages/collector/src/transformer.ts
extractTransformerNextMap no longer explicitly casts next values. Fork and result handling refactored to use explicit isRouteArray branching: route arrays are compiled/resolved; static specs pass through directly.
Collector Destination
packages/collector/src/destination.ts
resolveDestinationChain parameter type widened to Transformer.RouteSpec; explicitly returns empty chain when route array has no compiled routing; static routing paths walk chain directly without casting.
Core Schema Tests
packages/core/src/__tests__/schemas/matcher.test.ts
Test suite updated to validate RouteSchema and RouteSpecSchema instead of NextRuleSchema/RoutableNextSchema. Assertions check string, string array, and route-array forms of RouteSpec.
Collector Tests
packages/collector/src/__tests__/source-chain-integration.test.ts, packages/collector/src/__tests__/transformer-branch.test.ts, packages/collector/src/__tests__/transformer-chain-integration.test.ts
Test suite headings updated from "NextRule[]" to "Route[]". Added staticChain() helper to enforce static routing in fixtures; test assertions reformatted for multi-line readability without behavior changes.
CLI Tests
packages/cli/src/commands/push/__tests__/dispatch-integration.test.ts, packages/cli/src/commands/push/__tests__/simulate-isolation.test.ts
dispatchSimulate assertions updated to expect kind field instead of route. Integration tests validate flag parsing for destination/source ids. Isolation tests use staticChain(before) helper instead of direct casting.
Documentation & Metadata
.changeset/*, package.json, packages/destinations/demo/package.json, skills/*, website/docs/*, website/static/schema/flow/v4.json
Changesets document type renames and walkerOS.platform expansion for demo destination. Root workspace adds packages/destinations/* glob. Skills and website docs clarify RouteSpec type and Route[] conditional routing. JSON Schema v4 introduces MatcherRouteSpec definition and updates all flow chain properties to reference it.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • elbwalker/walkerOS#594: Both modify transformer chain resolution (walkChain/extractTransformerNextMap/resolveDestinationChain) and route handling code paths.
  • elbwalker/walkerOS#633: Both update packages/core/src/schemas/matcher.ts and its exported routing schemas.
  • elbwalker/walkerOS#578: Both touch CLI modules (bundle/bundler.ts, push commands) and routing/transformer chain handling.

🐰 A route runs deep through every flow,
From source and transform to the final glow.
NextRule became Route, and Next became Spec—
Types now shine clear, each conditional check.
The schema's reborn, the bundler's made right,
Your conditional chaining now guides the way bright!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title '640 conditional routes correction' directly references the issue number and accurately describes the core change: a comprehensive refactoring of routing types from NextRule/Next to Route/RouteSpec across the codebase to support conditional routing.
Docstring Coverage ✅ Passed Docstring coverage is 81.25% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 640-conditional-routes-correction

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (3)
packages/collector/src/destination.ts (1)

45-62: ⚡ Quick win

Avoid recomputing transformer next-map inside resolveDestinationChain.

extractTransformerNextMap(transformers) is recomputed per call; for high event volume this adds avoidable overhead in the destination push path. Precompute it once and pass it into the resolver.

♻️ Suggested refactor
 function resolveDestinationChain(
   before: Transformer.RouteSpec | undefined,
   compiledBefore: CompiledNext | undefined,
-  transformers: Transformer.Transformers,
+  transformerNextMap: ReturnType<typeof extractTransformerNextMap>,
   ingest?: Ingest,
 ): string[] {
   if (!before) return [];

   if (compiledBefore) {
     const resolved = resolveNext(compiledBefore, buildCacheContext(ingest));
     if (!resolved) return [];
-    return walkChain(resolved, extractTransformerNextMap(transformers));
+    return walkChain(resolved, transformerNextMap);
   }

   // Without compiledBefore, before is static (string | string[]); skip Route[] case.
   if (isRouteArray(before)) return [];
-  return walkChain(before, extractTransformerNextMap(transformers));
+  return walkChain(before, transformerNextMap);
 }
+const transformerNextMap = extractTransformerNextMap(collector.transformers);
 const postChain = resolveDestinationChain(
   before,
   compiledBefore,
-  collector.transformers,
+  transformerNextMap,
   destIngest,
 );
...
 const nextChain = resolveDestinationChain(
   nextConfig,
   compiledNext,
-  collector.transformers,
+  transformerNextMap,
   destIngest,
 );
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/collector/src/destination.ts` around lines 45 - 62, The function
resolveDestinationChain currently calls extractTransformerNextMap(transformers)
on every invocation causing overhead; change resolveDestinationChain signature
to accept a precomputed transformerNextMap (the return type of
extractTransformerNextMap) and replace the internal extractTransformerNextMap
calls with that parameter, then update callers to compute transformerNextMap
once (using extractTransformerNextMap(transformers)) and pass it into
resolveDestinationChain; keep existing logic with resolveNext,
buildCacheContext, walkChain and isRouteArray unchanged.
skills/walkeros-using-cli/flow-configuration.md (1)

195-201: ⚡ Quick win

Add a compact Route shape reference where Route[] is first introduced.

Route[] is now documented in three tables, but the object shape isn’t shown nearby. A short inline schema snippet would reduce ambiguity for users editing flow.json.

📝 Suggested doc addition
+`Route` shape used in conditional chains:
+```json
+{
+  "match": "*" | { "key": "ingest.path", "operator": "prefix", "value": "/api" },
+  "next": "transformerId" | ["transformerA", "transformerB"]
+}
+```

Also applies to: 226-230, 254-259

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/walkeros-using-cli/flow-configuration.md` around lines 195 - 201, Add
a compact inline "Route" shape reference where `Route[]` is first introduced
(the `before` property table) that shows the object fields and allowed forms so
editors know what to put in flow.json: describe a Route object with a "match"
field (either "*" or an object with "key","operator","value" for prefix matches)
and a "next" field (either a single transformer id string or an array of
transformer ids). Insert the same brief snippet near the other two `Route[]`
occurrences (the other table blocks noted) so all three tables (around the
`before` uses) have the same compact schema reference.
packages/collector/src/transformer.ts (1)

455-465: ⚡ Quick win

Consider extracting a shared resolveRouteSpec helper.

The same "if isRouteArraycompileNext + resolveNext, else passthrough" branching now appears in three places (transformer.before resolution, fork result.next, and unified result.next). A small helper would centralize the rule and make the three sites symmetric:

♻️ Suggested helper
function resolveRouteSpec(
  spec: Transformer.RouteSpec | undefined,
  ctx: ReturnType<typeof buildCacheContext>,
): string | string[] | undefined {
  if (!spec) return undefined;
  if (typeof spec === 'string') return spec;
  if (!isRouteArray(spec)) return spec; // plain string[]
  return resolveNext(compileNext(spec), ctx) ?? undefined;
}

Call sites then collapse to e.g. const beforeStartId = resolveRouteSpec(transformerBefore, buildCacheContext(ingest, processedEvent)); and the no-match passthrough at line 620–624 can be expressed as a single if (!resolvedNext) { ... } after the helper call.

Also applies to: 531-542, 611-627

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/collector/src/transformer.ts` around lines 455 - 465, Extract the
repeated branching into a helper like resolveRouteSpec(spec, ctx) that returns
string | string[] | undefined; implement it to return undefined for falsy spec,
return spec when typeof spec === 'string', return spec when Array.isArray(spec)
&& !isRouteArray(spec), otherwise return resolveNext(compileNext(spec), ctx) ??
undefined. Replace the three sites that perform this logic (resolution of
transformer.config.before in transformerBefore, resolution of fork result.next,
and unified result.next) to call resolveRouteSpec(transformerBefore,
buildCacheContext(ingest, processedEvent)) or the appropriate ctx from
buildCacheContext, and simplify the downstream no-match passthrough checks to a
single if (!resolvedNext) { ... } after the helper call.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@packages/collector/src/destination.ts`:
- Around line 45-62: The function resolveDestinationChain currently calls
extractTransformerNextMap(transformers) on every invocation causing overhead;
change resolveDestinationChain signature to accept a precomputed
transformerNextMap (the return type of extractTransformerNextMap) and replace
the internal extractTransformerNextMap calls with that parameter, then update
callers to compute transformerNextMap once (using
extractTransformerNextMap(transformers)) and pass it into
resolveDestinationChain; keep existing logic with resolveNext,
buildCacheContext, walkChain and isRouteArray unchanged.

In `@packages/collector/src/transformer.ts`:
- Around line 455-465: Extract the repeated branching into a helper like
resolveRouteSpec(spec, ctx) that returns string | string[] | undefined;
implement it to return undefined for falsy spec, return spec when typeof spec
=== 'string', return spec when Array.isArray(spec) && !isRouteArray(spec),
otherwise return resolveNext(compileNext(spec), ctx) ?? undefined. Replace the
three sites that perform this logic (resolution of transformer.config.before in
transformerBefore, resolution of fork result.next, and unified result.next) to
call resolveRouteSpec(transformerBefore, buildCacheContext(ingest,
processedEvent)) or the appropriate ctx from buildCacheContext, and simplify the
downstream no-match passthrough checks to a single if (!resolvedNext) { ... }
after the helper call.

In `@skills/walkeros-using-cli/flow-configuration.md`:
- Around line 195-201: Add a compact inline "Route" shape reference where
`Route[]` is first introduced (the `before` property table) that shows the
object fields and allowed forms so editors know what to put in flow.json:
describe a Route object with a "match" field (either "*" or an object with
"key","operator","value" for prefix matches) and a "next" field (either a single
transformer id string or an array of transformer ids). Insert the same brief
snippet near the other two `Route[]` occurrences (the other table blocks noted)
so all three tables (around the `before` uses) have the same compact schema
reference.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: e34491d7-8ea2-43d7-b277-9960f69f021d

📥 Commits

Reviewing files that changed from the base of the PR and between 36d0a47 and 664e9d9.

⛔ Files ignored due to path filters (2)
  • package-lock.json is excluded by !**/package-lock.json
  • packages/destinations/demo/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (50)
  • .changeset/destination-demo-cross-platform.md
  • .changeset/route-typing-rename.md
  • package.json
  • packages/cli/src/commands/bundle/bundler.ts
  • packages/cli/src/commands/push/__tests__/dispatch-integration.test.ts
  • packages/cli/src/commands/push/__tests__/simulate-isolation.test.ts
  • packages/cli/src/commands/push/dispatch-simulate.ts
  • packages/cli/src/commands/push/index.ts
  • packages/cli/src/commands/push/run.ts
  • packages/cli/src/commands/setup/resolve.ts
  • packages/cli/src/commands/validate/validators/flow.ts
  • packages/collector/src/__tests__/source-chain-integration.test.ts
  • packages/collector/src/__tests__/transformer-branch.test.ts
  • packages/collector/src/__tests__/transformer-chain-integration.test.ts
  • packages/collector/src/destination.ts
  • packages/collector/src/transformer.ts
  • packages/core/src/__tests__/schemas/matcher.test.ts
  • packages/core/src/branch.ts
  • packages/core/src/route.ts
  • packages/core/src/schemas/destination.ts
  • packages/core/src/schemas/flow.ts
  • packages/core/src/schemas/index.ts
  • packages/core/src/schemas/matcher.ts
  • packages/core/src/schemas/transformer.ts
  • packages/core/src/types/destination.ts
  • packages/core/src/types/flow.ts
  • packages/core/src/types/source.ts
  • packages/core/src/types/store.ts
  • packages/core/src/types/transformer.ts
  • packages/destinations/demo/CHANGELOG.md
  • packages/destinations/demo/LICENSE
  • packages/destinations/demo/README.md
  • packages/destinations/demo/jest.config.mjs
  • packages/destinations/demo/package.json
  • packages/destinations/demo/src/__tests__/index.test.ts
  • packages/destinations/demo/src/dev.ts
  • packages/destinations/demo/src/examples/env.ts
  • packages/destinations/demo/src/examples/index.ts
  • packages/destinations/demo/src/examples/step.ts
  • packages/destinations/demo/src/index.ts
  • packages/destinations/demo/src/schemas/index.ts
  • packages/destinations/demo/src/schemas/mapping.ts
  • packages/destinations/demo/src/schemas/settings.ts
  • packages/destinations/demo/src/types.ts
  • packages/destinations/demo/tsconfig.json
  • packages/destinations/demo/tsup.config.ts
  • skills/walkeros-understanding-flow/SKILL.md
  • skills/walkeros-using-cli/flow-configuration.md
  • website/docs/getting-started/flow/index.mdx
  • website/static/schema/flow/v4.json

@github-actions
Copy link
Copy Markdown
Contributor

Preview deployed

https://walkeros-io.b-cdn.net/preview/pr-641/

@github-actions
Copy link
Copy Markdown
Contributor

🚀 Stable release published

Packages

Install: npm i @walkeros/core@latest

🐳 Docker images published

  • walkeros/flow:4.0.2 (:latest)
  • walkeros/cli:4.0.2 (:latest)

Docker: docker pull walkeros/flow:latest

@alexanderkirtzel alexanderkirtzel merged commit 0e21ee4 into main May 11, 2026
1 check passed
@alexanderkirtzel alexanderkirtzel deleted the 640-conditional-routes-correction branch May 11, 2026 18:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

conditional routes correction

1 participant