Use dict merge ({**defaults, **listener}) instead of setdefault() to
provide address/timeout defaults for the Envoy template without
mutating the original listener dicts. This prevents extra fields
(timeout: 30s) from leaking into the rendered plano config YAML.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Update ci.yml demo paths: use_cases/preference_based_routing →
llm_routing/preference_based_routing, samples_python/currency_exchange
→ advanced/currency_exchange
- Fix SocketAddressValidationError in Envoy config: set default address
("0.0.0.0") and timeout ("30s") on array-style listener dicts so the
Envoy template renders valid listener addresses
- Also extract prompt_gateway_listener from type: "prompt" listeners
in the array format (was only handled for legacy dict format)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>