diff --git a/packages/uipath-platform/pyproject.toml b/packages/uipath-platform/pyproject.toml index 215882460..dfc759f4d 100644 --- a/packages/uipath-platform/pyproject.toml +++ b/packages/uipath-platform/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "uipath-platform" -version = "0.1.59" +version = "0.1.60" 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/src/uipath/platform/context_grounding/_context_grounding_service.py b/packages/uipath-platform/src/uipath/platform/context_grounding/_context_grounding_service.py index 6bff3f77f..273e61bef 100644 --- a/packages/uipath-platform/src/uipath/platform/context_grounding/_context_grounding_service.py +++ b/packages/uipath-platform/src/uipath/platform/context_grounding/_context_grounding_service.py @@ -696,8 +696,7 @@ def create_ephemeral_index( Returns: ContextGroundingIndex: The created index information. """ - if folder_key is not None or folder_path is not None: - folder_key = self._resolve_folder_key(folder_key, folder_path) + folder_key = self._resolve_folder_key(folder_key, folder_path) spec = self._create_ephemeral_spec( usage, attachments, @@ -733,8 +732,7 @@ async def create_ephemeral_index_async( Returns: ContextGroundingIndex: The created index information. """ - if folder_key is not None or folder_path is not None: - folder_key = self._resolve_folder_key(folder_key, folder_path) + folder_key = self._resolve_folder_key(folder_key, folder_path) spec = self._create_ephemeral_spec( usage, attachments, diff --git a/packages/uipath-platform/tests/services/test_context_grounding_service.py b/packages/uipath-platform/tests/services/test_context_grounding_service.py index 70c529ec6..cbc3aced2 100644 --- a/packages/uipath-platform/tests/services/test_context_grounding_service.py +++ b/packages/uipath-platform/tests/services/test_context_grounding_service.py @@ -3177,6 +3177,19 @@ def test_create_ephemeral_index( ) -> None: import uuid + httpx_mock.add_response( + url=f"{base_url}{org}{tenant}/orchestrator_/api/FoldersNavigation/GetFoldersForCurrentUser?searchText=test-folder-path&skip=0&take=20", + status_code=200, + json={ + "PageItems": [ + { + "Key": "test-folder-key", + "FullyQualifiedName": "test-folder-path", + } + ] + }, + ) + httpx_mock.add_response( url=f"{base_url}{org}{tenant}/ecs_/v2/indexes/createephemeral", status_code=200, @@ -3202,22 +3215,27 @@ def test_create_ephemeral_index( if sent_requests is None: raise Exception("No request was sent") - assert sent_requests[0].method == "POST" - assert ( - sent_requests[0].url - == f"{base_url}{org}{tenant}/ecs_/v2/indexes/createephemeral" + create_request = next( + r + for r in sent_requests + if str(r.url).endswith("/ecs_/v2/indexes/createephemeral") ) + assert create_request.method == "POST" - request_data = json.loads(sent_requests[0].content) + request_data = json.loads(create_request.content) assert request_data["usage"] == "DeepRAG" assert "dataSource" in request_data assert request_data["dataSource"]["attachments"] == [ str(att) for att in attachment_ids ] - assert HEADER_USER_AGENT in sent_requests[0].headers + # Ambient folder context is resolved and scopes the create, matching how + # retrieve_by_id resolves the folder for the subsequent GET. + assert create_request.headers["x-uipath-folderkey"] == "test-folder-key" + + assert HEADER_USER_AGENT in create_request.headers assert ( - sent_requests[0].headers[HEADER_USER_AGENT] + create_request.headers[HEADER_USER_AGENT] == f"UiPath.Python.Sdk/UiPath.Python.Sdk.Activities.ContextGroundingService.create_ephemeral_index/{version}" ) @@ -3233,6 +3251,19 @@ async def test_create_ephemeral_index_async( ) -> None: import uuid + httpx_mock.add_response( + url=f"{base_url}{org}{tenant}/orchestrator_/api/FoldersNavigation/GetFoldersForCurrentUser?searchText=test-folder-path&skip=0&take=20", + status_code=200, + json={ + "PageItems": [ + { + "Key": "test-folder-key", + "FullyQualifiedName": "test-folder-path", + } + ] + }, + ) + httpx_mock.add_response( url=f"{base_url}{org}{tenant}/ecs_/v2/indexes/createephemeral", status_code=200, @@ -3258,22 +3289,27 @@ async def test_create_ephemeral_index_async( if sent_requests is None: raise Exception("No request was sent") - assert sent_requests[0].method == "POST" - assert ( - sent_requests[0].url - == f"{base_url}{org}{tenant}/ecs_/v2/indexes/createephemeral" + create_request = next( + r + for r in sent_requests + if str(r.url).endswith("/ecs_/v2/indexes/createephemeral") ) + assert create_request.method == "POST" - request_data = json.loads(sent_requests[0].content) + request_data = json.loads(create_request.content) assert request_data["usage"] == "DeepRAG" assert "dataSource" in request_data assert request_data["dataSource"]["attachments"] == [ str(att) for att in attachment_ids ] - assert HEADER_USER_AGENT in sent_requests[0].headers + # Ambient folder context is resolved and scopes the create, matching how + # retrieve_by_id resolves the folder for the subsequent GET. + assert create_request.headers["x-uipath-folderkey"] == "test-folder-key" + + assert HEADER_USER_AGENT in create_request.headers assert ( - sent_requests[0].headers[HEADER_USER_AGENT] + create_request.headers[HEADER_USER_AGENT] == f"UiPath.Python.Sdk/UiPath.Python.Sdk.Activities.ContextGroundingService.create_ephemeral_index_async/{version}" ) diff --git a/packages/uipath-platform/uv.lock b/packages/uipath-platform/uv.lock index dabbd63ad..084f3efb8 100644 --- a/packages/uipath-platform/uv.lock +++ b/packages/uipath-platform/uv.lock @@ -1095,7 +1095,7 @@ dev = [ [[package]] name = "uipath-platform" -version = "0.1.59" +version = "0.1.60" source = { editable = "." } dependencies = [ { name = "httpx" },