diff --git a/dapr_agents/llm/dapr/chat.py b/dapr_agents/llm/dapr/chat.py index 5e4603bc..c43bc4b4 100644 --- a/dapr_agents/llm/dapr/chat.py +++ b/dapr_agents/llm/dapr/chat.py @@ -332,10 +332,10 @@ def generate( if dapr_runtime_version is not None: # Allow only versions >=1.16.0 and <2.0.0 for Alpha2 Chat Client if not is_version_supported( - str(dapr_runtime_version), ">=1.16.0, <2.0.0" + str(dapr_runtime_version), ">=1.16.0, edge, <2.0.0" ): raise DaprRuntimeVersionNotSupportedError( - f"!!!!! Dapr Runtime Version {dapr_runtime_version} is not supported with Alpha2 Dapr Chat Client. Only Dapr runtime versions >=1.16.0 and <2.0.0 are supported." + f"!!!!! Dapr Runtime Version {dapr_runtime_version} is not supported with Alpha2 Dapr Chat Client. Only Dapr runtime versions >=1.16.0, edge,and <2.0.0 are supported." ) raw = self.client.chat_completion_alpha2( diff --git a/dapr_agents/utils/semver.py b/dapr_agents/utils/semver.py index 9f258c01..6bfa15e1 100644 --- a/dapr_agents/utils/semver.py +++ b/dapr_agents/utils/semver.py @@ -63,6 +63,8 @@ def is_version_supported(version: str, constraints: str) -> bool: - Each token supports operators: ==, !=, >=, <=, >, < - Missing operator defaults to == """ + if version == "edge": + return True v = Version.parse(version) for group in constraints.split("||"): group = group.strip() diff --git a/tests/utils/test_semver.py b/tests/utils/test_semver.py index 96004314..f7eafb1c 100644 --- a/tests/utils/test_semver.py +++ b/tests/utils/test_semver.py @@ -58,3 +58,25 @@ def test_version_parse_defaults_missing_parts_to_zero() -> None: assert Version.parse("1.2").major == 1 assert Version.parse("1.2").minor == 2 assert Version.parse("1.2").patch == 0 + + +def test_edge_version_always_satisfies_constraints() -> None: + """Edge version should always satisfy any constraint.""" + assert is_version_supported("edge", "==1.2.3") is True + assert is_version_supported("edge", "!=1.2.3") is True + assert is_version_supported("edge", ">1.2.2") is True + assert is_version_supported("edge", ">=1.2.3") is True + assert is_version_supported("edge", "<1.2.4") is True + assert is_version_supported("edge", "<=1.2.3") is True + assert is_version_supported("edge", ">=1.16.0, <2.0.0") is True + assert is_version_supported("edge", ">=2.0.0, <3.0.0 || ==1.16.1") is True + assert is_version_supported("edge", "==0.0.0") is True + assert is_version_supported("edge", ">999.999.999") is True + assert is_version_supported("edge", "<0.0.1") is True + + +def test_edge_version_case_sensitivity() -> None: + """Edge version should be case sensitive.""" + assert is_version_supported("edge", "==1.2.3") is True + assert is_version_supported("Edge", "==1.2.3") is False + assert is_version_supported("EDGE", "==1.2.3") is False