From f4e10218a7a882e306a4dc395827f8613992fd3f Mon Sep 17 00:00:00 2001 From: duongynhi000005-oss Date: Mon, 25 May 2026 05:13:11 +0000 Subject: [PATCH] sdk: reject empty metadata keys --- src/sdk/agent.py | 2 ++ tests/test_sdk_agent_metadata.py | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 tests/test_sdk_agent_metadata.py diff --git a/src/sdk/agent.py b/src/sdk/agent.py index e1dc49de1..6499a51bf 100644 --- a/src/sdk/agent.py +++ b/src/sdk/agent.py @@ -45,6 +45,8 @@ def stop(self) -> None: self._running = False def set_metadata(self, key: str, value: Any) -> None: + if not isinstance(key, str) or not key.strip(): + raise ValueError("metadata key must be a non-empty string") self._metadata[key] = value def get_metadata(self, key: str, default: Any = None) -> Any: diff --git a/tests/test_sdk_agent_metadata.py b/tests/test_sdk_agent_metadata.py new file mode 100644 index 000000000..e23d1a555 --- /dev/null +++ b/tests/test_sdk_agent_metadata.py @@ -0,0 +1,26 @@ +import pytest + +from src.sdk.agent import BaseAgent + + +class _Agent(BaseAgent): + async def setup(self) -> None: + return None + + async def handle_task(self, task): + return task + + async def cleanup(self) -> None: + return None + + +def test_set_metadata_rejects_empty_key(): + agent = _Agent(agent_id="a1", name="agent") + with pytest.raises(ValueError): + agent.set_metadata("", "value") + + +def test_set_metadata_accepts_non_empty_key(): + agent = _Agent(agent_id="a1", name="agent") + agent.set_metadata("env", "prod") + assert agent.get_metadata("env") == "prod"