feat(sdk-js): use event key instead of action, clean up interfaces

This commit is contained in:
Tat Dat Duong
2025-04-10 01:52:44 +02:00
parent 7dcc760fd8
commit 5debbb23ca
4 changed files with 18 additions and 16 deletions
+1 -1
View File
@@ -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",
+4 -1
View File
@@ -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";
+12 -9
View File
@@ -152,7 +152,7 @@ interface RunsCreate {
kwargs: Record<string, unknown>;
}
export interface ResourceActionType {
export interface EventValueMap {
["threads:create"]: ThreadCreate;
["threads:read"]: ThreadRead;
["threads:update"]: ThreadUpdate;
@@ -264,11 +264,13 @@ export type ToUserLike<T extends BaseAuthReturn> = 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<T extends BaseAuthReturn> {
(request: Request): PromiseMaybe<T>;
}
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, TUser>
: T extends keyof ActionType
? ActionCallbackParameter<T, TUser>
: T extends keyof ResourceActionType
: T extends keyof EventValueMap
? AuthCallbackParameter<T, TUser>
: never;
@@ -325,7 +328,7 @@ type OnParameter<
> = T extends OnKey[]
? OnSingleParameter<T[number], TUser>
: T extends "*"
? AuthCallbackParameter<keyof ResourceActionType, TUser>
? AuthCallbackParameter<keyof EventValueMap, TUser>
: T extends OnKey
? OnSingleParameter<T, TUser>
: never;
+1 -5
View File
@@ -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<boolean>;
@@ -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);