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