From c62de318fed51056f235f6cf0ea580e5fa8bb206 Mon Sep 17 00:00:00 2001 From: Mayank Jha Date: Thu, 19 Mar 2026 17:35:33 -0700 Subject: [PATCH 1/5] feat: scaffold MemoryService for Agent Episodic Memory (URT migration) Add MemoryService client backed by ECS (/ecs_/memory/...) endpoints for Agent Episodic Memory. This enables dynamic few-shot retrieval where agents query past episodes at execution start and inject them as examples into the system prompt. New files: - memory.py: Pydantic models (MemoryField, MemoryItem, MemoryQueryRequest, etc.) - _memory_service.py: MemoryService with create, ingest, query, retrieve, delete, list - __init__.py: Module exports Also registers sdk.memory on the UiPath class. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../src/uipath/platform/_uipath.py | 5 + .../src/uipath/platform/memory/__init__.py | 25 + .../uipath/platform/memory/_memory_service.py | 428 ++++++++++++++++++ .../src/uipath/platform/memory/memory.py | 89 ++++ 4 files changed, 547 insertions(+) create mode 100644 packages/uipath-platform/src/uipath/platform/memory/__init__.py create mode 100644 packages/uipath-platform/src/uipath/platform/memory/_memory_service.py create mode 100644 packages/uipath-platform/src/uipath/platform/memory/memory.py diff --git a/packages/uipath-platform/src/uipath/platform/_uipath.py b/packages/uipath-platform/src/uipath/platform/_uipath.py index 87c3a17f0..eb7fe1d90 100644 --- a/packages/uipath-platform/src/uipath/platform/_uipath.py +++ b/packages/uipath-platform/src/uipath/platform/_uipath.py @@ -18,6 +18,7 @@ from .common.auth import resolve_config_from_env from .connections import ConnectionsService from .context_grounding import ContextGroundingService +from .memory import MemoryService from .documents import DocumentsService from .entities import EntitiesService from .errors import BaseUrlMissingError, SecretMissingError @@ -113,6 +114,10 @@ def context_grounding(self) -> ContextGroundingService: self.buckets, ) + @property + def memory(self) -> MemoryService: + return MemoryService(self._config, self._execution_context) + @property def documents(self) -> DocumentsService: return DocumentsService(self._config, self._execution_context) diff --git a/packages/uipath-platform/src/uipath/platform/memory/__init__.py b/packages/uipath-platform/src/uipath/platform/memory/__init__.py new file mode 100644 index 000000000..70f6f3b1d --- /dev/null +++ b/packages/uipath-platform/src/uipath/platform/memory/__init__.py @@ -0,0 +1,25 @@ +"""Init file for memory module.""" + +from ._memory_service import MemoryService +from .memory import ( + MemoryField, + MemoryIngestRequest, + MemoryItem, + MemoryListResponse, + MemoryQueryRequest, + MemoryQueryResponse, + MemoryQueryResult, + MemoryResource, +) + +__all__ = [ + "MemoryField", + "MemoryIngestRequest", + "MemoryItem", + "MemoryListResponse", + "MemoryQueryRequest", + "MemoryQueryResponse", + "MemoryQueryResult", + "MemoryResource", + "MemoryService", +] diff --git a/packages/uipath-platform/src/uipath/platform/memory/_memory_service.py b/packages/uipath-platform/src/uipath/platform/memory/_memory_service.py new file mode 100644 index 000000000..6cd06b4f4 --- /dev/null +++ b/packages/uipath-platform/src/uipath/platform/memory/_memory_service.py @@ -0,0 +1,428 @@ +"""Memory service for Agent Episodic Memory backed by ECS.""" + +from typing import Optional + +from uipath.core.tracing import traced + +from ..common._base_service import BaseService +from ..common._config import UiPathApiConfig +from ..common._execution_context import UiPathExecutionContext +from ..common._folder_context import FolderContext, header_folder +from ..common._models import Endpoint, RequestSpec +from .memory import ( + MemoryIngestRequest, + MemoryItem, + MemoryListResponse, + MemoryQueryRequest, + MemoryQueryResponse, + MemoryResource, +) + + +class MemoryService(FolderContext, BaseService): + """Service for Agent Episodic Memory backed by the ECS service. + + Agent Memory allows agents to persist context across jobs using dynamic + few-shot retrieval. Memory resources are folder-scoped (like CG indexes) + and use Index.Create/Read/Update/Delete permissions. + """ + + def __init__( + self, + config: UiPathApiConfig, + execution_context: UiPathExecutionContext, + ) -> None: + super().__init__(config=config, execution_context=execution_context) + + # ── Public methods ──────────────────────────────────────────────── + + @traced(name="memory_create", run_type="uipath") + def create( + self, + name: str, + description: Optional[str] = None, + folder_key: Optional[str] = None, + ) -> MemoryResource: + """Create a new memory resource. + + Args: + name: The name of the memory resource. + description: Optional description. + folder_key: The folder key for the operation. + + Returns: + MemoryResource: The created memory resource. + """ + spec = self._create_spec(name, description, folder_key) + response = self.request( + spec.method, + spec.endpoint, + json=spec.json, + headers=spec.headers, + ).json() + return MemoryResource.model_validate(response) + + @traced(name="memory_create", run_type="uipath") + async def create_async( + self, + name: str, + description: Optional[str] = None, + folder_key: Optional[str] = None, + ) -> MemoryResource: + """Asynchronously create a new memory resource. + + Args: + name: The name of the memory resource. + description: Optional description. + folder_key: The folder key for the operation. + + Returns: + MemoryResource: The created memory resource. + """ + spec = self._create_spec(name, description, folder_key) + response = ( + await self.request_async( + spec.method, + spec.endpoint, + json=spec.json, + headers=spec.headers, + ) + ).json() + return MemoryResource.model_validate(response) + + @traced(name="memory_ingest", run_type="uipath") + def ingest( + self, + name: str, + request: MemoryIngestRequest, + folder_key: Optional[str] = None, + ) -> None: + """Ingest a memory item into the specified memory resource. + + Args: + name: The name of the memory resource. + request: The ingest request payload. + folder_key: The folder key for the operation. + """ + spec = self._ingest_spec(name, folder_key) + self.request( + spec.method, + spec.endpoint, + json=request.model_dump(by_alias=True, exclude_none=True), + headers=spec.headers, + ) + + @traced(name="memory_ingest", run_type="uipath") + async def ingest_async( + self, + name: str, + request: MemoryIngestRequest, + folder_key: Optional[str] = None, + ) -> None: + """Asynchronously ingest a memory item into the specified memory resource. + + Args: + name: The name of the memory resource. + request: The ingest request payload. + folder_key: The folder key for the operation. + """ + spec = self._ingest_spec(name, folder_key) + await self.request_async( + spec.method, + spec.endpoint, + json=request.model_dump(by_alias=True, exclude_none=True), + headers=spec.headers, + ) + + @traced(name="memory_query", run_type="uipath") + def query( + self, + name: str, + request: MemoryQueryRequest, + folder_key: Optional[str] = None, + ) -> MemoryQueryResponse: + """Perform semantic search on memory. + + Args: + name: The name of the memory resource. + request: The query request payload. + folder_key: The folder key for the operation. + + Returns: + MemoryQueryResponse: The query results. + """ + spec = self._query_spec(name, folder_key) + response = self.request( + spec.method, + spec.endpoint, + json=request.model_dump(by_alias=True, exclude_none=True), + headers=spec.headers, + ).json() + return MemoryQueryResponse.model_validate(response) + + @traced(name="memory_query", run_type="uipath") + async def query_async( + self, + name: str, + request: MemoryQueryRequest, + folder_key: Optional[str] = None, + ) -> MemoryQueryResponse: + """Asynchronously perform semantic search on memory. + + Args: + name: The name of the memory resource. + request: The query request payload. + folder_key: The folder key for the operation. + + Returns: + MemoryQueryResponse: The query results. + """ + spec = self._query_spec(name, folder_key) + response = ( + await self.request_async( + spec.method, + spec.endpoint, + json=request.model_dump(by_alias=True, exclude_none=True), + headers=spec.headers, + ) + ).json() + return MemoryQueryResponse.model_validate(response) + + @traced(name="memory_retrieve", run_type="uipath") + def retrieve( + self, + name: str, + memory_id: str, + folder_key: Optional[str] = None, + ) -> MemoryItem: + """Retrieve a single memory item by ID. + + Args: + name: The name of the memory resource. + memory_id: The ID of the memory item to retrieve. + folder_key: The folder key for the operation. + + Returns: + MemoryItem: The retrieved memory item. + """ + spec = self._retrieve_spec(name, memory_id, folder_key) + response = self.request( + spec.method, + spec.endpoint, + headers=spec.headers, + ).json() + return MemoryItem.model_validate(response) + + @traced(name="memory_retrieve", run_type="uipath") + async def retrieve_async( + self, + name: str, + memory_id: str, + folder_key: Optional[str] = None, + ) -> MemoryItem: + """Asynchronously retrieve a single memory item by ID. + + Args: + name: The name of the memory resource. + memory_id: The ID of the memory item to retrieve. + folder_key: The folder key for the operation. + + Returns: + MemoryItem: The retrieved memory item. + """ + spec = self._retrieve_spec(name, memory_id, folder_key) + response = ( + await self.request_async( + spec.method, + spec.endpoint, + headers=spec.headers, + ) + ).json() + return MemoryItem.model_validate(response) + + @traced(name="memory_delete", run_type="uipath") + def delete( + self, + name: str, + memory_id: str, + folder_key: Optional[str] = None, + ) -> None: + """Delete a memory item by ID. + + Args: + name: The name of the memory resource. + memory_id: The ID of the memory item to delete. + folder_key: The folder key for the operation. + """ + spec = self._delete_spec(name, memory_id, folder_key) + self.request( + spec.method, + spec.endpoint, + headers=spec.headers, + ) + + @traced(name="memory_delete", run_type="uipath") + async def delete_async( + self, + name: str, + memory_id: str, + folder_key: Optional[str] = None, + ) -> None: + """Asynchronously delete a memory item by ID. + + Args: + name: The name of the memory resource. + memory_id: The ID of the memory item to delete. + folder_key: The folder key for the operation. + """ + spec = self._delete_spec(name, memory_id, folder_key) + await self.request_async( + spec.method, + spec.endpoint, + headers=spec.headers, + ) + + @traced(name="memory_list", run_type="uipath") + def list( + self, + name: str, + folder_key: Optional[str] = None, + ) -> MemoryListResponse: + """List all memory items in a memory resource. + + Args: + name: The name of the memory resource. + folder_key: The folder key for the operation. + + Returns: + MemoryListResponse: The list of memory items. + """ + spec = self._list_spec(name, folder_key) + response = self.request( + spec.method, + spec.endpoint, + headers=spec.headers, + ).json() + return MemoryListResponse.model_validate(response) + + @traced(name="memory_list", run_type="uipath") + async def list_async( + self, + name: str, + folder_key: Optional[str] = None, + ) -> MemoryListResponse: + """Asynchronously list all memory items in a memory resource. + + Args: + name: The name of the memory resource. + folder_key: The folder key for the operation. + + Returns: + MemoryListResponse: The list of memory items. + """ + spec = self._list_spec(name, folder_key) + response = ( + await self.request_async( + spec.method, + spec.endpoint, + headers=spec.headers, + ) + ).json() + return MemoryListResponse.model_validate(response) + + # ── Private spec builders ───────────────────────────────────────── + + def _resolve_folder(self, folder_key: Optional[str]) -> Optional[str]: + """Resolve the folder key, falling back to the context default.""" + return folder_key or self._folder_key + + def _create_spec( + self, + name: str, + description: Optional[str], + folder_key: Optional[str] = None, + ) -> RequestSpec: + folder_key = self._resolve_folder(folder_key) + return RequestSpec( + method="POST", + endpoint=Endpoint("/ecs_/memory/create"), + json={ + "name": name, + "description": description, + }, + headers={ + **header_folder(folder_key, None), + }, + ) + + def _ingest_spec( + self, + name: str, + folder_key: Optional[str] = None, + ) -> RequestSpec: + folder_key = self._resolve_folder(folder_key) + return RequestSpec( + method="POST", + endpoint=Endpoint(f"/ecs_/memory/{name}/ingest"), + headers={ + **header_folder(folder_key, None), + }, + ) + + def _query_spec( + self, + name: str, + folder_key: Optional[str] = None, + ) -> RequestSpec: + folder_key = self._resolve_folder(folder_key) + return RequestSpec( + method="POST", + endpoint=Endpoint(f"/ecs_/memory/{name}/query"), + headers={ + **header_folder(folder_key, None), + }, + ) + + def _retrieve_spec( + self, + name: str, + memory_id: str, + folder_key: Optional[str] = None, + ) -> RequestSpec: + folder_key = self._resolve_folder(folder_key) + return RequestSpec( + method="GET", + endpoint=Endpoint(f"/ecs_/memory/{name}/{memory_id}"), + headers={ + **header_folder(folder_key, None), + }, + ) + + def _delete_spec( + self, + name: str, + memory_id: str, + folder_key: Optional[str] = None, + ) -> RequestSpec: + folder_key = self._resolve_folder(folder_key) + return RequestSpec( + method="DELETE", + endpoint=Endpoint(f"/ecs_/memory/{name}/{memory_id}"), + headers={ + **header_folder(folder_key, None), + }, + ) + + def _list_spec( + self, + name: str, + folder_key: Optional[str] = None, + ) -> RequestSpec: + folder_key = self._resolve_folder(folder_key) + return RequestSpec( + method="GET", + endpoint=Endpoint(f"/ecs_/memory/{name}/list"), + headers={ + **header_folder(folder_key, None), + }, + ) diff --git a/packages/uipath-platform/src/uipath/platform/memory/memory.py b/packages/uipath-platform/src/uipath/platform/memory/memory.py new file mode 100644 index 000000000..4c9c78989 --- /dev/null +++ b/packages/uipath-platform/src/uipath/platform/memory/memory.py @@ -0,0 +1,89 @@ +"""Pydantic models for the Memory API.""" + +from typing import List, Optional + +from pydantic import BaseModel, ConfigDict, Field + + +class MemoryField(BaseModel): + """A field name/value pair used in memory inputs and outputs.""" + + model_config = ConfigDict(populate_by_name=True) + + field_name: str = Field(..., alias="fieldName") + field_value: str = Field(..., alias="fieldValue") + + +class MemoryItem(BaseModel): + """A single memory item containing inputs, outputs, and trace context.""" + + model_config = ConfigDict(populate_by_name=True) + + id: Optional[str] = Field(None, alias="id") + trace_id: Optional[str] = Field(None, alias="traceId") + feedback_item_id: Optional[str] = Field(None, alias="feedbackItemId") + inputs: List[MemoryField] = Field(default_factory=list, alias="inputs") + outputs: List[MemoryField] = Field(default_factory=list, alias="outputs") + abbreviated_trace: Optional[List[str]] = Field(None, alias="abbreviatedTrace") + partition_key: Optional[str] = Field(None, alias="partitionKey") + + +class MemoryQueryRequest(BaseModel): + """Request payload for semantic search on memory.""" + + model_config = ConfigDict(populate_by_name=True) + + inputs: List[MemoryField] = Field(..., alias="inputs") + outputs: Optional[List[MemoryField]] = Field(None, alias="outputs") + abbreviated_trace: Optional[List[str]] = Field(None, alias="abbreviatedTrace") + top_k: int = Field(default=5, alias="topK") + threshold: Optional[float] = Field(None, alias="threshold") + partition_key: Optional[str] = Field(None, alias="partitionKey") + + +class MemoryQueryResult(BaseModel): + """A single result from a memory query.""" + + model_config = ConfigDict(populate_by_name=True) + + memory_item: MemoryItem = Field(..., alias="memoryItem") + score: float = Field(..., alias="score") + + +class MemoryQueryResponse(BaseModel): + """Response from a memory query operation.""" + + model_config = ConfigDict(populate_by_name=True) + + results: List[MemoryQueryResult] = Field(default_factory=list, alias="results") + + +class MemoryIngestRequest(BaseModel): + """Request payload for ingesting a memory item.""" + + model_config = ConfigDict(populate_by_name=True) + + trace_id: Optional[str] = Field(None, alias="traceId") + feedback_item_id: Optional[str] = Field(None, alias="feedbackItemId") + inputs: List[MemoryField] = Field(..., alias="inputs") + outputs: List[MemoryField] = Field(default_factory=list, alias="outputs") + abbreviated_trace: Optional[List[str]] = Field(None, alias="abbreviatedTrace") + partition_key: Optional[str] = Field(None, alias="partitionKey") + + +class MemoryResource(BaseModel): + """A memory resource (folder-scoped, similar to CG indexes).""" + + model_config = ConfigDict(populate_by_name=True) + + id: Optional[str] = Field(None, alias="id") + name: str = Field(..., alias="name") + description: Optional[str] = Field(None, alias="description") + + +class MemoryListResponse(BaseModel): + """Response from listing memory items.""" + + model_config = ConfigDict(populate_by_name=True) + + value: List[MemoryItem] = Field(default_factory=list, alias="value") From 08041fef51ab0e609bd9daa147e4d6943668b0a0 Mon Sep 17 00:00:00 2001 From: Mayank Jha Date: Mon, 23 Mar 2026 14:51:10 -0700 Subject: [PATCH 2/5] fix: sort MemoryService import to fix ruff I001 lint error Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/uipath-platform/src/uipath/platform/_uipath.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/uipath-platform/src/uipath/platform/_uipath.py b/packages/uipath-platform/src/uipath/platform/_uipath.py index eb7fe1d90..998aec7e5 100644 --- a/packages/uipath-platform/src/uipath/platform/_uipath.py +++ b/packages/uipath-platform/src/uipath/platform/_uipath.py @@ -18,11 +18,11 @@ from .common.auth import resolve_config_from_env from .connections import ConnectionsService from .context_grounding import ContextGroundingService -from .memory import MemoryService from .documents import DocumentsService from .entities import EntitiesService from .errors import BaseUrlMissingError, SecretMissingError from .guardrails import GuardrailsService +from .memory import MemoryService from .orchestrator import ( AssetsService, AttachmentsService, From 8b8ddeff44ec3f98424ebf88c85bbbdb6ea7eb32 Mon Sep 17 00:00:00 2001 From: Mayank Jha Date: Mon, 23 Mar 2026 14:54:10 -0700 Subject: [PATCH 3/5] chore: bump uipath-platform version to 0.1.5 Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/uipath-platform/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/uipath-platform/pyproject.toml b/packages/uipath-platform/pyproject.toml index dcc4da3fc..8a9dce092 100644 --- a/packages/uipath-platform/pyproject.toml +++ b/packages/uipath-platform/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "uipath-platform" -version = "0.1.4" +version = "0.1.5" description = "HTTP client library for programmatic access to UiPath Platform" readme = { file = "README.md", content-type = "text/markdown" } requires-python = ">=3.11" From e6e23a6d72705a5330b32b6a505af104dc68d948 Mon Sep 17 00:00:00 2001 From: Mayank Jha Date: Mon, 23 Mar 2026 14:57:43 -0700 Subject: [PATCH 4/5] fix: resolve ruff I001 import sorting errors across platform package Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/uipath-platform/src/uipath/platform/_uipath.py | 1 - packages/uipath-platform/src/uipath/platform/common/auth.py | 1 - .../src/uipath/platform/common/interrupt_models.py | 1 - .../platform/context_grounding/context_grounding_payloads.py | 1 - .../src/uipath/platform/resume_triggers/_protocol.py | 1 - 5 files changed, 5 deletions(-) diff --git a/packages/uipath-platform/src/uipath/platform/_uipath.py b/packages/uipath-platform/src/uipath/platform/_uipath.py index 998aec7e5..a9ece13e1 100644 --- a/packages/uipath-platform/src/uipath/platform/_uipath.py +++ b/packages/uipath-platform/src/uipath/platform/_uipath.py @@ -2,7 +2,6 @@ from typing import Optional from pydantic import ValidationError - from uipath.platform.automation_tracker import AutomationTrackerService from .action_center import TasksService diff --git a/packages/uipath-platform/src/uipath/platform/common/auth.py b/packages/uipath-platform/src/uipath/platform/common/auth.py index 885a0ef1b..bd03b879c 100644 --- a/packages/uipath-platform/src/uipath/platform/common/auth.py +++ b/packages/uipath-platform/src/uipath/platform/common/auth.py @@ -4,7 +4,6 @@ from typing import Optional from pydantic import BaseModel - from uipath.platform.common.constants import ( ENV_BASE_URL, ENV_UIPATH_ACCESS_TOKEN, diff --git a/packages/uipath-platform/src/uipath/platform/common/interrupt_models.py b/packages/uipath-platform/src/uipath/platform/common/interrupt_models.py index 100b601bd..f01d64d81 100644 --- a/packages/uipath-platform/src/uipath/platform/common/interrupt_models.py +++ b/packages/uipath-platform/src/uipath/platform/common/interrupt_models.py @@ -3,7 +3,6 @@ from typing import Annotated, Any from pydantic import BaseModel, ConfigDict, Field, model_validator - from uipath.platform.context_grounding.context_grounding_index import ( ContextGroundingIndex, ) diff --git a/packages/uipath-platform/src/uipath/platform/context_grounding/context_grounding_payloads.py b/packages/uipath-platform/src/uipath/platform/context_grounding/context_grounding_payloads.py index a28903462..d8f5a65cc 100644 --- a/packages/uipath-platform/src/uipath/platform/context_grounding/context_grounding_payloads.py +++ b/packages/uipath-platform/src/uipath/platform/context_grounding/context_grounding_payloads.py @@ -5,7 +5,6 @@ from pydantic import BaseModel, ConfigDict, Field, model_validator from pydantic.alias_generators import to_camel - from uipath.platform.common.constants import ( CONFLUENCE_DATA_SOURCE_REQUEST, DROPBOX_DATA_SOURCE_REQUEST, diff --git a/packages/uipath-platform/src/uipath/platform/resume_triggers/_protocol.py b/packages/uipath-platform/src/uipath/platform/resume_triggers/_protocol.py index 60a169da9..8d163eb48 100644 --- a/packages/uipath-platform/src/uipath/platform/resume_triggers/_protocol.py +++ b/packages/uipath-platform/src/uipath/platform/resume_triggers/_protocol.py @@ -17,7 +17,6 @@ UiPathResumeTriggerName, UiPathResumeTriggerType, ) - from uipath.platform import UiPath from uipath.platform.action_center import Task from uipath.platform.action_center.tasks import TaskStatus From 239b78789798794dfe365617bb6b7deb29e34e7a Mon Sep 17 00:00:00 2001 From: Mayank Jha Date: Mon, 23 Mar 2026 15:00:23 -0700 Subject: [PATCH 5/5] chore: update uv.lock files for uipath-platform 0.1.5 Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/uipath-platform/src/uipath/platform/_uipath.py | 1 + packages/uipath-platform/src/uipath/platform/common/auth.py | 1 + .../src/uipath/platform/common/interrupt_models.py | 1 + .../platform/context_grounding/context_grounding_payloads.py | 1 + .../src/uipath/platform/resume_triggers/_protocol.py | 1 + packages/uipath-platform/uv.lock | 2 +- packages/uipath/uv.lock | 5 ++++- 7 files changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/uipath-platform/src/uipath/platform/_uipath.py b/packages/uipath-platform/src/uipath/platform/_uipath.py index a9ece13e1..998aec7e5 100644 --- a/packages/uipath-platform/src/uipath/platform/_uipath.py +++ b/packages/uipath-platform/src/uipath/platform/_uipath.py @@ -2,6 +2,7 @@ from typing import Optional from pydantic import ValidationError + from uipath.platform.automation_tracker import AutomationTrackerService from .action_center import TasksService diff --git a/packages/uipath-platform/src/uipath/platform/common/auth.py b/packages/uipath-platform/src/uipath/platform/common/auth.py index bd03b879c..885a0ef1b 100644 --- a/packages/uipath-platform/src/uipath/platform/common/auth.py +++ b/packages/uipath-platform/src/uipath/platform/common/auth.py @@ -4,6 +4,7 @@ from typing import Optional from pydantic import BaseModel + from uipath.platform.common.constants import ( ENV_BASE_URL, ENV_UIPATH_ACCESS_TOKEN, diff --git a/packages/uipath-platform/src/uipath/platform/common/interrupt_models.py b/packages/uipath-platform/src/uipath/platform/common/interrupt_models.py index f01d64d81..100b601bd 100644 --- a/packages/uipath-platform/src/uipath/platform/common/interrupt_models.py +++ b/packages/uipath-platform/src/uipath/platform/common/interrupt_models.py @@ -3,6 +3,7 @@ from typing import Annotated, Any from pydantic import BaseModel, ConfigDict, Field, model_validator + from uipath.platform.context_grounding.context_grounding_index import ( ContextGroundingIndex, ) diff --git a/packages/uipath-platform/src/uipath/platform/context_grounding/context_grounding_payloads.py b/packages/uipath-platform/src/uipath/platform/context_grounding/context_grounding_payloads.py index d8f5a65cc..a28903462 100644 --- a/packages/uipath-platform/src/uipath/platform/context_grounding/context_grounding_payloads.py +++ b/packages/uipath-platform/src/uipath/platform/context_grounding/context_grounding_payloads.py @@ -5,6 +5,7 @@ from pydantic import BaseModel, ConfigDict, Field, model_validator from pydantic.alias_generators import to_camel + from uipath.platform.common.constants import ( CONFLUENCE_DATA_SOURCE_REQUEST, DROPBOX_DATA_SOURCE_REQUEST, diff --git a/packages/uipath-platform/src/uipath/platform/resume_triggers/_protocol.py b/packages/uipath-platform/src/uipath/platform/resume_triggers/_protocol.py index 8d163eb48..60a169da9 100644 --- a/packages/uipath-platform/src/uipath/platform/resume_triggers/_protocol.py +++ b/packages/uipath-platform/src/uipath/platform/resume_triggers/_protocol.py @@ -17,6 +17,7 @@ UiPathResumeTriggerName, UiPathResumeTriggerType, ) + from uipath.platform import UiPath from uipath.platform.action_center import Task from uipath.platform.action_center.tasks import TaskStatus diff --git a/packages/uipath-platform/uv.lock b/packages/uipath-platform/uv.lock index 7d67b96ba..37da280fe 100644 --- a/packages/uipath-platform/uv.lock +++ b/packages/uipath-platform/uv.lock @@ -1088,7 +1088,7 @@ dev = [ [[package]] name = "uipath-platform" -version = "0.1.4" +version = "0.1.5" source = { editable = "." } dependencies = [ { name = "httpx" }, diff --git a/packages/uipath/uv.lock b/packages/uipath/uv.lock index a2630bb47..c83b97ba6 100644 --- a/packages/uipath/uv.lock +++ b/packages/uipath/uv.lock @@ -714,6 +714,7 @@ dependencies = [ { name = "griffecli" }, { name = "griffelib" }, ] +sdist = { url = "https://files.pythonhosted.org/packages/04/56/28a0accac339c164b52a92c6cfc45a903acc0c174caa5c1713803467b533/griffe-2.0.0.tar.gz", hash = "sha256:c68979cd8395422083a51ea7cf02f9c119d889646d99b7b656ee43725de1b80f", size = 293906, upload-time = "2026-03-23T21:06:53.402Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/8b/94/ee21d41e7eb4f823b94603b9d40f86d3c7fde80eacc2c3c71845476dddaa/griffe-2.0.0-py3-none-any.whl", hash = "sha256:5418081135a391c3e6e757a7f3f156f1a1a746cc7b4023868ff7d5e2f9a980aa", size = 5214, upload-time = "2026-02-09T19:09:44.105Z" }, ] @@ -726,6 +727,7 @@ dependencies = [ { name = "colorama" }, { name = "griffelib" }, ] +sdist = { url = "https://files.pythonhosted.org/packages/a4/f8/2e129fd4a86e52e58eefe664de05e7d502decf766e7316cc9e70fdec3e18/griffecli-2.0.0.tar.gz", hash = "sha256:312fa5ebb4ce6afc786356e2d0ce85b06c1c20d45abc42d74f0cda65e159f6ef", size = 56213, upload-time = "2026-03-23T21:06:54.8Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/e6/ed/d93f7a447bbf7a935d8868e9617cbe1cadf9ee9ee6bd275d3040fbf93d60/griffecli-2.0.0-py3-none-any.whl", hash = "sha256:9f7cd9ee9b21d55e91689358978d2385ae65c22f307a63fb3269acf3f21e643d", size = 9345, upload-time = "2026-02-09T19:09:42.554Z" }, ] @@ -734,6 +736,7 @@ wheels = [ name = "griffelib" version = "2.0.0" source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ad/06/eccbd311c9e2b3ca45dbc063b93134c57a1ccc7607c5e545264ad092c4a9/griffelib-2.0.0.tar.gz", hash = "sha256:e504d637a089f5cab9b5daf18f7645970509bf4f53eda8d79ed71cce8bd97934", size = 166312, upload-time = "2026-03-23T21:06:55.954Z" } wheels = [ { url = "https://files.pythonhosted.org/packages/4d/51/c936033e16d12b627ea334aaaaf42229c37620d0f15593456ab69ab48161/griffelib-2.0.0-py3-none-any.whl", hash = "sha256:01284878c966508b6d6f1dbff9b6fa607bc062d8261c5c7253cb285b06422a7f", size = 142004, upload-time = "2026-02-09T19:09:40.561Z" }, ] @@ -2679,7 +2682,7 @@ dev = [ [[package]] name = "uipath-platform" -version = "0.1.4" +version = "0.1.5" source = { editable = "../uipath-platform" } dependencies = [ { name = "httpx" },