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..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 = [] @@ -126,6 +127,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": source_name, + "sourceId": project_id, + "taskSourceMetadata": task_source_metadata, + } + + json_payload["taskSource"] = task_source + return RequestSpec( method="POST", endpoint=Endpoint("/orchestrator_/tasks/AppTasks/CreateAppTask"), @@ -331,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. @@ -349,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 @@ -374,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( @@ -414,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. @@ -432,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 @@ -457,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 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" },