From 57bb85cd084d3fbb0642215fb7b0155b16000411 Mon Sep 17 00:00:00 2001 From: "diana.grecu" Date: Thu, 29 Jan 2026 12:20:09 +0200 Subject: [PATCH 1/2] feat: add taskSource field to task in action center --- pyproject.toml | 2 +- .../platform/action_center/_tasks_service.py | 23 +++++++++++++++++++ uv.lock | 2 +- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index ff52e089a..f4393c0c2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "uipath" -version = "2.6.22" +version = "2.6.23" 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/src/uipath/platform/action_center/_tasks_service.py b/src/uipath/platform/action_center/_tasks_service.py index 87d90aa6c..d18cc57d3 100644 --- a/src/uipath/platform/action_center/_tasks_service.py +++ b/src/uipath/platform/action_center/_tasks_service.py @@ -126,6 +126,29 @@ def _create_spec( if is_actionable_message_enabled is not None: json_payload["isActionableMessageEnabled"] = is_actionable_message_enabled + project_id = UiPathConfig.project_id + trace_id = UiPathConfig.trace_id + + if project_id and trace_id: + folder_key = UiPathConfig.folder_key + job_key = UiPathConfig.job_key + process_key = UiPathConfig.process_uuid + + task_source_metadata: Dict[str, Any] = { + "InstanceId": trace_id, + "FolderKey": folder_key, + "JobKey": job_key, + "ProcessKey": process_key, + } + + task_source = { + "sourceName": "Agent", + "sourceId": project_id, + "taskSourceMetadata": task_source_metadata, + } + + json_payload["taskSource"] = task_source + return RequestSpec( method="POST", endpoint=Endpoint("/orchestrator_/tasks/AppTasks/CreateAppTask"), diff --git a/uv.lock b/uv.lock index b3289b67b..88710ccf2 100644 --- a/uv.lock +++ b/uv.lock @@ -2491,7 +2491,7 @@ wheels = [ [[package]] name = "uipath" -version = "2.6.22" +version = "2.6.23" source = { editable = "." } dependencies = [ { name = "applicationinsights" }, From 35ead0a2e71b8b8238c015f2ac78effa9d8ef105 Mon Sep 17 00:00:00 2001 From: "diana.grecu" Date: Mon, 2 Feb 2026 10:19:22 +0200 Subject: [PATCH 2/2] feat: refactor code to extract source_name as a parameter --- src/uipath/platform/action_center/_tasks_service.py | 9 ++++++++- src/uipath/platform/common/interrupt_models.py | 1 + src/uipath/platform/resume_triggers/_protocol.py | 1 + tests/cli/test_hitl.py | 1 + 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/uipath/platform/action_center/_tasks_service.py b/src/uipath/platform/action_center/_tasks_service.py index d18cc57d3..70ec8c33a 100644 --- a/src/uipath/platform/action_center/_tasks_service.py +++ b/src/uipath/platform/action_center/_tasks_service.py @@ -33,6 +33,7 @@ def _create_spec( labels: Optional[List[str]] = None, is_actionable_message_enabled: Optional[bool] = None, actionable_message_metadata: Optional[Dict[str, Any]] = None, + source_name: str = "Agent", ) -> RequestSpec: field_list = [] outcome_list = [] @@ -142,7 +143,7 @@ def _create_spec( } task_source = { - "sourceName": "Agent", + "sourceName": source_name, "sourceId": project_id, "taskSourceMetadata": task_source_metadata, } @@ -354,6 +355,7 @@ async def create_async( labels: Optional[List[str]] = None, is_actionable_message_enabled: Optional[bool] = None, actionable_message_metadata: Optional[Dict[str, Any]] = None, + source_name: str = "Agent", ) -> Task: """Creates a new action asynchronously. @@ -372,6 +374,7 @@ async def create_async( labels: Optional list of labels for the task is_actionable_message_enabled: Optional boolean indicating whether actionable notifications are enabled for this task actionable_message_metadata: Optional metadata for the action + source_name: The name of the source that created the task. Defaults to 'Agent'. Returns: Action: The created action object @@ -397,6 +400,7 @@ async def create_async( labels=labels, is_actionable_message_enabled=is_actionable_message_enabled, actionable_message_metadata=actionable_message_metadata, + source_name=source_name, ) response = await self.request_async( @@ -437,6 +441,7 @@ def create( labels: Optional[List[str]] = None, is_actionable_message_enabled: Optional[bool] = None, actionable_message_metadata: Optional[Dict[str, Any]] = None, + source_name: str = "Agent", ) -> Task: """Creates a new task synchronously. @@ -455,6 +460,7 @@ def create( labels: Optional list of labels for the task is_actionable_message_enabled: Optional boolean indicating whether actionable notifications are enabled for this task actionable_message_metadata: Optional metadata for the action + source_name: The name of the source that created the task. Defaults to 'Agent'. Returns: Action: The created action object @@ -480,6 +486,7 @@ def create( labels=labels, is_actionable_message_enabled=is_actionable_message_enabled, actionable_message_metadata=actionable_message_metadata, + source_name=source_name, ) response = self.request( diff --git a/src/uipath/platform/common/interrupt_models.py b/src/uipath/platform/common/interrupt_models.py index 2d76a1349..6bf9b983a 100644 --- a/src/uipath/platform/common/interrupt_models.py +++ b/src/uipath/platform/common/interrupt_models.py @@ -60,6 +60,7 @@ class CreateTask(BaseModel): labels: list[str] | None = None is_actionable_message_enabled: bool | None = None actionable_message_metadata: dict[str, Any] | None = None + source_name: str = "Agent" class CreateEscalation(CreateTask): diff --git a/src/uipath/platform/resume_triggers/_protocol.py b/src/uipath/platform/resume_triggers/_protocol.py index 9d98460cd..2ed95f05b 100644 --- a/src/uipath/platform/resume_triggers/_protocol.py +++ b/src/uipath/platform/resume_triggers/_protocol.py @@ -553,6 +553,7 @@ async def _handle_task_trigger( labels=value.labels, is_actionable_message_enabled=value.is_actionable_message_enabled, actionable_message_metadata=value.actionable_message_metadata, + source_name=value.source_name, ) if not action: raise Exception("Failed to create action") diff --git a/tests/cli/test_hitl.py b/tests/cli/test_hitl.py index e1e3506e9..45464b891 100644 --- a/tests/cli/test_hitl.py +++ b/tests/cli/test_hitl.py @@ -841,6 +841,7 @@ async def test_create_resume_trigger_create_task( labels=None, is_actionable_message_enabled=None, actionable_message_metadata=None, + source_name="Agent", ) @pytest.mark.anyio