From 5debbb23cafec637418c3e2bfb56fb33b3962f84 Mon Sep 17 00:00:00 2001 From: Tat Dat Duong Date: Thu, 10 Apr 2025 01:52:44 +0200 Subject: [PATCH] feat(sdk-js): use `event` key instead of `action`, clean up interfaces --- libs/sdk-js/package.json | 2 +- libs/sdk-js/src/auth/index.ts | 5 ++++- libs/sdk-js/src/auth/types.ts | 21 ++++++++++++--------- libs/sdk-js/src/utils/async_caller.ts | 6 +----- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/libs/sdk-js/package.json b/libs/sdk-js/package.json index 29510712b..168c73bda 100644 --- a/libs/sdk-js/package.json +++ b/libs/sdk-js/package.json @@ -1,6 +1,6 @@ { "name": "@langchain/langgraph-sdk", - "version": "0.0.65", + "version": "0.0.66", "description": "Client library for interacting with the LangGraph API", "type": "module", "packageManager": "yarn@1.22.19", diff --git a/libs/sdk-js/src/auth/index.ts b/libs/sdk-js/src/auth/index.ts index cf995438d..2b0818f4a 100644 --- a/libs/sdk-js/src/auth/index.ts +++ b/libs/sdk-js/src/auth/index.ts @@ -35,5 +35,8 @@ export class Auth< } } -export type { Filters, ResourceActionType } from "./types.js"; +export type { + Filters as AuthFilters, + EventValueMap as AuthEventValueMap, +} from "./types.js"; export { HTTPException } from "./error.js"; diff --git a/libs/sdk-js/src/auth/types.ts b/libs/sdk-js/src/auth/types.ts index d2a39e05b..e9329bf54 100644 --- a/libs/sdk-js/src/auth/types.ts +++ b/libs/sdk-js/src/auth/types.ts @@ -152,7 +152,7 @@ interface RunsCreate { kwargs: Record; } -export interface ResourceActionType { +export interface EventValueMap { ["threads:create"]: ThreadCreate; ["threads:read"]: ThreadRead; ["threads:update"]: ThreadUpdate; @@ -264,11 +264,13 @@ export type ToUserLike = T extends string }; type CallbackParameter< + Event extends string = string, Resource extends string = string, Action extends string = string, Value extends unknown = unknown, TUser extends BaseUser = BaseUser, > = { + event: Event; resource: Resource; action: Action; value: Value; @@ -277,10 +279,11 @@ type CallbackParameter< }; type ContextMap = { - [ActionType in keyof ResourceActionType]: CallbackParameter< - ActionType extends `${infer Resource}:${string}` ? Resource : never, - ActionType, - ResourceActionType[ActionType], + [EventType in keyof EventValueMap]: CallbackParameter< + EventType, + EventType extends `${infer Resource}:${string}` ? Resource : never, + EventType extends `${string}:${infer Action}` ? Action : never, + EventValueMap[EventType], BaseUser >; }; @@ -290,7 +293,7 @@ type ActionCallbackParameter< TUser extends BaseUser = BaseUser, > = ContextMap[ActionType[T]] & { user: TUser }; type AuthCallbackParameter< - T extends keyof ResourceActionType, + T extends keyof EventValueMap, TUser extends BaseUser = BaseUser, > = ContextMap[T] & { user: TUser }; type ResourceCallbackParameter< @@ -306,7 +309,7 @@ export interface AuthenticateCallback { (request: Request): PromiseMaybe; } -type OnKey = keyof ResourceType | keyof ActionType | keyof ResourceActionType; +type OnKey = keyof ResourceType | keyof ActionType | keyof EventValueMap; type OnSingleParameter< T extends OnKey, @@ -315,7 +318,7 @@ type OnSingleParameter< ? ResourceCallbackParameter : T extends keyof ActionType ? ActionCallbackParameter - : T extends keyof ResourceActionType + : T extends keyof EventValueMap ? AuthCallbackParameter : never; @@ -325,7 +328,7 @@ type OnParameter< > = T extends OnKey[] ? OnSingleParameter : T extends "*" - ? AuthCallbackParameter + ? AuthCallbackParameter : T extends OnKey ? OnSingleParameter : never; diff --git a/libs/sdk-js/src/utils/async_caller.ts b/libs/sdk-js/src/utils/async_caller.ts index 72beefb54..5ee431622 100644 --- a/libs/sdk-js/src/utils/async_caller.ts +++ b/libs/sdk-js/src/utils/async_caller.ts @@ -12,10 +12,8 @@ const STATUS_NO_RETRY = [ 406, // Not Acceptable 407, // Proxy Authentication Required 408, // Request Timeout - 422, // Unprocessable Entity -]; -const STATUS_IGNORE = [ 409, // Conflict + 422, // Unprocessable Entity ]; type ResponseCallback = (response?: Response) => Promise; @@ -171,8 +169,6 @@ export class AsyncCaller { if (error instanceof HTTPError) { if (STATUS_NO_RETRY.includes(error.status)) { throw error; - } else if (STATUS_IGNORE.includes(error.status)) { - return; } if (onFailedResponseHook && error.response) { await onFailedResponseHook(error.response);