diff --git a/.fern/replay.lock b/.fern/replay.lock index 158dc985..a79c93c0 100644 --- a/.fern/replay.lock +++ b/.fern/replay.lock @@ -36,5 +36,11 @@ generations: cli_version: unknown generator_versions: fernapi/fern-python-sdk: 4.25.5 -current_generation: 01282ecde6f53105beb07e91cdfba1119005cdab + - commit_sha: 45c1cacbf594b3ed1185756a9b93272b8330c687 + tree_hash: 8ddcff543bfc1374ad77db2255409f5f566062df + timestamp: 2026-10-18T19:44:32.089Z + cli_version: unknown + generator_versions: + fernapi/fern-python-sdk: 4.25.5 +current_generation: 45c1cacbf594b3ed1185756a9b93272b8330c687 patches: [] diff --git a/pyproject.toml b/pyproject.toml index 2f42898c..814efd20 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,10 +1,10 @@ [project] name = "zep-cloud" -version = "3.30.0" +version = "3.30.1" [tool.poetry] name = "zep-cloud" -version = "3.30.0" +version = "3.30.1" description = "" readme = "README.md" authors = [] diff --git a/reference.md b/reference.md index dd4dc508..4d6decab 100644 --- a/reference.md +++ b/reference.md @@ -3191,7 +3191,7 @@ authenticated project. Optional `search` matches `graph_id`, `name`, and Default `pageSize` is 50 (range 1–100). To list users, use `user.list_ordered` instead. See the [graph directory guide](/graph-directory) for pagination, relevance -ordering, and Memory MCP exposure. +ordering, and Context MCP exposure. @@ -3504,7 +3504,7 @@ Valid values: none, 7_days, 30_days, 90_days. Default: none **search_filters:** `typing.Optional[SearchFilters]` Filters which edges/nodes participate in pattern detection. -Reuses the same filter format as /graph/search. +Reuses the same filter format as the `graph.search` SDK method. @@ -7548,7 +7548,7 @@ client.graph.episode.update(
-Deprecated. Use edge and node listing with `filters.episode_uuids` instead. Returns nodes and edges mentioned in an episode, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header. +Deprecated. Use the edge list SDK methods `graph.edge.get_by_graph_id` or `graph.edge.get_by_user_id`, or the node list SDK methods `graph.node.get_by_graph_id` or `graph.node.get_by_user_id`, with the `filters.episode_uuids` filter. Returns nodes and edges mentioned in an episode, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header.
@@ -7879,7 +7879,7 @@ Deprecated: prefer Cursor, the opaque cursor returned via the Zep-Next-Cursor re
-Deprecated. Use edge listing with `filters.connected_node_uuids`, or the neighbors endpoint (`POST /graph/node/{node_uuid}/neighbors`), instead. Returns all edges for a node, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header. +Deprecated. Use the edge list SDK methods `graph.edge.get_by_graph_id` or `graph.edge.get_by_user_id` with the `filters.connected_node_uuids` filter, or use the `graph.node.get_neighbors` SDK method. Returns all edges for a node, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header.
diff --git a/src/zep_cloud/core/client_wrapper.py b/src/zep_cloud/core/client_wrapper.py index a4c5cee4..5a850022 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.30.0", + "User-Agent": "zep-cloud/3.30.1", "X-Fern-Language": "Python", "X-Fern-SDK-Name": "zep-cloud", - "X-Fern-SDK-Version": "3.30.0", + "X-Fern-SDK-Version": "3.30.1", **(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 2d518b2b..8ce4a60a 100644 --- a/src/zep_cloud/graph/client.py +++ b/src/zep_cloud/graph/client.py @@ -739,7 +739,7 @@ def list_all( Default `pageSize` is 50 (range 1–100). To list users, use `user.list_ordered` instead. See the [graph directory guide](/graph-directory) for pagination, relevance - ordering, and Memory MCP exposure. + ordering, and Context MCP exposure. Parameters ---------- @@ -894,7 +894,7 @@ def detect_patterns( search_filters : typing.Optional[SearchFilters] Filters which edges/nodes participate in pattern detection. - Reuses the same filter format as /graph/search. + Reuses the same filter format as the `graph.search` SDK method. seeds : typing.Optional[PatternSeeds] Seed selection. If omitted, analyzes the entire graph. Mutually exclusive with query. @@ -2046,7 +2046,7 @@ async def list_all( Default `pageSize` is 50 (range 1–100). To list users, use `user.list_ordered` instead. See the [graph directory guide](/graph-directory) for pagination, relevance - ordering, and Memory MCP exposure. + ordering, and Context MCP exposure. Parameters ---------- @@ -2217,7 +2217,7 @@ async def detect_patterns( search_filters : typing.Optional[SearchFilters] Filters which edges/nodes participate in pattern detection. - Reuses the same filter format as /graph/search. + Reuses the same filter format as the `graph.search` SDK method. seeds : typing.Optional[PatternSeeds] Seed selection. If omitted, analyzes the entire graph. Mutually exclusive with query. diff --git a/src/zep_cloud/graph/episode/client.py b/src/zep_cloud/graph/episode/client.py index cee42952..ca121ebf 100644 --- a/src/zep_cloud/graph/episode/client.py +++ b/src/zep_cloud/graph/episode/client.py @@ -369,7 +369,7 @@ def get_nodes_and_edges( self, uuid_: str, *, request_options: typing.Optional[RequestOptions] = None ) -> EpisodeMentions: """ - Deprecated. Use edge and node listing with `filters.episode_uuids` instead. Returns nodes and edges mentioned in an episode, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header. + Deprecated. Use the edge list SDK methods `graph.edge.get_by_graph_id` or `graph.edge.get_by_user_id`, or the node list SDK methods `graph.node.get_by_graph_id` or `graph.node.get_by_user_id`, with the `filters.episode_uuids` filter. Returns nodes and edges mentioned in an episode, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header. Parameters ---------- @@ -809,7 +809,7 @@ async def get_nodes_and_edges( self, uuid_: str, *, request_options: typing.Optional[RequestOptions] = None ) -> EpisodeMentions: """ - Deprecated. Use edge and node listing with `filters.episode_uuids` instead. Returns nodes and edges mentioned in an episode, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header. + Deprecated. Use the edge list SDK methods `graph.edge.get_by_graph_id` or `graph.edge.get_by_user_id`, or the node list SDK methods `graph.node.get_by_graph_id` or `graph.node.get_by_user_id`, with the `filters.episode_uuids` filter. Returns nodes and edges mentioned in an episode, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header. Parameters ---------- diff --git a/src/zep_cloud/graph/episode/raw_client.py b/src/zep_cloud/graph/episode/raw_client.py index 1ae6fd2c..7ba38efb 100644 --- a/src/zep_cloud/graph/episode/raw_client.py +++ b/src/zep_cloud/graph/episode/raw_client.py @@ -641,7 +641,7 @@ def get_nodes_and_edges( self, uuid_: str, *, request_options: typing.Optional[RequestOptions] = None ) -> HttpResponse[EpisodeMentions]: """ - Deprecated. Use edge and node listing with `filters.episode_uuids` instead. Returns nodes and edges mentioned in an episode, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header. + Deprecated. Use the edge list SDK methods `graph.edge.get_by_graph_id` or `graph.edge.get_by_user_id`, or the node list SDK methods `graph.node.get_by_graph_id` or `graph.node.get_by_user_id`, with the `filters.episode_uuids` filter. Returns nodes and edges mentioned in an episode, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header. Parameters ---------- @@ -1321,7 +1321,7 @@ async def get_nodes_and_edges( self, uuid_: str, *, request_options: typing.Optional[RequestOptions] = None ) -> AsyncHttpResponse[EpisodeMentions]: """ - Deprecated. Use edge and node listing with `filters.episode_uuids` instead. Returns nodes and edges mentioned in an episode, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header. + Deprecated. Use the edge list SDK methods `graph.edge.get_by_graph_id` or `graph.edge.get_by_user_id`, or the node list SDK methods `graph.node.get_by_graph_id` or `graph.node.get_by_user_id`, with the `filters.episode_uuids` filter. Returns nodes and edges mentioned in an episode, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header. Parameters ---------- diff --git a/src/zep_cloud/graph/node/client.py b/src/zep_cloud/graph/node/client.py index 01b44826..aebaee23 100644 --- a/src/zep_cloud/graph/node/client.py +++ b/src/zep_cloud/graph/node/client.py @@ -185,7 +185,7 @@ def get_edges( self, node_uuid: str, *, request_options: typing.Optional[RequestOptions] = None ) -> typing.List[EntityEdge]: """ - Deprecated. Use edge listing with `filters.connected_node_uuids`, or the neighbors endpoint (`POST /graph/node/{node_uuid}/neighbors`), instead. Returns all edges for a node, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header. + Deprecated. Use the edge list SDK methods `graph.edge.get_by_graph_id` or `graph.edge.get_by_user_id` with the `filters.connected_node_uuids` filter, or use the `graph.node.get_neighbors` SDK method. Returns all edges for a node, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header. Parameters ---------- @@ -628,7 +628,7 @@ async def get_edges( self, node_uuid: str, *, request_options: typing.Optional[RequestOptions] = None ) -> typing.List[EntityEdge]: """ - Deprecated. Use edge listing with `filters.connected_node_uuids`, or the neighbors endpoint (`POST /graph/node/{node_uuid}/neighbors`), instead. Returns all edges for a node, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header. + Deprecated. Use the edge list SDK methods `graph.edge.get_by_graph_id` or `graph.edge.get_by_user_id` with the `filters.connected_node_uuids` filter, or use the `graph.node.get_neighbors` SDK method. Returns all edges for a node, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header. Parameters ---------- diff --git a/src/zep_cloud/graph/node/raw_client.py b/src/zep_cloud/graph/node/raw_client.py index 30cf724d..ce7b2ad1 100644 --- a/src/zep_cloud/graph/node/raw_client.py +++ b/src/zep_cloud/graph/node/raw_client.py @@ -251,7 +251,7 @@ def get_edges( self, node_uuid: str, *, request_options: typing.Optional[RequestOptions] = None ) -> HttpResponse[typing.List[EntityEdge]]: """ - Deprecated. Use edge listing with `filters.connected_node_uuids`, or the neighbors endpoint (`POST /graph/node/{node_uuid}/neighbors`), instead. Returns all edges for a node, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header. + Deprecated. Use the edge list SDK methods `graph.edge.get_by_graph_id` or `graph.edge.get_by_user_id` with the `filters.connected_node_uuids` filter, or use the `graph.node.get_neighbors` SDK method. Returns all edges for a node, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header. Parameters ---------- @@ -986,7 +986,7 @@ async def get_edges( self, node_uuid: str, *, request_options: typing.Optional[RequestOptions] = None ) -> AsyncHttpResponse[typing.List[EntityEdge]]: """ - Deprecated. Use edge listing with `filters.connected_node_uuids`, or the neighbors endpoint (`POST /graph/node/{node_uuid}/neighbors`), instead. Returns all edges for a node, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header. + Deprecated. Use the edge list SDK methods `graph.edge.get_by_graph_id` or `graph.edge.get_by_user_id` with the `filters.connected_node_uuids` filter, or use the `graph.node.get_neighbors` SDK method. Returns all edges for a node, subject to an internal cap; responses reduced by that cap set the Zep-Truncated header. Parameters ---------- diff --git a/src/zep_cloud/graph/raw_client.py b/src/zep_cloud/graph/raw_client.py index 221611e7..d7e86ebc 100644 --- a/src/zep_cloud/graph/raw_client.py +++ b/src/zep_cloud/graph/raw_client.py @@ -1185,7 +1185,7 @@ def list_all( Default `pageSize` is 50 (range 1–100). To list users, use `user.list_ordered` instead. See the [graph directory guide](/graph-directory) for pagination, relevance - ordering, and Memory MCP exposure. + ordering, and Context MCP exposure. Parameters ---------- @@ -1405,7 +1405,7 @@ def detect_patterns( search_filters : typing.Optional[SearchFilters] Filters which edges/nodes participate in pattern detection. - Reuses the same filter format as /graph/search. + Reuses the same filter format as the `graph.search` SDK method. seeds : typing.Optional[PatternSeeds] Seed selection. If omitted, analyzes the entire graph. Mutually exclusive with query. @@ -3236,7 +3236,7 @@ async def list_all( Default `pageSize` is 50 (range 1–100). To list users, use `user.list_ordered` instead. See the [graph directory guide](/graph-directory) for pagination, relevance - ordering, and Memory MCP exposure. + ordering, and Context MCP exposure. Parameters ---------- @@ -3456,7 +3456,7 @@ async def detect_patterns( search_filters : typing.Optional[SearchFilters] Filters which edges/nodes participate in pattern detection. - Reuses the same filter format as /graph/search. + Reuses the same filter format as the `graph.search` SDK method. seeds : typing.Optional[PatternSeeds] Seed selection. If omitted, analyzes the entire graph. Mutually exclusive with query. diff --git a/src/zep_cloud/types/comparison_operator.py b/src/zep_cloud/types/comparison_operator.py index 8e1df62e..1c565dfd 100644 --- a/src/zep_cloud/types/comparison_operator.py +++ b/src/zep_cloud/types/comparison_operator.py @@ -3,5 +3,5 @@ import typing ComparisonOperator = typing.Union[ - typing.Literal["=", "<>", ">", "<", ">=", "<=", "IS NULL", "is_null", "IS NOT NULL", "CONTAINS"], typing.Any + typing.Literal["=", "<>", ">", "<", ">=", "<=", "IS NULL", "is_null", "IS NOT NULL", "CONTAINS", "IN"], typing.Any ] diff --git a/src/zep_cloud/types/entity_node.py b/src/zep_cloud/types/entity_node.py index 488e0d37..ace625c4 100644 --- a/src/zep_cloud/types/entity_node.py +++ b/src/zep_cloud/types/entity_node.py @@ -29,16 +29,16 @@ class EntityNode(UniversalBaseModel): episodes: typing.Optional[typing.List[str]] = pydantic.Field(default=None) """ The UUIDs of the live episodes that mention this node, newest first. The - list is complete when `episodes_truncated` is false. The list is empty - when the node has more than 100 source episodes; list episodes with the - `mentioned_node_uuids` filter to read them. + list is complete when `episodes_truncated` is false. The list holds the + newest 100 when the node has more than 100 source episodes; list + episodes with the `mentioned_node_uuids` filter to read them all. """ episodes_truncated: typing.Optional[bool] = pydantic.Field(default=None) """ - True when the node has more than 100 source episodes, so `episodes` is - empty, or when provenance is unavailable. False means `episodes` is the - complete set. + True when the node has more than 100 source episodes, so `episodes` holds + only the newest 100, or when provenance is unavailable. False means + `episodes` is the complete set. """ labels: typing.Optional[typing.List[str]] = pydantic.Field(default=None) diff --git a/src/zep_cloud/types/episode_metadata_filter.py b/src/zep_cloud/types/episode_metadata_filter.py index db3c39e6..b19da6d6 100644 --- a/src/zep_cloud/types/episode_metadata_filter.py +++ b/src/zep_cloud/types/episode_metadata_filter.py @@ -10,7 +10,10 @@ class EpisodeMetadataFilter(UniversalBaseModel): comparison_operator: ComparisonOperator = pydantic.Field() """ - Comparison operator: =, <>, >, <, >=, <=, IS NULL, IS NOT NULL, IN, CONTAINS + Comparison operator: =, <>, >, <, >=, <=, IS NULL, IS NOT NULL, CONTAINS, IN. + CONTAINS is a case-sensitive substring match on the stored value. + IN takes an array of up to 100 values and matches when the stored value equals one of them exactly. + v3 API: CONTAINS takes one comma-separated string and matches one of its items; IN is not accepted. """ property_name: str = pydantic.Field() diff --git a/src/zep_cloud/types/search_filters.py b/src/zep_cloud/types/search_filters.py index 50954d04..4a1c6f16 100644 --- a/src/zep_cloud/types/search_filters.py +++ b/src/zep_cloud/types/search_filters.py @@ -18,6 +18,14 @@ class SearchFilters(UniversalBaseModel): requests whose result type contains no edges. Max 256 entries. """ + content_policy_violated: typing.Optional[bool] = pydantic.Field(default=None) + """ + Exact match on the complete content policy violation state of an + episode. Supported on the episodes scope while the project includes + flagged episodes. Zep applies it at hydration; it never reaches the + graph service. + """ + created_at: typing.Optional[typing.List[typing.List[DateFilter]]] = pydantic.Field(default=None) """ 2D array of date filters for the created_at field. @@ -86,7 +94,11 @@ class SearchFilters(UniversalBaseModel): property_filters: typing.Optional[typing.List[PropertyFilter]] = pydantic.Field(default=None) """ - List of property filters to apply to nodes and edges + List of property filters. Each filter compares one attribute value. + On a node search and on a node list, the filters match node attributes. + On an edge search and on an edge list, the filters match edge attributes + only. To get the edges of nodes that match a node attribute, first get + the matching nodes, then send their UUIDs in connected_node_uuids. """ source_node_uuids: typing.Optional[typing.List[str]] = pydantic.Field(default=None)