From 6be8c29832f6d55920420c2cfe6f858aecd57335 Mon Sep 17 00:00:00 2001 From: Sahil Wakode Date: Mon, 19 Oct 2026 16:04:04 +0530 Subject: [PATCH 1/4] feat(tasks): accept task_source_metadata when creating quick form tasks [ACTN-11909] --- .../platform/action_center/_tasks_service.py | 9 +++++++- .../tests/services/test_actions_service.py | 22 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/packages/uipath-platform/src/uipath/platform/action_center/_tasks_service.py b/packages/uipath-platform/src/uipath/platform/action_center/_tasks_service.py index 36e2a012e..8a956b4f0 100644 --- a/packages/uipath-platform/src/uipath/platform/action_center/_tasks_service.py +++ b/packages/uipath-platform/src/uipath/platform/action_center/_tasks_service.py @@ -274,6 +274,7 @@ def _create_quickform_spec( is_actionable_message_enabled: Optional[bool] = None, actionable_message_metadata: Optional[Dict[str, Any]] = None, source_name: str = "Agent", + task_source_metadata: Optional[Dict[str, Any]] = None, ) -> RequestSpec: """Build the RequestSpec for Orchestrator's GenericTasks/CreateTask endpoint. @@ -304,7 +305,7 @@ def _create_quickform_spec( ) if actionable_message_metadata is not None: json_payload["actionableMessageMetaData"] = actionable_message_metadata - _apply_task_source(json_payload, source_name) + _apply_task_source(json_payload, source_name, custom_metadata=task_source_metadata) return RequestSpec( method="POST", @@ -704,6 +705,7 @@ async def create_quickform_async( actionable_message_metadata: Optional[Dict[str, Any]] = None, creator_job_key: Optional[str] = None, source_name: str = "Agent", + task_source_metadata: Optional[Dict[str, Any]] = None, ) -> Task: """Creates a new QuickForm task asynchronously. @@ -737,6 +739,8 @@ async def create_quickform_async( creator_job_key: Optional. Identifies the job that triggered the inline schema creation/upsert. source_name: Source name on TaskSource. Defaults to 'Agent'. + task_source_metadata: Optional extra keys merged into + taskSource.taskSourceMetadata, same as in `create_async()`. Returns: Task: The created task object. @@ -754,6 +758,7 @@ async def create_quickform_async( is_actionable_message_enabled=is_actionable_message_enabled, actionable_message_metadata=actionable_message_metadata, source_name=source_name, + task_source_metadata=task_source_metadata, ) response = await self.request_async( @@ -794,6 +799,7 @@ def create_quickform( actionable_message_metadata: Optional[Dict[str, Any]] = None, creator_job_key: Optional[str] = None, source_name: str = "Agent", + task_source_metadata: Optional[Dict[str, Any]] = None, ) -> Task: """Create a new QuickForm task synchronously. @@ -812,6 +818,7 @@ def create_quickform( is_actionable_message_enabled=is_actionable_message_enabled, actionable_message_metadata=actionable_message_metadata, source_name=source_name, + task_source_metadata=task_source_metadata, ) response = self.request( diff --git a/packages/uipath-platform/tests/services/test_actions_service.py b/packages/uipath-platform/tests/services/test_actions_service.py index c70f2557f..6102c6fab 100644 --- a/packages/uipath-platform/tests/services/test_actions_service.py +++ b/packages/uipath-platform/tests/services/test_actions_service.py @@ -1071,6 +1071,28 @@ async def test_create_async_merges_task_source_metadata( assert task_source_metadata["InstanceId"] == "trace-1" +def test_create_quickform_merges_task_source_metadata( + qf_runner: Any, jit_debug_env: None +) -> None: + _, body = qf_runner(task_source_metadata={"ParentSpanId": "a3c27222815e80ca"}) + + task_source_metadata = body["taskSource"]["taskSourceMetadata"] + assert task_source_metadata["ParentSpanId"] == "a3c27222815e80ca" + assert task_source_metadata["InstanceId"] == "trace-1" + + +async def test_create_quickform_async_merges_task_source_metadata( + qf_runner_async: Any, jit_debug_env: None +) -> None: + _, body = await qf_runner_async( + task_source_metadata={"ParentSpanId": "a3c27222815e80ca"} + ) + + task_source_metadata = body["taskSource"]["taskSourceMetadata"] + assert task_source_metadata["ParentSpanId"] == "a3c27222815e80ca" + assert task_source_metadata["InstanceId"] == "trace-1" + + def test_create_omits_extra_task_source_metadata_when_unset( httpx_mock: HTTPXMock, service: TasksService, From 22c51653890a07b5a150d0292effd679d82e7626 Mon Sep 17 00:00:00 2001 From: Sahil Wakode Date: Mon, 19 Oct 2026 17:37:33 +0530 Subject: [PATCH 2/4] test(tasks): share the quick form task source assertions --- .../tests/services/test_actions_service.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/uipath-platform/tests/services/test_actions_service.py b/packages/uipath-platform/tests/services/test_actions_service.py index 6102c6fab..58e571c47 100644 --- a/packages/uipath-platform/tests/services/test_actions_service.py +++ b/packages/uipath-platform/tests/services/test_actions_service.py @@ -1071,14 +1071,17 @@ async def test_create_async_merges_task_source_metadata( assert task_source_metadata["InstanceId"] == "trace-1" +def _assert_quickform_task_source(body: dict[str, Any]) -> None: + task_source_metadata = body["taskSource"]["taskSourceMetadata"] + assert task_source_metadata["ParentSpanId"] == "a3c27222815e80ca" + assert task_source_metadata["InstanceId"] == "trace-1" + + def test_create_quickform_merges_task_source_metadata( qf_runner: Any, jit_debug_env: None ) -> None: _, body = qf_runner(task_source_metadata={"ParentSpanId": "a3c27222815e80ca"}) - - task_source_metadata = body["taskSource"]["taskSourceMetadata"] - assert task_source_metadata["ParentSpanId"] == "a3c27222815e80ca" - assert task_source_metadata["InstanceId"] == "trace-1" + _assert_quickform_task_source(body) async def test_create_quickform_async_merges_task_source_metadata( @@ -1087,10 +1090,7 @@ async def test_create_quickform_async_merges_task_source_metadata( _, body = await qf_runner_async( task_source_metadata={"ParentSpanId": "a3c27222815e80ca"} ) - - task_source_metadata = body["taskSource"]["taskSourceMetadata"] - assert task_source_metadata["ParentSpanId"] == "a3c27222815e80ca" - assert task_source_metadata["InstanceId"] == "trace-1" + _assert_quickform_task_source(body) def test_create_omits_extra_task_source_metadata_when_unset( From b4e93221cd02470df3450faaf8af5dca8b720a7a Mon Sep 17 00:00:00 2001 From: Sahil Wakode Date: Thu, 22 Oct 2026 14:52:54 +0530 Subject: [PATCH 3/4] refactor(tasks): accept task_source_metadata only on create_quickform_async --- .../platform/action_center/_tasks_service.py | 2 -- .../tests/services/test_actions_service.py | 18 ++++-------------- 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/packages/uipath-platform/src/uipath/platform/action_center/_tasks_service.py b/packages/uipath-platform/src/uipath/platform/action_center/_tasks_service.py index 8a956b4f0..7032c4249 100644 --- a/packages/uipath-platform/src/uipath/platform/action_center/_tasks_service.py +++ b/packages/uipath-platform/src/uipath/platform/action_center/_tasks_service.py @@ -799,7 +799,6 @@ def create_quickform( actionable_message_metadata: Optional[Dict[str, Any]] = None, creator_job_key: Optional[str] = None, source_name: str = "Agent", - task_source_metadata: Optional[Dict[str, Any]] = None, ) -> Task: """Create a new QuickForm task synchronously. @@ -818,7 +817,6 @@ def create_quickform( is_actionable_message_enabled=is_actionable_message_enabled, actionable_message_metadata=actionable_message_metadata, source_name=source_name, - task_source_metadata=task_source_metadata, ) response = self.request( diff --git a/packages/uipath-platform/tests/services/test_actions_service.py b/packages/uipath-platform/tests/services/test_actions_service.py index 58e571c47..63538cf99 100644 --- a/packages/uipath-platform/tests/services/test_actions_service.py +++ b/packages/uipath-platform/tests/services/test_actions_service.py @@ -1071,26 +1071,16 @@ async def test_create_async_merges_task_source_metadata( assert task_source_metadata["InstanceId"] == "trace-1" -def _assert_quickform_task_source(body: dict[str, Any]) -> None: - task_source_metadata = body["taskSource"]["taskSourceMetadata"] - assert task_source_metadata["ParentSpanId"] == "a3c27222815e80ca" - assert task_source_metadata["InstanceId"] == "trace-1" - - -def test_create_quickform_merges_task_source_metadata( - qf_runner: Any, jit_debug_env: None -) -> None: - _, body = qf_runner(task_source_metadata={"ParentSpanId": "a3c27222815e80ca"}) - _assert_quickform_task_source(body) - - async def test_create_quickform_async_merges_task_source_metadata( qf_runner_async: Any, jit_debug_env: None ) -> None: _, body = await qf_runner_async( task_source_metadata={"ParentSpanId": "a3c27222815e80ca"} ) - _assert_quickform_task_source(body) + + task_source_metadata = body["taskSource"]["taskSourceMetadata"] + assert task_source_metadata["ParentSpanId"] == "a3c27222815e80ca" + assert task_source_metadata["InstanceId"] == "trace-1" def test_create_omits_extra_task_source_metadata_when_unset( From ff73d765fdfa74f45cfa7a33eee3e533de617d27 Mon Sep 17 00:00:00 2001 From: Sahil Wakode Date: Thu, 22 Oct 2026 15:11:03 +0530 Subject: [PATCH 4/4] chore(tasks): bump uipath-platform to 0.2.42 --- packages/uipath-platform/pyproject.toml | 2 +- packages/uipath-platform/uv.lock | 2 +- packages/uipath/uv.lock | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/uipath-platform/pyproject.toml b/packages/uipath-platform/pyproject.toml index c3e51954e..512c3a940 100644 --- a/packages/uipath-platform/pyproject.toml +++ b/packages/uipath-platform/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "uipath-platform" -version = "0.2.41" +version = "0.2.42" description = "HTTP client library for programmatic access to UiPath Platform" readme = { file = "README.md", content-type = "text/markdown" } requires-python = ">=3.11" diff --git a/packages/uipath-platform/uv.lock b/packages/uipath-platform/uv.lock index 5c59bdb8e..3ef58613d 100644 --- a/packages/uipath-platform/uv.lock +++ b/packages/uipath-platform/uv.lock @@ -1095,7 +1095,7 @@ dev = [ [[package]] name = "uipath-platform" -version = "0.2.41" +version = "0.2.42" source = { editable = "." } dependencies = [ { name = "anyio" }, diff --git a/packages/uipath/uv.lock b/packages/uipath/uv.lock index 3e9313fca..55f3be357 100644 --- a/packages/uipath/uv.lock +++ b/packages/uipath/uv.lock @@ -2762,7 +2762,7 @@ wheels = [ [[package]] name = "uipath-platform" -version = "0.2.41" +version = "0.2.42" source = { editable = "../uipath-platform" } dependencies = [ { name = "anyio" },