Skip to content

feat(filter): configure and validate outbound subrequest filter chains #1074

Description

@leseb

Parent: #1072

Depends on #1073.

Summary

Callers of the filtered-subrequest executor need a safe way to select and build outbound filter chains through the same registry and lifecycle as their containing pipeline.

Add registry-aware outbound-chain configuration and validation without turning SubRequestClient into a filter orchestrator.

Scope

  • Allow a callout-capable filter to bind a configured outbound filter chain during pipeline construction.
  • Resolve the chain through the active FilterRegistry, including application-registered filters.
  • Rebuild outbound chains as part of normal pipeline reload and publish the new configuration atomically.
  • Define explicit projection of approved parent request data into an isolated child context.
  • Validate missing filters, filter ordering, recursive chain references, and maximum nesting depth before activation.
  • Preserve existing destination authority, DNS/SSRF, TLS/SNI, Host, deadline, and transport-limit enforcement.
  • Document the configuration and lifecycle contract for downstream callers.

Acceptance Criteria

  • Callers receive a prebuilt outbound pipeline rather than parsing or resolving filter configuration per request.
  • Application-owned filters can be resolved from the active registry.
  • Invalid references, cycles, excessive nesting, and invalid ordering fail configuration validation.
  • Failed reload validation does not publish a partial mix of parent and outbound pipelines.
  • Child contexts inherit no headers or extensions by default.
  • Only explicitly approved request-scoped values can be projected into a child context.
  • Credentials cannot be disclosed before the outbound destination has been resolved and validated.
  • Configuration and lifecycle behavior have focused unit and reload tests.

Out of Scope

  • Implementing application-specific credential policy.
  • Migrating Praxis AI callout clients.
  • Automatically forwarding incoming headers or all request extensions.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions