fix(agent): coerce None Switch inputs before string operators (#16320)

## Summary
- Coerce `None` canvas values to `""` before string comparison operators
in `Switch.process_operator`.
- Prevents `AttributeError` when upstream components yield `None` and
the Switch uses contains/start with/end with.

## Test plan
- [x] `.v/bin/python -m ruff check agent/component/switch.py
test/unit_test/agent/component/test_switch.py`
- [x] `.v/bin/python -m pytest
test/unit_test/agent/component/test_switch.py -q` (3 passed)

Fixes #16315

---------

Co-authored-by: Harsh Kashyap <harshkashyap@Harshs-MacBook-Pro.local>
This commit is contained in:
Harsh Kashyap
2026-06-25 11:48:24 +05:30
committed by GitHub
parent 54fb5b0fa7
commit b9445c67e2
2 changed files with 43 additions and 0 deletions

View File

@@ -97,6 +97,9 @@ class Switch(ComponentBase, ABC):
self.set_output("_next", self._param.end_cpn_ids)
def process_operator(self, input: Any, operator: str, value: Any) -> bool:
if operator in ("contains", "not contains", "start with", "end with"):
input = "" if input is None else str(input)
value = "" if value is None else str(value)
if operator == "contains":
return True if value.lower() in input.lower() else False
elif operator == "not contains":