Skip to content

Commit 4443fe0

Browse files
mjnoviceclaude
andcommitted
fix: resolve folder key from folder_path for serverless environments
Per PR review: _resolve_folder now matches ContextGroundingService pattern — resolves folder_key from folder_path via FolderService when UIPATH_FOLDER_KEY is not set (serverless/robot environments only have UIPATH_FOLDER_PATH). MemoryService now takes a FolderService dependency, wired through the UiPath class. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 166d400 commit 4443fe0

2 files changed

Lines changed: 28 additions & 3 deletions

File tree

packages/uipath-platform/src/uipath/platform/_uipath.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ def context_grounding(self) -> ContextGroundingService:
115115

116116
@property
117117
def memory(self) -> MemoryService:
118-
return MemoryService(self._config, self._execution_context)
118+
return MemoryService(self._config, self._execution_context, self.folders)
119119

120120
@property
121121
def documents(self) -> DocumentsService:

packages/uipath-platform/src/uipath/platform/memory/_memory_service.py

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from ..common._execution_context import UiPathExecutionContext
1515
from ..common._folder_context import FolderContext, header_folder
1616
from ..common._models import Endpoint, RequestSpec
17+
from ..orchestrator._folder_service import FolderService
1718
from .memory import (
1819
EpisodicMemoryCreateRequest,
1920
EpisodicMemoryIndex,
@@ -45,8 +46,10 @@ def __init__(
4546
self,
4647
config: UiPathApiConfig,
4748
execution_context: UiPathExecutionContext,
49+
folders_service: FolderService,
4850
) -> None:
4951
super().__init__(config=config, execution_context=execution_context)
52+
self._folders_service = folders_service
5053

5154
# ── Index operations (ECS) ─────────────────────────────────────────
5255

@@ -422,8 +425,30 @@ async def delete_memory_async(
422425

423426
# ── Private spec builders ─────────────────────────────────────────
424427

425-
def _resolve_folder(self, folder_key: Optional[str]) -> Optional[str]:
426-
return folder_key or self._folder_key
428+
def _resolve_folder(
429+
self,
430+
folder_key: Optional[str] = None,
431+
folder_path: Optional[str] = None,
432+
) -> Optional[str]:
433+
"""Resolve the folder key, supporting folder_path lookup for serverless.
434+
435+
Priority:
436+
1. Explicit folder_key argument
437+
2. Explicit folder_path argument → resolve via FolderService
438+
3. UIPATH_FOLDER_KEY env var (via FolderContext._folder_key)
439+
4. UIPATH_FOLDER_PATH env var → resolve via FolderService
440+
"""
441+
if folder_key is None and folder_path is not None:
442+
folder_key = self._folders_service.retrieve_key(folder_path=folder_path)
443+
444+
if folder_key is None and folder_path is None:
445+
folder_key = self._folder_key or (
446+
self._folders_service.retrieve_key(folder_path=self._folder_path)
447+
if self._folder_path
448+
else None
449+
)
450+
451+
return folder_key
427452

428453
# -- ECS specs --
429454

0 commit comments

Comments
 (0)