diff --git a/pyproject.toml b/pyproject.toml index 222ec7a..bb4f085 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ name = "zep-cloud" [tool.poetry] name = "zep-cloud" -version = "3.12.0" +version = "3.13.0" description = "" readme = "README.md" authors = [] diff --git a/reference.md b/reference.md index 2b45185..00ffc2f 100644 --- a/reference.md +++ b/reference.md @@ -767,6 +767,7 @@ client = Zep( client.graph.add_fact_triple( fact="fact", fact_name="fact_name", + source_node_name="source_node_name", target_node_name="target_node_name", ) @@ -800,7 +801,7 @@ client.graph.add_fact_triple(
-**target_node_name:** `str` — The name of the target node to add +**source_node_name:** `str` — The name of the source node to add
@@ -808,7 +809,7 @@ client.graph.add_fact_triple(
-**created_at:** `typing.Optional[str]` — The timestamp of the message +**target_node_name:** `str` — The name of the target node to add
@@ -816,7 +817,7 @@ client.graph.add_fact_triple(
-**expired_at:** `typing.Optional[str]` — The time (if any) at which the edge expires +**created_at:** `typing.Optional[str]` — The timestamp of the message
@@ -824,7 +825,7 @@ client.graph.add_fact_triple(
-**fact_uuid:** `typing.Optional[str]` — The uuid of the edge to add +**expired_at:** `typing.Optional[str]` — The time (if any) at which the edge expires
@@ -832,7 +833,7 @@ client.graph.add_fact_triple(
-**graph_id:** `typing.Optional[str]` +**fact_uuid:** `typing.Optional[str]` — The uuid of the edge to add
@@ -840,7 +841,7 @@ client.graph.add_fact_triple(
-**invalid_at:** `typing.Optional[str]` — The time (if any) at which the fact stops being true +**graph_id:** `typing.Optional[str]`
@@ -848,7 +849,7 @@ client.graph.add_fact_triple(
-**source_node_name:** `typing.Optional[str]` — The name of the source node to add +**invalid_at:** `typing.Optional[str]` — The time (if any) at which the fact stops being true
@@ -1630,6 +1631,77 @@ client.project.get() + + + + +## Task +
client.task.get(...) +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Gets a task by its ID +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +from zep_cloud import Zep + +client = Zep( + api_key="YOUR_API_KEY", +) +client.task.get( + task_id="task_id", +) + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**task_id:** `str` — Task ID + +
+
+ +
+
+ +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. + +
+
+
+
+ +
diff --git a/src/zep_cloud/__init__.py b/src/zep_cloud/__init__.py index 270bbcc..8ea45ce 100644 --- a/src/zep_cloud/__init__.py +++ b/src/zep_cloud/__init__.py @@ -25,6 +25,7 @@ EpisodeResponse, FactRatingExamples, FactRatingInstruction, + GetTaskResponse, Graph, GraphDataType, GraphEdgesRequest, @@ -44,6 +45,8 @@ RoleType, SearchFilters, SuccessResponse, + TaskErrorResponse, + TaskProgress, Thread, ThreadContextResponse, ThreadListResponse, @@ -53,7 +56,7 @@ UserNodeResponse, ) from .errors import BadRequestError, InternalServerError, NotFoundError -from . import context, graph, project, thread, user +from . import context, graph, project, task, thread, user from .client import AsyncZep, Zep from .environment import ZepEnvironment from .thread import ThreadGetUserContextRequestMode @@ -84,6 +87,7 @@ "EpisodeResponse", "FactRatingExamples", "FactRatingInstruction", + "GetTaskResponse", "Graph", "GraphDataType", "GraphEdgesRequest", @@ -105,6 +109,8 @@ "RoleType", "SearchFilters", "SuccessResponse", + "TaskErrorResponse", + "TaskProgress", "Thread", "ThreadContextResponse", "ThreadGetUserContextRequestMode", @@ -119,6 +125,7 @@ "context", "graph", "project", + "task", "thread", "user", ] diff --git a/src/zep_cloud/base_client.py b/src/zep_cloud/base_client.py index 7b5cd36..ae0b8c9 100644 --- a/src/zep_cloud/base_client.py +++ b/src/zep_cloud/base_client.py @@ -10,6 +10,7 @@ from .environment import ZepEnvironment from .graph.client import AsyncGraphClient, GraphClient from .project.client import AsyncProjectClient, ProjectClient +from .task.client import AsyncTaskClient, TaskClient from .thread.client import AsyncThreadClient, ThreadClient from .user.client import AsyncUserClient, UserClient @@ -84,6 +85,7 @@ def __init__( self.context = ContextClient(client_wrapper=self._client_wrapper) self.graph = GraphClient(client_wrapper=self._client_wrapper) self.project = ProjectClient(client_wrapper=self._client_wrapper) + self.task = TaskClient(client_wrapper=self._client_wrapper) self.thread = ThreadClient(client_wrapper=self._client_wrapper) self.user = UserClient(client_wrapper=self._client_wrapper) @@ -158,6 +160,7 @@ def __init__( self.context = AsyncContextClient(client_wrapper=self._client_wrapper) self.graph = AsyncGraphClient(client_wrapper=self._client_wrapper) self.project = AsyncProjectClient(client_wrapper=self._client_wrapper) + self.task = AsyncTaskClient(client_wrapper=self._client_wrapper) self.thread = AsyncThreadClient(client_wrapper=self._client_wrapper) self.user = AsyncUserClient(client_wrapper=self._client_wrapper) diff --git a/src/zep_cloud/core/client_wrapper.py b/src/zep_cloud/core/client_wrapper.py index f141b0b..db6fce9 100644 --- a/src/zep_cloud/core/client_wrapper.py +++ b/src/zep_cloud/core/client_wrapper.py @@ -22,10 +22,10 @@ def __init__( def get_headers(self) -> typing.Dict[str, str]: headers: typing.Dict[str, str] = { - "User-Agent": "zep-cloud/3.12.0", + "User-Agent": "zep-cloud/3.13.0", "X-Fern-Language": "Python", "X-Fern-SDK-Name": "zep-cloud", - "X-Fern-SDK-Version": "3.12.0", + "X-Fern-SDK-Version": "3.13.0", **(self.get_custom_headers() or {}), } headers["Authorization"] = f"Api-Key {self.api_key}" diff --git a/src/zep_cloud/graph/client.py b/src/zep_cloud/graph/client.py index 84c1e6a..429e96b 100644 --- a/src/zep_cloud/graph/client.py +++ b/src/zep_cloud/graph/client.py @@ -256,13 +256,13 @@ def add_fact_triple( *, fact: str, fact_name: str, + source_node_name: str, target_node_name: str, created_at: typing.Optional[str] = OMIT, expired_at: typing.Optional[str] = OMIT, fact_uuid: typing.Optional[str] = OMIT, graph_id: typing.Optional[str] = OMIT, invalid_at: typing.Optional[str] = OMIT, - source_node_name: typing.Optional[str] = OMIT, source_node_summary: typing.Optional[str] = OMIT, source_node_uuid: typing.Optional[str] = OMIT, target_node_summary: typing.Optional[str] = OMIT, @@ -282,6 +282,9 @@ def add_fact_triple( fact_name : str The name of the edge to add. Should be all caps using snake case (eg RELATES_TO) + source_node_name : str + The name of the source node to add + target_node_name : str The name of the target node to add @@ -299,9 +302,6 @@ def add_fact_triple( invalid_at : typing.Optional[str] The time (if any) at which the fact stops being true - source_node_name : typing.Optional[str] - The name of the source node to add - source_node_summary : typing.Optional[str] The summary of the source node to add @@ -337,19 +337,20 @@ def add_fact_triple( client.graph.add_fact_triple( fact="fact", fact_name="fact_name", + source_node_name="source_node_name", target_node_name="target_node_name", ) """ _response = self._raw_client.add_fact_triple( fact=fact, fact_name=fact_name, + source_node_name=source_node_name, target_node_name=target_node_name, created_at=created_at, expired_at=expired_at, fact_uuid=fact_uuid, graph_id=graph_id, invalid_at=invalid_at, - source_node_name=source_node_name, source_node_summary=source_node_summary, source_node_uuid=source_node_uuid, target_node_summary=target_node_summary, @@ -972,13 +973,13 @@ async def add_fact_triple( *, fact: str, fact_name: str, + source_node_name: str, target_node_name: str, created_at: typing.Optional[str] = OMIT, expired_at: typing.Optional[str] = OMIT, fact_uuid: typing.Optional[str] = OMIT, graph_id: typing.Optional[str] = OMIT, invalid_at: typing.Optional[str] = OMIT, - source_node_name: typing.Optional[str] = OMIT, source_node_summary: typing.Optional[str] = OMIT, source_node_uuid: typing.Optional[str] = OMIT, target_node_summary: typing.Optional[str] = OMIT, @@ -998,6 +999,9 @@ async def add_fact_triple( fact_name : str The name of the edge to add. Should be all caps using snake case (eg RELATES_TO) + source_node_name : str + The name of the source node to add + target_node_name : str The name of the target node to add @@ -1015,9 +1019,6 @@ async def add_fact_triple( invalid_at : typing.Optional[str] The time (if any) at which the fact stops being true - source_node_name : typing.Optional[str] - The name of the source node to add - source_node_summary : typing.Optional[str] The summary of the source node to add @@ -1058,6 +1059,7 @@ async def main() -> None: await client.graph.add_fact_triple( fact="fact", fact_name="fact_name", + source_node_name="source_node_name", target_node_name="target_node_name", ) @@ -1067,13 +1069,13 @@ async def main() -> None: _response = await self._raw_client.add_fact_triple( fact=fact, fact_name=fact_name, + source_node_name=source_node_name, target_node_name=target_node_name, created_at=created_at, expired_at=expired_at, fact_uuid=fact_uuid, graph_id=graph_id, invalid_at=invalid_at, - source_node_name=source_node_name, source_node_summary=source_node_summary, source_node_uuid=source_node_uuid, target_node_summary=target_node_summary, diff --git a/src/zep_cloud/graph/raw_client.py b/src/zep_cloud/graph/raw_client.py index f34a0fd..96e4eea 100644 --- a/src/zep_cloud/graph/raw_client.py +++ b/src/zep_cloud/graph/raw_client.py @@ -403,13 +403,13 @@ def add_fact_triple( *, fact: str, fact_name: str, + source_node_name: str, target_node_name: str, created_at: typing.Optional[str] = OMIT, expired_at: typing.Optional[str] = OMIT, fact_uuid: typing.Optional[str] = OMIT, graph_id: typing.Optional[str] = OMIT, invalid_at: typing.Optional[str] = OMIT, - source_node_name: typing.Optional[str] = OMIT, source_node_summary: typing.Optional[str] = OMIT, source_node_uuid: typing.Optional[str] = OMIT, target_node_summary: typing.Optional[str] = OMIT, @@ -429,6 +429,9 @@ def add_fact_triple( fact_name : str The name of the edge to add. Should be all caps using snake case (eg RELATES_TO) + source_node_name : str + The name of the source node to add + target_node_name : str The name of the target node to add @@ -446,9 +449,6 @@ def add_fact_triple( invalid_at : typing.Optional[str] The time (if any) at which the fact stops being true - source_node_name : typing.Optional[str] - The name of the source node to add - source_node_summary : typing.Optional[str] The summary of the source node to add @@ -1534,13 +1534,13 @@ async def add_fact_triple( *, fact: str, fact_name: str, + source_node_name: str, target_node_name: str, created_at: typing.Optional[str] = OMIT, expired_at: typing.Optional[str] = OMIT, fact_uuid: typing.Optional[str] = OMIT, graph_id: typing.Optional[str] = OMIT, invalid_at: typing.Optional[str] = OMIT, - source_node_name: typing.Optional[str] = OMIT, source_node_summary: typing.Optional[str] = OMIT, source_node_uuid: typing.Optional[str] = OMIT, target_node_summary: typing.Optional[str] = OMIT, @@ -1560,6 +1560,9 @@ async def add_fact_triple( fact_name : str The name of the edge to add. Should be all caps using snake case (eg RELATES_TO) + source_node_name : str + The name of the source node to add + target_node_name : str The name of the target node to add @@ -1577,9 +1580,6 @@ async def add_fact_triple( invalid_at : typing.Optional[str] The time (if any) at which the fact stops being true - source_node_name : typing.Optional[str] - The name of the source node to add - source_node_summary : typing.Optional[str] The summary of the source node to add diff --git a/src/zep_cloud/task/__init__.py b/src/zep_cloud/task/__init__.py new file mode 100644 index 0000000..5cde020 --- /dev/null +++ b/src/zep_cloud/task/__init__.py @@ -0,0 +1,4 @@ +# This file was auto-generated by Fern from our API Definition. + +# isort: skip_file + diff --git a/src/zep_cloud/task/client.py b/src/zep_cloud/task/client.py new file mode 100644 index 0000000..bd54616 --- /dev/null +++ b/src/zep_cloud/task/client.py @@ -0,0 +1,110 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper +from ..core.request_options import RequestOptions +from ..types.get_task_response import GetTaskResponse +from .raw_client import AsyncRawTaskClient, RawTaskClient + + +class TaskClient: + def __init__(self, *, client_wrapper: SyncClientWrapper): + self._raw_client = RawTaskClient(client_wrapper=client_wrapper) + + @property + def with_raw_response(self) -> RawTaskClient: + """ + Retrieves a raw implementation of this client that returns raw responses. + + Returns + ------- + RawTaskClient + """ + return self._raw_client + + def get(self, task_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> GetTaskResponse: + """ + Gets a task by its ID + + Parameters + ---------- + task_id : str + Task ID + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + GetTaskResponse + Task + + Examples + -------- + from zep_cloud import Zep + + client = Zep( + api_key="YOUR_API_KEY", + ) + client.task.get( + task_id="task_id", + ) + """ + _response = self._raw_client.get(task_id, request_options=request_options) + return _response.data + + +class AsyncTaskClient: + def __init__(self, *, client_wrapper: AsyncClientWrapper): + self._raw_client = AsyncRawTaskClient(client_wrapper=client_wrapper) + + @property + def with_raw_response(self) -> AsyncRawTaskClient: + """ + Retrieves a raw implementation of this client that returns raw responses. + + Returns + ------- + AsyncRawTaskClient + """ + return self._raw_client + + async def get(self, task_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> GetTaskResponse: + """ + Gets a task by its ID + + Parameters + ---------- + task_id : str + Task ID + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + GetTaskResponse + Task + + Examples + -------- + import asyncio + + from zep_cloud import AsyncZep + + client = AsyncZep( + api_key="YOUR_API_KEY", + ) + + + async def main() -> None: + await client.task.get( + task_id="task_id", + ) + + + asyncio.run(main()) + """ + _response = await self._raw_client.get(task_id, request_options=request_options) + return _response.data diff --git a/src/zep_cloud/task/raw_client.py b/src/zep_cloud/task/raw_client.py new file mode 100644 index 0000000..1089a3e --- /dev/null +++ b/src/zep_cloud/task/raw_client.py @@ -0,0 +1,155 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing +from json.decoder import JSONDecodeError + +from ..core.api_error import ApiError as core_api_error_ApiError +from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper +from ..core.http_response import AsyncHttpResponse, HttpResponse +from ..core.jsonable_encoder import jsonable_encoder +from ..core.pydantic_utilities import parse_obj_as +from ..core.request_options import RequestOptions +from ..errors.internal_server_error import InternalServerError +from ..errors.not_found_error import NotFoundError +from ..types.api_error import ApiError as types_api_error_ApiError +from ..types.get_task_response import GetTaskResponse + + +class RawTaskClient: + def __init__(self, *, client_wrapper: SyncClientWrapper): + self._client_wrapper = client_wrapper + + def get( + self, task_id: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> HttpResponse[GetTaskResponse]: + """ + Gets a task by its ID + + Parameters + ---------- + task_id : str + Task ID + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[GetTaskResponse] + Task + """ + _response = self._client_wrapper.httpx_client.request( + f"tasks/{jsonable_encoder(task_id)}", + method="GET", + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + GetTaskResponse, + parse_obj_as( + type_=GetTaskResponse, # type: ignore + object_=_response.json(), + ), + ) + return HttpResponse(response=_response, data=_data) + if _response.status_code == 404: + raise NotFoundError( + headers=dict(_response.headers), + body=typing.cast( + types_api_error_ApiError, + parse_obj_as( + type_=types_api_error_ApiError, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 500: + raise InternalServerError( + headers=dict(_response.headers), + body=typing.cast( + types_api_error_ApiError, + parse_obj_as( + type_=types_api_error_ApiError, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise core_api_error_ApiError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.text + ) + raise core_api_error_ApiError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response_json + ) + + +class AsyncRawTaskClient: + def __init__(self, *, client_wrapper: AsyncClientWrapper): + self._client_wrapper = client_wrapper + + async def get( + self, task_id: str, *, request_options: typing.Optional[RequestOptions] = None + ) -> AsyncHttpResponse[GetTaskResponse]: + """ + Gets a task by its ID + + Parameters + ---------- + task_id : str + Task ID + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncHttpResponse[GetTaskResponse] + Task + """ + _response = await self._client_wrapper.httpx_client.request( + f"tasks/{jsonable_encoder(task_id)}", + method="GET", + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + GetTaskResponse, + parse_obj_as( + type_=GetTaskResponse, # type: ignore + object_=_response.json(), + ), + ) + return AsyncHttpResponse(response=_response, data=_data) + if _response.status_code == 404: + raise NotFoundError( + headers=dict(_response.headers), + body=typing.cast( + types_api_error_ApiError, + parse_obj_as( + type_=types_api_error_ApiError, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 500: + raise InternalServerError( + headers=dict(_response.headers), + body=typing.cast( + types_api_error_ApiError, + parse_obj_as( + type_=types_api_error_ApiError, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise core_api_error_ApiError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.text + ) + raise core_api_error_ApiError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response_json + ) diff --git a/src/zep_cloud/types/__init__.py b/src/zep_cloud/types/__init__.py index edb7d17..c6a4267 100644 --- a/src/zep_cloud/types/__init__.py +++ b/src/zep_cloud/types/__init__.py @@ -24,6 +24,7 @@ from .episode_response import EpisodeResponse from .fact_rating_examples import FactRatingExamples from .fact_rating_instruction import FactRatingInstruction +from .get_task_response import GetTaskResponse from .graph import Graph from .graph_data_type import GraphDataType from .graph_edges_request import GraphEdgesRequest @@ -43,6 +44,8 @@ from .role_type import RoleType from .search_filters import SearchFilters from .success_response import SuccessResponse +from .task_error_response import TaskErrorResponse +from .task_progress import TaskProgress from .thread import Thread from .thread_context_response import ThreadContextResponse from .thread_list_response import ThreadListResponse @@ -74,6 +77,7 @@ "EpisodeResponse", "FactRatingExamples", "FactRatingInstruction", + "GetTaskResponse", "Graph", "GraphDataType", "GraphEdgesRequest", @@ -93,6 +97,8 @@ "RoleType", "SearchFilters", "SuccessResponse", + "TaskErrorResponse", + "TaskProgress", "Thread", "ThreadContextResponse", "ThreadListResponse", diff --git a/src/zep_cloud/types/add_thread_messages_response.py b/src/zep_cloud/types/add_thread_messages_response.py index 0bef2a8..b5d320e 100644 --- a/src/zep_cloud/types/add_thread_messages_response.py +++ b/src/zep_cloud/types/add_thread_messages_response.py @@ -9,6 +9,7 @@ class AddThreadMessagesResponse(UniversalBaseModel): context: typing.Optional[str] = None message_uuids: typing.Optional[typing.List[str]] = None + task_id: typing.Optional[str] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/zep_cloud/types/add_triple_response.py b/src/zep_cloud/types/add_triple_response.py index 2ae8641..9ad9a99 100644 --- a/src/zep_cloud/types/add_triple_response.py +++ b/src/zep_cloud/types/add_triple_response.py @@ -12,6 +12,10 @@ class AddTripleResponse(UniversalBaseModel): edge: typing.Optional[EntityEdge] = None source_node: typing.Optional[EntityNode] = None target_node: typing.Optional[EntityNode] = None + task_id: typing.Optional[str] = pydantic.Field(default=None) + """ + Task ID of the add triple task + """ if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/src/zep_cloud/types/clone_graph_response.py b/src/zep_cloud/types/clone_graph_response.py index 8ded91a..dec3de2 100644 --- a/src/zep_cloud/types/clone_graph_response.py +++ b/src/zep_cloud/types/clone_graph_response.py @@ -12,6 +12,11 @@ class CloneGraphResponse(UniversalBaseModel): graph_id is the ID of the cloned graph """ + task_id: typing.Optional[str] = pydantic.Field(default=None) + """ + Task ID of the clone graph task + """ + user_id: typing.Optional[str] = None if IS_PYDANTIC_V2: diff --git a/src/zep_cloud/types/episode.py b/src/zep_cloud/types/episode.py index dfd8825..c31326d 100644 --- a/src/zep_cloud/types/episode.py +++ b/src/zep_cloud/types/episode.py @@ -38,6 +38,11 @@ class Episode(UniversalBaseModel): source: typing.Optional[GraphDataType] = None source_description: typing.Optional[str] = None + task_id: typing.Optional[str] = pydantic.Field(default=None) + """ + Optional task ID to poll episode processing status. Currently only available for batch ingestion. + """ + thread_id: typing.Optional[str] = pydantic.Field(default=None) """ Optional thread ID, will be present if the episode is part of a thread diff --git a/src/zep_cloud/types/get_task_response.py b/src/zep_cloud/types/get_task_response.py new file mode 100644 index 0000000..5e1c1ad --- /dev/null +++ b/src/zep_cloud/types/get_task_response.py @@ -0,0 +1,29 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .task_error_response import TaskErrorResponse +from .task_progress import TaskProgress + + +class GetTaskResponse(UniversalBaseModel): + completed_at: typing.Optional[str] = None + created_at: typing.Optional[str] = None + error: typing.Optional[TaskErrorResponse] = None + progress: typing.Optional[TaskProgress] = None + started_at: typing.Optional[str] = None + status: typing.Optional[str] = None + task_id: typing.Optional[str] = None + type: typing.Optional[str] = None + updated_at: typing.Optional[str] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/zep_cloud/types/task_error_response.py b/src/zep_cloud/types/task_error_response.py new file mode 100644 index 0000000..d138f3f --- /dev/null +++ b/src/zep_cloud/types/task_error_response.py @@ -0,0 +1,21 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class TaskErrorResponse(UniversalBaseModel): + code: typing.Optional[str] = None + details: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + message: typing.Optional[str] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/zep_cloud/types/task_progress.py b/src/zep_cloud/types/task_progress.py new file mode 100644 index 0000000..1172079 --- /dev/null +++ b/src/zep_cloud/types/task_progress.py @@ -0,0 +1,20 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class TaskProgress(UniversalBaseModel): + message: typing.Optional[str] = None + stage: typing.Optional[str] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow