From 7a0b775276b005eaf3cef1d3af180c8a269dd0c0 Mon Sep 17 00:00:00 2001 From: Adil Hafeez Date: Sun, 15 Feb 2026 10:45:09 -0800 Subject: [PATCH] Fix listener defaults to avoid mutating config dicts 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 --- cli/planoai/utils.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/cli/planoai/utils.py b/cli/planoai/utils.py index 50e5b2b7..171006f1 100644 --- a/cli/planoai/utils.py +++ b/cli/planoai/utils.py @@ -147,10 +147,6 @@ def convert_legacy_listeners( model_provider_set = False for listener in listeners: - # Ensure address and timeout defaults for all listeners - listener.setdefault("address", "0.0.0.0") - listener.setdefault("timeout", "30s") - if listener.get("type") == "model": if model_provider_set: raise ValueError( @@ -158,9 +154,10 @@ def convert_legacy_listeners( ) listener["model_providers"] = model_providers or [] model_provider_set = True - llm_gateway_listener = listener + # Merge user listener values into defaults for the Envoy template + llm_gateway_listener = {**llm_gateway_listener, **listener} elif listener.get("type") == "prompt": - prompt_gateway_listener = listener + prompt_gateway_listener = {**prompt_gateway_listener, **listener} if not model_provider_set: listeners.append(llm_gateway_listener)