From 4a26ca5bc210694cac587609e76e842927390c28 Mon Sep 17 00:00:00 2001 From: lc-arjun Date: Thu, 26 Jun 2025 11:27:44 -0700 Subject: [PATCH] feat: crons sorting sdk (#5197) * feat: crons sorting sdk * update sync clients * lock file * lock file * lock file --- libs/langgraph/uv.lock | 2 +- libs/prebuilt/uv.lock | 2 +- libs/sdk-js/package.json | 2 +- libs/sdk-js/src/client.ts | 5 +++++ libs/sdk-js/src/schema.ts | 8 ++++++++ libs/sdk-py/langgraph_sdk/client.py | 25 +++++++++++++++++++++++++ libs/sdk-py/langgraph_sdk/schema.py | 7 +++++++ libs/sdk-py/pyproject.toml | 2 +- libs/sdk-py/uv.lock | 2 +- 9 files changed, 50 insertions(+), 5 deletions(-) diff --git a/libs/langgraph/uv.lock b/libs/langgraph/uv.lock index 3df4c7f09..7a3e1ff2c 100644 --- a/libs/langgraph/uv.lock +++ b/libs/langgraph/uv.lock @@ -1471,7 +1471,7 @@ wheels = [ [[package]] name = "langgraph-sdk" -version = "0.1.70" +version = "0.1.71" source = { editable = "../sdk-py" } dependencies = [ { name = "httpx" }, diff --git a/libs/prebuilt/uv.lock b/libs/prebuilt/uv.lock index 081b09537..08084a098 100644 --- a/libs/prebuilt/uv.lock +++ b/libs/prebuilt/uv.lock @@ -511,7 +511,7 @@ dev = [ [[package]] name = "langgraph-sdk" -version = "0.1.70" +version = "0.1.71" source = { editable = "../sdk-py" } dependencies = [ { name = "httpx" }, diff --git a/libs/sdk-js/package.json b/libs/sdk-js/package.json index e820f7634..72a511853 100644 --- a/libs/sdk-js/package.json +++ b/libs/sdk-js/package.json @@ -1,6 +1,6 @@ { "name": "@langchain/langgraph-sdk", - "version": "0.0.84", + "version": "0.0.85", "description": "Client library for interacting with the LangGraph API", "type": "module", "packageManager": "yarn@1.22.19", diff --git a/libs/sdk-js/src/client.ts b/libs/sdk-js/src/client.ts index cfed5c927..eb9a804f3 100644 --- a/libs/sdk-js/src/client.ts +++ b/libs/sdk-js/src/client.ts @@ -9,6 +9,7 @@ import { Cron, CronCreateForThreadResponse, CronCreateResponse, + CronSortBy, DefaultValues, GraphSchema, Item, @@ -415,6 +416,8 @@ export class CronsClient extends BaseClient { threadId?: string; limit?: number; offset?: number; + sortBy?: CronSortBy; + sortOrder?: SortOrder; }): Promise { return this.fetch("/runs/crons/search", { method: "POST", @@ -423,6 +426,8 @@ export class CronsClient extends BaseClient { thread_id: query?.threadId ?? undefined, limit: query?.limit ?? 10, offset: query?.offset ?? 0, + sort_by: query?.sortBy ?? undefined, + sort_order: query?.sortOrder ?? undefined, }, }); } diff --git a/libs/sdk-js/src/schema.ts b/libs/sdk-js/src/schema.ts index b77ec30bb..7ce1d097d 100644 --- a/libs/sdk-js/src/schema.ts +++ b/libs/sdk-js/src/schema.ts @@ -311,4 +311,12 @@ export type AssistantSortBy = export type ThreadSortBy = "thread_id" | "status" | "created_at" | "updated_at"; +export type CronSortBy = + | "cron_id" + | "assistant_id" + | "thread_id" + | "created_at" + | "updated_at" + | "next_run_date"; + export type SortOrder = "asc" | "desc"; diff --git a/libs/sdk-py/langgraph_sdk/client.py b/libs/sdk-py/langgraph_sdk/client.py index 52863229f..00ace666c 100644 --- a/libs/sdk-py/langgraph_sdk/client.py +++ b/libs/sdk-py/langgraph_sdk/client.py @@ -40,6 +40,7 @@ from langgraph_sdk.schema import ( Command, Config, Cron, + CronSortBy, DisconnectMode, GraphSchema, IfNotExists, @@ -2532,6 +2533,8 @@ class CronClient: thread_id: str | None = None, limit: int = 10, offset: int = 0, + sort_by: CronSortBy | None = None, + sort_order: SortOrder | None = None, headers: dict[str, str] | None = None, ) -> list[Cron]: """Get a list of cron jobs. @@ -2590,6 +2593,10 @@ class CronClient: "limit": limit, "offset": offset, } + if sort_by: + payload["sort_by"] = sort_by + if sort_order: + payload["sort_order"] = sort_order payload = {k: v for k, v in payload.items() if v is not None} return await self.http.post("/runs/crons/search", json=payload, headers=headers) @@ -3564,6 +3571,8 @@ class SyncAssistantsClient: graph_id: str | None = None, limit: int = 10, offset: int = 0, + sort_by: AssistantSortBy | None = None, + sort_order: SortOrder | None = None, headers: dict[str, str] | None = None, ) -> list[Assistant]: """Search for assistants. @@ -3599,6 +3608,10 @@ class SyncAssistantsClient: payload["metadata"] = metadata if graph_id: payload["graph_id"] = graph_id + if sort_by: + payload["sort_by"] = sort_by + if sort_order: + payload["sort_order"] = sort_order return self.http.post( "/assistants/search", json=payload, @@ -3869,6 +3882,8 @@ class SyncThreadsClient: status: ThreadStatus | None = None, limit: int = 10, offset: int = 0, + sort_by: ThreadSortBy | None = None, + sort_order: SortOrder | None = None, headers: dict[str, str] | None = None, ) -> list[Thread]: """Search for threads. @@ -3907,6 +3922,10 @@ class SyncThreadsClient: payload["values"] = values if status: payload["status"] = status + if sort_by: + payload["sort_by"] = sort_by + if sort_order: + payload["sort_order"] = sort_order return self.http.post("/threads/search", json=payload, headers=headers) def copy( @@ -5205,6 +5224,8 @@ class SyncCronClient: thread_id: str | None = None, limit: int = 10, offset: int = 0, + sort_by: CronSortBy | None = None, + sort_order: SortOrder | None = None, headers: dict[str, str] | None = None, ) -> list[Cron]: """Get a list of cron jobs. @@ -5262,6 +5283,10 @@ class SyncCronClient: "limit": limit, "offset": offset, } + if sort_by: + payload["sort_by"] = sort_by + if sort_order: + payload["sort_order"] = sort_order payload = {k: v for k, v in payload.items() if v is not None} return self.http.post("/runs/crons/search", json=payload, headers=headers) diff --git a/libs/sdk-py/langgraph_sdk/schema.py b/libs/sdk-py/langgraph_sdk/schema.py index 5aa413be9..0f15e6a1c 100644 --- a/libs/sdk-py/langgraph_sdk/schema.py +++ b/libs/sdk-py/langgraph_sdk/schema.py @@ -117,6 +117,13 @@ ThreadSortBy = Literal["thread_id", "status", "created_at", "updated_at"] The field to sort by. """ +CronSortBy = Literal[ + "cron_id", "assistant_id", "thread_id", "created_at", "updated_at", "next_run_date" +] +""" +The field to sort by. +""" + SortOrder = Literal["asc", "desc"] """ The order to sort by. diff --git a/libs/sdk-py/pyproject.toml b/libs/sdk-py/pyproject.toml index 8f1b6d92a..45e189be1 100644 --- a/libs/sdk-py/pyproject.toml +++ b/libs/sdk-py/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "langgraph-sdk" -version = "0.1.70" +version = "0.1.71" description = "SDK for interacting with LangGraph API" authors = [] requires-python = ">=3.9" diff --git a/libs/sdk-py/uv.lock b/libs/sdk-py/uv.lock index ef7f93a8a..ab2be380d 100644 --- a/libs/sdk-py/uv.lock +++ b/libs/sdk-py/uv.lock @@ -119,7 +119,7 @@ wheels = [ [[package]] name = "langgraph-sdk" -version = "0.1.70" +version = "0.1.71" source = { editable = "." } dependencies = [ { name = "httpx" },