From 033cf90b3011704d16624e7c15c5ee54ff1c6644 Mon Sep 17 00:00:00 2001 From: "diana.grecu" Date: Tue, 28 Apr 2026 11:51:59 +0300 Subject: [PATCH 1/3] feat: add is_case_manager field in agent declaration --- .../uipath/src/uipath/agent/models/agent.py | 10 ++ .../uipath/tests/agent/models/test_agent.py | 113 ++++++++++++++++++ 2 files changed, 123 insertions(+) diff --git a/packages/uipath/src/uipath/agent/models/agent.py b/packages/uipath/src/uipath/agent/models/agent.py index 7694a861e..a24b11438 100644 --- a/packages/uipath/src/uipath/agent/models/agent.py +++ b/packages/uipath/src/uipath/agent/models/agent.py @@ -1156,6 +1156,7 @@ class AgentMetadata(BaseCfg): """Agent metadata model.""" is_conversational: bool = Field(alias="isConversational") + is_case_manager: bool = Field(default=False, alias="isCaseManager") storage_version: str = Field(alias="storageVersion") @@ -1216,6 +1217,15 @@ def is_conversational(self) -> bool: return metadata.is_conversational return False + @property + def is_case_manager(self) -> bool: + """Checks if the agent is a case manager agent.""" + if hasattr(self, "metadata") and self.metadata: + metadata = self.metadata + if hasattr(metadata, "is_case_manager"): + return metadata.is_case_manager + return False + @staticmethod def _normalize_guardrails(v: Dict[str, Any]) -> None: guards = v.get("guardrails") diff --git a/packages/uipath/tests/agent/models/test_agent.py b/packages/uipath/tests/agent/models/test_agent.py index d00e5a42b..6c4c0519a 100644 --- a/packages/uipath/tests/agent/models/test_agent.py +++ b/packages/uipath/tests/agent/models/test_agent.py @@ -3283,6 +3283,119 @@ def test_is_conversational_false_by_default(self): assert config.is_conversational is False +class TestAgentDefinitionIsCaseManager: + """Tests for AgentDefinition.is_case_manager property.""" + + def test_is_case_manager_true_when_metadata_set(self): + """Returns True when metadata.is_case_manager is True.""" + json_data = { + "id": "test-case-manager", + "name": "Case Manager Agent", + "version": "1.0.0", + "metadata": { + "isConversational": False, + "isCaseManager": True, + "storageVersion": "1.0.0", + }, + "settings": { + "model": "gpt-4o", + "maxTokens": 4096, + "temperature": 0, + "engine": "basic-v1", + }, + "inputSchema": {"type": "object", "properties": {}}, + "outputSchema": {"type": "object", "properties": {}}, + "resources": [], + "messages": [ + {"role": "system", "content": "You are a case manager agent."} + ], + } + + config: AgentDefinition = TypeAdapter(AgentDefinition).validate_python( + json_data + ) + + assert config.is_case_manager is True + + def test_is_case_manager_false_when_metadata_set_false(self): + """Returns False when metadata.is_case_manager is False.""" + json_data = { + "id": "test-non-case-manager", + "name": "Regular Agent", + "version": "1.0.0", + "metadata": { + "isConversational": False, + "isCaseManager": False, + "storageVersion": "1.0.0", + }, + "settings": { + "model": "gpt-4o", + "maxTokens": 4096, + "temperature": 0, + "engine": "basic-v1", + }, + "inputSchema": {"type": "object", "properties": {}}, + "outputSchema": {"type": "object", "properties": {}}, + "resources": [], + "messages": [{"role": "system", "content": "You are an agent."}], + } + + config: AgentDefinition = TypeAdapter(AgentDefinition).validate_python( + json_data + ) + + assert config.is_case_manager is False + + def test_is_case_manager_false_when_not_in_metadata(self): + """Returns False when isCaseManager is not present in metadata.""" + json_data = { + "id": "test-no-case-manager-field", + "name": "Agent Without CM Field", + "version": "1.0.0", + "metadata": {"isConversational": False, "storageVersion": "1.0.0"}, + "settings": { + "model": "gpt-4o", + "maxTokens": 4096, + "temperature": 0, + "engine": "basic-v1", + }, + "inputSchema": {"type": "object", "properties": {}}, + "outputSchema": {"type": "object", "properties": {}}, + "resources": [], + "messages": [{"role": "system", "content": "You are an agent."}], + } + + config: AgentDefinition = TypeAdapter(AgentDefinition).validate_python( + json_data + ) + + assert config.is_case_manager is False + + def test_is_case_manager_false_when_no_metadata(self): + """Returns False when agent has no metadata.""" + json_data = { + "id": "test-no-metadata", + "name": "Agent Without Metadata", + "version": "1.0.0", + "settings": { + "model": "gpt-4o", + "maxTokens": 4096, + "temperature": 0, + "engine": "basic-v1", + }, + "inputSchema": {"type": "object", "properties": {}}, + "outputSchema": {"type": "object", "properties": {}}, + "resources": [], + "messages": [{"role": "system", "content": "You are an agent."}], + } + + config: AgentDefinition = TypeAdapter(AgentDefinition).validate_python( + json_data + ) + + assert config.is_case_manager is False + + class TestAgentBuilderConfigResources: """Tests for AgentDefinition resource configuration parsing.""" From bb18336d8c2aaf9cbf0f553518f9e61433a6bfd5 Mon Sep 17 00:00:00 2001 From: "diana.grecu" Date: Tue, 28 Apr 2026 11:58:05 +0300 Subject: [PATCH 2/3] chore: update version --- packages/uipath/pyproject.toml | 2 +- packages/uipath/uv.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/uipath/pyproject.toml b/packages/uipath/pyproject.toml index c6a998262..3883b3d84 100644 --- a/packages/uipath/pyproject.toml +++ b/packages/uipath/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "uipath" -version = "2.10.58" +version = "2.10.59" description = "Python SDK and CLI for UiPath Platform, enabling programmatic interaction with automation services, process management, and deployment tools." readme = { file = "README.md", content-type = "text/markdown" } requires-python = ">=3.11" diff --git a/packages/uipath/uv.lock b/packages/uipath/uv.lock index b85d0fb8d..10b7e683b 100644 --- a/packages/uipath/uv.lock +++ b/packages/uipath/uv.lock @@ -2543,7 +2543,7 @@ wheels = [ [[package]] name = "uipath" -version = "2.10.58" +version = "2.10.59" source = { editable = "." } dependencies = [ { name = "applicationinsights" }, From 764a1e9808a9d2592965608dd671e423d71ce8bd Mon Sep 17 00:00:00 2001 From: "diana.grecu" Date: Wed, 29 Apr 2026 15:12:16 +0300 Subject: [PATCH 3/3] refactor: address comment --- packages/uipath/src/uipath/agent/models/agent.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/uipath/src/uipath/agent/models/agent.py b/packages/uipath/src/uipath/agent/models/agent.py index a24b11438..8f8b8a207 100644 --- a/packages/uipath/src/uipath/agent/models/agent.py +++ b/packages/uipath/src/uipath/agent/models/agent.py @@ -1220,11 +1220,7 @@ def is_conversational(self) -> bool: @property def is_case_manager(self) -> bool: """Checks if the agent is a case manager agent.""" - if hasattr(self, "metadata") and self.metadata: - metadata = self.metadata - if hasattr(metadata, "is_case_manager"): - return metadata.is_case_manager - return False + return self.metadata.is_case_manager if self.metadata else False @staticmethod def _normalize_guardrails(v: Dict[str, Any]) -> None: