langgraph-api 0.1.0__py3-none-any.whl → 0.1.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of langgraph-api might be problematic. Click here for more details.

@@ -0,0 +1,79 @@
1
+ import {
2
+ StateGraph,
3
+ END,
4
+ Send,
5
+ MessagesAnnotation,
6
+ Annotation,
7
+ START,
8
+ LangGraphRunnableConfig,
9
+ } from "@langchain/langgraph";
10
+ import { BaseMessage, ToolMessage } from "@langchain/core/messages";
11
+ import { FakeListChatModel } from "@langchain/core/utils/testing";
12
+
13
+ const getStableModel = (() => {
14
+ const cached: Record<string, FakeListChatModel> = {};
15
+ return (threadId: string) => {
16
+ cached[threadId] ??= new FakeListChatModel({
17
+ responses: ["begin", "end\u2028"],
18
+ });
19
+ return cached[threadId];
20
+ };
21
+ })();
22
+
23
+ const AgentState = Annotation.Root({
24
+ key_one: Annotation<string>(),
25
+ key_two: Annotation<string>(),
26
+ sleep: Annotation<number>(),
27
+ messages: MessagesAnnotation.spec.messages,
28
+ });
29
+
30
+ async function callModel(
31
+ state: typeof AgentState.State,
32
+ config: LangGraphRunnableConfig
33
+ ): Promise<typeof AgentState.Update> {
34
+ let userId: string | undefined;
35
+
36
+ if (config.configurable?.langgraph_auth_user != null) {
37
+ const user = config.configurable?.langgraph_auth_user as
38
+ | { identity: string }
39
+ | undefined;
40
+
41
+ userId = user?.identity;
42
+ }
43
+
44
+ const model = getStableModel(config.configurable?.thread_id ?? "$");
45
+ const existing = await config.store?.get([userId ?? "ALL"], "key_one");
46
+ if (!existing) {
47
+ const text = state.messages.at(-1)?.content;
48
+ await config.store?.put([userId ?? "ALL"], "key_one", { text });
49
+ }
50
+
51
+ const response = await model.invoke(state.messages);
52
+ const result: typeof AgentState.Update = { messages: [response] };
53
+ return result;
54
+ }
55
+
56
+ async function callTool(
57
+ message: BaseMessage
58
+ ): Promise<typeof AgentState.Update> {
59
+ const response = new ToolMessage(
60
+ `tool_call__${message.content}`,
61
+ "tool_call_id"
62
+ );
63
+ return { messages: [response] };
64
+ }
65
+
66
+ function shouldContinue(state: typeof AgentState.State): typeof END | Send {
67
+ const lastMessage = state.messages.at(-1);
68
+ if ((lastMessage?.content as string).startsWith("end")) return END;
69
+ return new Send("tool", lastMessage);
70
+ }
71
+
72
+ const workflow = new StateGraph(AgentState)
73
+ .addNode("agent", callModel)
74
+ .addNode("tool", callTool)
75
+ .addEdge(START, "agent")
76
+ .addConditionalEdges("agent", shouldContinue)
77
+ .addEdge("tool", "agent");
78
+
79
+ export const graph = workflow.compile();
@@ -0,0 +1,106 @@
1
+ import { Auth, HTTPException } from "@langchain/langgraph-sdk/auth";
2
+ import { JWTPayload, jwtVerify } from "jose";
3
+
4
+ const SECRET_KEY = new TextEncoder().encode(
5
+ "09d25e094faa6ca2556c818166b7a9563b93f7099f6f0f4caa6cf63b88e8d3e7"
6
+ );
7
+ const ALGORITHM = "HS256";
8
+
9
+ const USERS_DB: Record<
10
+ string,
11
+ {
12
+ username: string;
13
+ identity: string;
14
+ full_name: string;
15
+ email: string;
16
+ permissions: string[];
17
+ hashed_password: string;
18
+ disabled: boolean;
19
+ }
20
+ > = {
21
+ johndoe: {
22
+ username: "johndoe",
23
+ identity: "johndoe",
24
+ full_name: "John Doe",
25
+ email: "johndoe@example.com",
26
+ permissions: ["read", "write", "assistants:write", "me"],
27
+ hashed_password:
28
+ "$2b$12$EixZaYVK1fsbw1ZfbX3OXePaWxn96p36WQoeG6Lruj3vjPGga31lW",
29
+ disabled: false,
30
+ },
31
+ alice: {
32
+ username: "alice",
33
+ identity: "alice",
34
+ full_name: "Alice Chains",
35
+ email: "alicechains@example.com",
36
+ permissions: ["read", "write", "assistants:write", "me"],
37
+ hashed_password:
38
+ "$2b$12$gSvqqUPvlXP2tfVFaWK1Be7DlH.PKZbv5H8KnzzVgXXbVxpva.pFm",
39
+ disabled: true,
40
+ },
41
+ };
42
+ export const auth = new Auth()
43
+ .authenticate(async (request) => {
44
+ const authorization = request.headers.get("Authorization");
45
+
46
+ const exc = new HTTPException(401, {
47
+ message: "Could not validate credentials",
48
+ headers: { "WWW-Authenticate": "Bearer" },
49
+ });
50
+
51
+ if (!authorization?.toLocaleLowerCase().startsWith("bearer ")) {
52
+ throw exc;
53
+ }
54
+
55
+ let payload: JWTPayload | undefined;
56
+ try {
57
+ const token = authorization.split(" ")[1];
58
+ const result = await jwtVerify(token, SECRET_KEY, {
59
+ algorithms: [ALGORITHM],
60
+ });
61
+ payload = result.payload;
62
+ } catch (error) {
63
+ throw new HTTPException(401, {
64
+ message: "Failed to verify JWT token",
65
+ cause: error,
66
+ });
67
+ }
68
+
69
+ const scopes = (payload["scopes"] ?? []) as string[];
70
+ const username = payload["sub"] as string | undefined;
71
+ const user = username ? USERS_DB[username] : null;
72
+ if (!user) throw exc;
73
+
74
+ let permissions = user.permissions ?? [];
75
+ permissions = scopes.filter((scope) => permissions.includes(scope));
76
+
77
+ return { ...user, permissions };
78
+ })
79
+ .on("*", ({ permissions }) => {
80
+ if (!permissions?.length) {
81
+ throw new HTTPException(403, { message: "Not authorized" });
82
+ }
83
+ })
84
+ .on("assistants:create", ({ value, user, permissions }) => {
85
+ if (!permissions?.includes("assistants:write")) {
86
+ throw new HTTPException(403, { message: "Not authorized" });
87
+ }
88
+
89
+ value.metadata ??= {};
90
+ value.metadata["owner"] = user.identity;
91
+ })
92
+ .on("assistants:search", (params) => ({ owner: params.user.identity }))
93
+ .on(["threads", "assistants"], ({ action, value, user }) => {
94
+ const filters = { owner: user.identity };
95
+ if (action === "create" || action === "update" || action === "create_run") {
96
+ value.metadata ??= {};
97
+ value.metadata["owner"] = user.identity;
98
+ }
99
+ return filters;
100
+ })
101
+ .on("store", ({ value, user }) => {
102
+ const identity = user.identity;
103
+ if (!identity || !value.namespace?.includes(identity)) {
104
+ throw new HTTPException(403, { message: "Not authorized" });
105
+ }
106
+ });
@@ -2,7 +2,9 @@
2
2
  "private": true,
3
3
  "dependencies": {
4
4
  "@langchain/core": "^0.3.40",
5
- "@langchain/langgraph": "^0.2.49"
5
+ "@langchain/langgraph": "^0.2.49",
6
+ "@langchain/langgraph-sdk": "^0.0.66",
7
+ "jose": "^6.0.10"
6
8
  },
7
9
  "devDependencies": {
8
10
  "tailwindcss": "^4.1.1"
@@ -32,10 +32,10 @@
32
32
  dependencies:
33
33
  uuid "^10.0.0"
34
34
 
35
- "@langchain/langgraph-sdk@~0.0.32":
36
- version "0.0.36"
37
- resolved "https://registry.yarnpkg.com/@langchain/langgraph-sdk/-/langgraph-sdk-0.0.36.tgz#b375884552ae3f1c7bf68a0248104786754d04cd"
38
- integrity sha512-KkAZM0uXBaMcD/dpGTBppOhbvNX6gz+Y1zFAC898OblegFkSvICrkd0oRQ5Ro/GWK/NAoDymnMUDXeZDdUkSuw==
35
+ "@langchain/langgraph-sdk@^0.0.66", "@langchain/langgraph-sdk@~0.0.32":
36
+ version "0.0.66"
37
+ resolved "https://registry.yarnpkg.com/@langchain/langgraph-sdk/-/langgraph-sdk-0.0.66.tgz#1a31c3b30d9cffff59910d95c77832e4606b7c3b"
38
+ integrity sha512-l0V4yfKXhHaTRK/1bKMfZ14k3wWZu27DWTlCUnbYJvdo7os5srhONgPCOqQgpazhi5EhXbW2EVgeu/wLW2zH6Q==
39
39
  dependencies:
40
40
  "@types/json-schema" "^7.0.15"
41
41
  p-queue "^6.6.2"
@@ -131,6 +131,11 @@ has-flag@^4.0.0:
131
131
  resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
132
132
  integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
133
133
 
134
+ jose@^6.0.10:
135
+ version "6.0.10"
136
+ resolved "https://registry.yarnpkg.com/jose/-/jose-6.0.10.tgz#52d96e1a671b4c02e13b71e0d35abea2e774712b"
137
+ integrity sha512-skIAxZqcMkOrSwjJvplIPYrlXGpxTPnro2/QWTDCxAdWQrSTV5/KqspMWmi5WAx5+ULswASJiZ0a+1B/Lxt9cw==
138
+
134
139
  js-tiktoken@^1.0.12:
135
140
  version "1.0.12"
136
141
  resolved "https://registry.yarnpkg.com/js-tiktoken/-/js-tiktoken-1.0.12.tgz#af0f5cf58e5e7318240d050c8413234019424211"
@@ -203,15 +203,15 @@
203
203
  zod "^3.22.4"
204
204
  zod-to-json-schema "^3.22.3"
205
205
 
206
- "@langchain/langgraph-api@~0.0.20":
207
- version "0.0.20"
208
- resolved "https://registry.yarnpkg.com/@langchain/langgraph-api/-/langgraph-api-0.0.20.tgz#32e5cfa736ea938d53fa61285bf673901f37e029"
209
- integrity sha512-MZA/6/th0oliK4UJb3SiEWwnMb/HO3sTr73uQxGoRJwjqCKJgYrnXHkU1eunclPcCeG86DanbEf/Rsn7UR4WeA==
206
+ "@langchain/langgraph-api@~0.0.21":
207
+ version "0.0.21"
208
+ resolved "https://registry.yarnpkg.com/@langchain/langgraph-api/-/langgraph-api-0.0.21.tgz#95e84d941298e3b6bcaa749d6cdb030d9bdaa5a3"
209
+ integrity sha512-vQLxvYf3opVBdg5ZosObfwqJgfpLu729+Fz2sq9k+8tIMI0XKFnQw+UKTKyQYOUnsyDjRfZFr64AX2vRkWgF1w==
210
210
  dependencies:
211
211
  "@babel/code-frame" "^7.26.2"
212
212
  "@hono/node-server" "^1.12.0"
213
213
  "@hono/zod-validator" "^0.2.2"
214
- "@langchain/langgraph-ui" "0.0.20"
214
+ "@langchain/langgraph-ui" "0.0.21"
215
215
  "@types/json-schema" "^7.0.15"
216
216
  "@typescript/vfs" "^1.6.0"
217
217
  dedent "^1.5.3"
@@ -242,30 +242,20 @@
242
242
  dependencies:
243
243
  uuid "^10.0.0"
244
244
 
245
- "@langchain/langgraph-sdk@^0.0.60":
246
- version "0.0.60"
247
- resolved "https://registry.yarnpkg.com/@langchain/langgraph-sdk/-/langgraph-sdk-0.0.60.tgz#eee259632f362298b23712ccf393903daf8affc9"
248
- integrity sha512-7ndeAdw1afVY72HpKEGw7AyuDlD7U3e4jxaJflxA+PXaFPiE0d/hQYvlPT84YmvqNzJN605hv7YcrOju2573bQ==
245
+ "@langchain/langgraph-sdk@^0.0.66", "@langchain/langgraph-sdk@~0.0.32":
246
+ version "0.0.66"
247
+ resolved "https://registry.yarnpkg.com/@langchain/langgraph-sdk/-/langgraph-sdk-0.0.66.tgz#1a31c3b30d9cffff59910d95c77832e4606b7c3b"
248
+ integrity sha512-l0V4yfKXhHaTRK/1bKMfZ14k3wWZu27DWTlCUnbYJvdo7os5srhONgPCOqQgpazhi5EhXbW2EVgeu/wLW2zH6Q==
249
249
  dependencies:
250
250
  "@types/json-schema" "^7.0.15"
251
251
  p-queue "^6.6.2"
252
252
  p-retry "4"
253
253
  uuid "^9.0.0"
254
254
 
255
- "@langchain/langgraph-sdk@~0.0.32":
256
- version "0.0.36"
257
- resolved "https://registry.yarnpkg.com/@langchain/langgraph-sdk/-/langgraph-sdk-0.0.36.tgz#b375884552ae3f1c7bf68a0248104786754d04cd"
258
- integrity sha512-KkAZM0uXBaMcD/dpGTBppOhbvNX6gz+Y1zFAC898OblegFkSvICrkd0oRQ5Ro/GWK/NAoDymnMUDXeZDdUkSuw==
259
- dependencies:
260
- "@types/json-schema" "^7.0.15"
261
- p-queue "^6.6.2"
262
- p-retry "4"
263
- uuid "^9.0.0"
264
-
265
- "@langchain/langgraph-ui@0.0.20", "@langchain/langgraph-ui@~0.0.20":
266
- version "0.0.20"
267
- resolved "https://registry.yarnpkg.com/@langchain/langgraph-ui/-/langgraph-ui-0.0.20.tgz#9075acef91c287cfafa81d4eef34a6a51ba1a4d1"
268
- integrity sha512-x6fF6STKx0gsCAtEqEwyIib6klwLboqvpXsobHVeFOx6qGqOGsVKbq6rgCIKxQz8tZeSQVXslas4/20SFUjwKA==
255
+ "@langchain/langgraph-ui@0.0.21", "@langchain/langgraph-ui@~0.0.21":
256
+ version "0.0.21"
257
+ resolved "https://registry.yarnpkg.com/@langchain/langgraph-ui/-/langgraph-ui-0.0.21.tgz#522c87f602954b8bcb75f63b983ec2de18c14b3f"
258
+ integrity sha512-9XauIpo6KkztOmp4ayR+2gzCPHsGIZJl2x5EwPwCnipzsLo0zbm6Frc8fLZyZtaZrU3sIhVpguLB8ORYPKsB3g==
269
259
  dependencies:
270
260
  "@commander-js/extra-typings" "^13.0.0"
271
261
  commander "^13.0.0"
@@ -1034,6 +1024,11 @@ jiti@^2.4.2:
1034
1024
  resolved "https://registry.yarnpkg.com/jiti/-/jiti-2.4.2.tgz#d19b7732ebb6116b06e2038da74a55366faef560"
1035
1025
  integrity sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==
1036
1026
 
1027
+ jose@^6.0.10:
1028
+ version "6.0.10"
1029
+ resolved "https://registry.yarnpkg.com/jose/-/jose-6.0.10.tgz#52d96e1a671b4c02e13b71e0d35abea2e774712b"
1030
+ integrity sha512-skIAxZqcMkOrSwjJvplIPYrlXGpxTPnro2/QWTDCxAdWQrSTV5/KqspMWmi5WAx5+ULswASJiZ0a+1B/Lxt9cw==
1031
+
1037
1032
  js-tiktoken@^1.0.12:
1038
1033
  version "1.0.15"
1039
1034
  resolved "https://registry.yarnpkg.com/js-tiktoken/-/js-tiktoken-1.0.15.tgz#92a7d829f6950c2cfb35cc52555502e3d6e2ebac"
langgraph_api/stream.py CHANGED
@@ -260,12 +260,13 @@ async def consume(stream: AnyStream, run_id: str) -> None:
260
260
  run_id, mode, await run_in_executor(None, json_dumpb, payload)
261
261
  )
262
262
  except Exception as e:
263
+ g = e
263
264
  if isinstance(e, ExceptionGroup):
264
265
  e = e.exceptions[0]
265
266
  await Runs.Stream.publish(
266
267
  run_id, "error", await run_in_executor(None, json_dumpb, e)
267
268
  )
268
- raise e from None
269
+ raise e from g
269
270
 
270
271
 
271
272
  def get_feedback_urls(run_id: str, feedback_keys: list[str]) -> dict[str, str]:
langgraph_api/worker.py CHANGED
@@ -35,11 +35,6 @@ try:
35
35
  except ImportError:
36
36
  InFailedSqlTransaction = ()
37
37
 
38
- try:
39
- from blockbuster import BlockingError
40
- except ImportError:
41
- BlockingError = ()
42
-
43
38
  logger = structlog.stdlib.get_logger(__name__)
44
39
 
45
40
 
@@ -247,23 +242,6 @@ async def worker(
247
242
  await Runs.set_status(conn, run_id, "pending")
248
243
  raise
249
244
  except Exception as exc:
250
- if isinstance(exc, BlockingError):
251
- # Only occurs in the dev server
252
- exc.add_note(
253
- "Heads up! LangGraph identified a synchronous blocking call in your code. "
254
- "When running in an ASGI web server, blocking calls can degrade performance for everyone since they tie up the event loop.\n\n"
255
- "Here are your options to fix this:\n\n"
256
- "1. Best approach: Convert any blocking code to use async/await patterns\n"
257
- " For example, use 'await aiohttp.get()' instead of 'requests.get()'\n\n"
258
- "2. Quick fix: Move blocking operations to a separate thread\n"
259
- " Example: 'await asyncio.to_thread(your_blocking_function)'\n\n"
260
- "3. Override (if you can't change the code):\n"
261
- " - For development: Run 'langgraph dev --allow-blocking'\n"
262
- " - For deployment: Set 'BG_JOB_ISOLATED_LOOPS=true' environment variable\n\n"
263
- "These blocking operations can prevent health checks and slow down other runs in your deployment. "
264
- "Following these recommendations will help keep your LangGraph application running smoothly!"
265
- )
266
-
267
245
  exception = exc
268
246
  status = "error"
269
247
  run_ended_at = datetime.now(UTC).isoformat()
@@ -296,6 +274,7 @@ async def worker(
296
274
  # Note we don't handle asyncio.CancelledError here, as we want to
297
275
  # let it bubble up and rollback db transaction, thus marking the run
298
276
  # as available to be picked up by another worker
277
+
299
278
  return {
300
279
  "checkpoint": checkpoint,
301
280
  "status": status,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: langgraph-api
3
- Version: 0.1.0
3
+ Version: 0.1.2
4
4
  Summary:
5
5
  License: Elastic-2.0
6
6
  Author: Nuno Campos
@@ -11,7 +11,6 @@ Classifier: Programming Language :: Python :: 3
11
11
  Classifier: Programming Language :: Python :: 3.11
12
12
  Classifier: Programming Language :: Python :: 3.12
13
13
  Classifier: Programming Language :: Python :: 3.13
14
- Requires-Dist: blockbuster (>=1.5.24,<2.0.0)
15
14
  Requires-Dist: cloudpickle (>=3.0.0,<4.0.0)
16
15
  Requires-Dist: cryptography (>=42.0.0,<45.0)
17
16
  Requires-Dist: httpx (>=0.25.0)
@@ -1,5 +1,5 @@
1
1
  LICENSE,sha256=ZPwVR73Biwm3sK6vR54djCrhaRiM4cAD2zvOQZV8Xis,3859
2
- langgraph_api/__init__.py,sha256=kUR5RAFc7HCeiqdlX36dZOHkUI5wI6V_43RpEcD8b-0,22
2
+ langgraph_api/__init__.py,sha256=rnObPjuBcEStqSO0S6gsdS_ot8ITOQjVj_-P1LUUYpg,22
3
3
  langgraph_api/api/__init__.py,sha256=ohkuKTIYaWMAnr2pck2XAMrg4srA418VM76GQWRf5tU,5493
4
4
  langgraph_api/api/assistants.py,sha256=i-nxkScUB2g8bTVGtQIp1psABXlaY1aVx9pkB_UiRH8,14353
5
5
  langgraph_api/api/mcp.py,sha256=KbR19dtFCpJEiKYj3IfepAuJij8YZVELuVp7JY_yu_o,13754
@@ -11,7 +11,7 @@ langgraph_api/api/threads.py,sha256=EvKJDnZDWutKoB5KoTP40NPEqG5LJ-Iw97TLYHkhLbw,
11
11
  langgraph_api/api/ui.py,sha256=kdCQ-p0voxAqIFc72aqqzdPGH2v-yEBKzjRE6cUPvpU,2201
12
12
  langgraph_api/asyncio.py,sha256=h0eZ7aoDGnJpoxnHLZABVlj1jQ78UxjgiHntTmAEWek,8613
13
13
  langgraph_api/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- langgraph_api/auth/custom.py,sha256=sPYkF-xTdGIn_WMSE2tfR_azg_azzXPRWwUfCye6GQ8,21401
14
+ langgraph_api/auth/custom.py,sha256=QR49PnIfPPQZ6ygWmnMkSuAzgOpBBUbbz5kJ2yVwGmQ,21934
15
15
  langgraph_api/auth/langsmith/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  langgraph_api/auth/langsmith/backend.py,sha256=InScaL-HYCnxYEauhxU198gRZV9pJn9SzzBoR9Edn7g,2654
17
17
  langgraph_api/auth/langsmith/client.py,sha256=eKchvAom7hdkUXauD8vHNceBDDUijrFgdTV8bKd7x4Q,3998
@@ -23,46 +23,52 @@ langgraph_api/command.py,sha256=3O9v3i0OPa96ARyJ_oJbLXkfO8rPgDhLCswgO9koTFA,768
23
23
  langgraph_api/config.py,sha256=ZxVQitVzc9Rp9_j3myjW_NcSJ463kUAMmbxmmOS-tXY,10357
24
24
  langgraph_api/cron_scheduler.py,sha256=i87j4pJrcsmsqMKeKUs69gaAjrGaSM3pM3jnXdN5JDQ,2630
25
25
  langgraph_api/errors.py,sha256=Bu_i5drgNTyJcLiyrwVE_6-XrSU50BHf9TDpttki9wQ,1690
26
- langgraph_api/graph.py,sha256=ba3G0AiI7vyHAMLV7ol8nZnsLivcBRMGGmj9fiaO7PU,21086
26
+ langgraph_api/graph.py,sha256=GZtVXyP1l-nKlcRmB9s_m0U9UnifPUzIBBjDXmT11oo,20959
27
27
  langgraph_api/http.py,sha256=gYbxxjY8aLnsXeJymcJ7G7Nj_yToOGpPYQqmZ1_ggfA,5240
28
28
  langgraph_api/js/.gitignore,sha256=l5yI6G_V6F1600I1IjiUKn87f4uYIrBAYU1MOyBBhg4,59
29
- langgraph_api/js/base.py,sha256=xkBp5bwRrbpMFaAMViEU-qIlnsJuu3X_G8sa1pqNZK0,227
30
- langgraph_api/js/build.mts,sha256=oyP1GTnWAWl_dC4ny-h_9WxvWfZ8eJihGdrVdmMe81k,1834
31
- langgraph_api/js/client.mts,sha256=GJv846jWBRL0W_Yr6XtDu3UdYjdpndQ2v6dOfAhJXi0,26953
29
+ langgraph_api/js/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
+ langgraph_api/js/base.py,sha256=udYS5_OmmJI_d7kEUv0H4FINprZOW6tdXRkKDEdzNvc,469
31
+ langgraph_api/js/build.mts,sha256=4xcjo9rufSPUnnihdYp1EnDPSoaDQDV6aN8_UMjKp-g,1916
32
+ langgraph_api/js/client.mts,sha256=7v5BcWsR5w6wGCsxhm6xryBgI-5vfu2Or1YmT-GdKyY,28766
32
33
  langgraph_api/js/errors.py,sha256=Cm1TKWlUCwZReDC5AQ6SgNIVGD27Qov2xcgHyf8-GXo,361
33
- langgraph_api/js/global.d.ts,sha256=yDusqAyzVYhxfwqqcERUzucu2Pw9ma3-ug4DFyUvQfs,167
34
- langgraph_api/js/package.json,sha256=oNcWe7UIoJtqzoIVr47px6-1n8KziqwEhyi4wBpzTQ0,1266
35
- langgraph_api/js/remote.py,sha256=-f3o85b7bBWhcbgdO4fLmRBdqG_lAN56d9WWcTlEBGo,24808
34
+ langgraph_api/js/global.d.ts,sha256=j4GhgtQSZ5_cHzjSPcHgMJ8tfBThxrH-pUOrrJGteOU,196
35
+ langgraph_api/js/package.json,sha256=7lAok4cUtnfbE2E2P1FQDZgwmsZSQSl5O6eDoh1va-I,1289
36
+ langgraph_api/js/remote.py,sha256=OHxjncX1AAahUurlntkcgMYl852XgT19OxJeuvfEFsc,27959
36
37
  langgraph_api/js/schema.py,sha256=7idnv7URlYUdSNMBXQcw7E4SxaPxCq_Oxwnlml8q5ik,408
37
- langgraph_api/js/src/graph.mts,sha256=otgztTNzNJpeF2IOrpNuuwbSbpAy4eFE5dHtUd7eQwU,3742
38
+ langgraph_api/js/src/graph.mts,sha256=g86jOvbHj1B0o1jatBc2X5_JEZW2DSNwgUJ_kw1k8Cw,3569
38
39
  langgraph_api/js/src/hooks.mjs,sha256=XtktgmIHlls_DsknAuwib-z7TqCm0haRoTXvnkgzMuo,601
39
40
  langgraph_api/js/src/parser/parser.mts,sha256=c7WLEtMMwtVzir9O8VpJFVHKuLjtI86rde-In2lvaM0,13217
40
41
  langgraph_api/js/src/parser/parser.worker.mjs,sha256=2K6D0GlUmkk7LE39I8mryB8VZVE3-N9Cblji-ArPhFo,386
41
42
  langgraph_api/js/src/schema/types.mts,sha256=SRCYZTWjxyc7528DaapR_DCm3G5bfDSh4vf-JsYpk0w,62633
42
43
  langgraph_api/js/src/schema/types.template.mts,sha256=Dbjj_8d-OubqH4QY_OaxSu8ocZ4dVjI94oncL20fqtk,2235
44
+ langgraph_api/js/src/utils/files.mts,sha256=MXC-3gy0pkS82AjPBoUN83jY_qg37WSAPHOA7DwfB4M,141
43
45
  langgraph_api/js/src/utils/importMap.mts,sha256=pX4TGOyUpuuWF82kXcxcv3-8mgusRezOGe6Uklm2O5A,1644
44
46
  langgraph_api/js/src/utils/pythonSchemas.mts,sha256=98IW7Z_VP7L_CHNRMb3_MsiV3BgLE2JsWQY_PQcRR3o,685
45
47
  langgraph_api/js/src/utils/serde.mts,sha256=OuyyO9btvwWd55rU_H4x91dFEJiaPxL-lL9O6Zgo908,742
46
48
  langgraph_api/js/sse.py,sha256=lsfp4nyJyA1COmlKG9e2gJnTttf_HGCB5wyH8OZBER8,4105
47
- langgraph_api/js/tests/api.test.mts,sha256=cu2d5De-QsQUH9-e1vjxDOcUfPRV3bRKWuymAAOZeXk,62845
49
+ langgraph_api/js/tests/api.test.mts,sha256=DLuwYcLp8EwSEi27WP-Uc92og23OZldJxG0Wc5rXsNY,62951
50
+ langgraph_api/js/tests/auth.test.mts,sha256=A8JXfEep6S4jzduoSZeRQkqq9WsFbVE8Bvi3Hj_zx2w,21600
51
+ langgraph_api/js/tests/compose-postgres.auth.yml,sha256=iPfJbCeYZdV6GiRLiDn_f7qgpG4TyyGaQ4lV-ZXr6Qk,1768
48
52
  langgraph_api/js/tests/compose-postgres.yml,sha256=yz99nUy4Gm8vXuE5cnp2ekPzv7x5XWdwFPB9muAqeGE,1861
49
53
  langgraph_api/js/tests/graphs/.gitignore,sha256=26J8MarZNXh7snXD5eTpV3CPFTht5Znv8dtHYCLNfkw,12
50
54
  langgraph_api/js/tests/graphs/agent.css,sha256=QgcOC0W7IBsrg4pSqqpull-WTgtULZfx_lF_5ZxLdag,23
51
55
  langgraph_api/js/tests/graphs/agent.mts,sha256=E9WMv0alMv0njUEECqEsqoRk9NXJUgXW7SyQJ3GOZ8k,5396
52
56
  langgraph_api/js/tests/graphs/agent.ui.tsx,sha256=JDFJdpdIS6rglkXTaROSb1Is0j1kt5wN9ML8W4cuht8,175
57
+ langgraph_api/js/tests/graphs/agent_simple.mts,sha256=Ge7jzkV-DsSmJM9RBFrfMIONCtvU-_Ci2PqS9GaYf6w,2231
58
+ langgraph_api/js/tests/graphs/auth.mts,sha256=kF2TZP3n_urWigf0qgejZqTe93-341_Mhqe_qnBO_Io,3195
53
59
  langgraph_api/js/tests/graphs/command.mts,sha256=YO1_cEs_n9VsH_-IediLnI4Yc8KRlp4qrprUZXpAlwM,1163
54
60
  langgraph_api/js/tests/graphs/delay.mts,sha256=CFneKxqI4bGGK0lYjSbe80QirowPQlsRSuhDUKfydhk,703
55
61
  langgraph_api/js/tests/graphs/dynamic.mts,sha256=Wf_-keF7lkEfp_iyI45nlFGCeU8ARLQ8axc0LXh7TyE,659
56
62
  langgraph_api/js/tests/graphs/error.mts,sha256=l4tk89449dj1BnEF_0ZcfPt0Ikk1gl8L1RaSnRfr3xo,487
57
63
  langgraph_api/js/tests/graphs/langgraph.json,sha256=h6hV1wkNEUIpLBX9JOUKqtIBvbhvzyLEuWtBIHteseg,265
58
64
  langgraph_api/js/tests/graphs/nested.mts,sha256=4G7jSOSaFVQAza-_ARbK-Iai1biLlF2DIPDZXf7PLIY,1245
59
- langgraph_api/js/tests/graphs/package.json,sha256=SSYv9rN8XLeCKnVctKKwnksvy0RMh-Z9pC0j1lG17PM,174
65
+ langgraph_api/js/tests/graphs/package.json,sha256=xVclKB1ofQDeTocnu8gvxghPZg2llsIOcn47RuuIOHs,240
60
66
  langgraph_api/js/tests/graphs/weather.mts,sha256=A7mLK3xW8h5B-ZyJNAyX2M2fJJwzPJzXs4DYesJwreQ,1655
61
- langgraph_api/js/tests/graphs/yarn.lock,sha256=PWHTM2Wg9mdiovQBC7yMXfb382ffGux8z7hoQE6oWAQ,10673
67
+ langgraph_api/js/tests/graphs/yarn.lock,sha256=JP_za1t56zCne5O8QOc-kLrGrUDwSnBZ25F8tVObUuU,10957
62
68
  langgraph_api/js/tests/parser.test.mts,sha256=dEC8KTqKygeb1u39ZvpPqCT4HtfPD947nLmITt2buxA,27883
63
69
  langgraph_api/js/tests/utils.mts,sha256=q1V9gvT63v95onlfK9W4iv3n9ZJO3h-0RD9TdDYuRyY,439
64
70
  langgraph_api/js/ui.py,sha256=XNT8iBcyT8XmbIqSQUWd-j_00HsaWB2vRTVabwFBkik,2439
65
- langgraph_api/js/yarn.lock,sha256=m4erGgHd30Enxdu1wKnohnzotZiEDvXh-H83qitf_W4,83812
71
+ langgraph_api/js/yarn.lock,sha256=A4b9TS9cljYvyc-7RF9QY0zcP_NFJMe2-RVeTSlX2DY,83691
66
72
  langgraph_api/logging.py,sha256=JJIzbNIgLCN6ClQ3tA-Mm5ffuBGvpRDSZsEvnIlsuu4,3693
67
73
  langgraph_api/metadata.py,sha256=iM_3qaxFk1ItB4E5VaVb4n_mbqXzqZFMknVcHXnV0mI,3937
68
74
  langgraph_api/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -78,20 +84,20 @@ langgraph_api/serde.py,sha256=D5t_HeABMYKRAsoXWaWG0IsdaYM8yOXIez2wJUTIgT8,3963
78
84
  langgraph_api/server.py,sha256=Chjk-TddIVKqYqulRJb7AGYW6GZS3aU3T8ApNS7azGA,4853
79
85
  langgraph_api/sse.py,sha256=2wNodCOP2eg7a9mpSu0S3FQ0CHk2BBV_vv0UtIgJIcc,4034
80
86
  langgraph_api/state.py,sha256=8jx4IoTCOjTJuwzuXJKKFwo1VseHjNnw_CCq4x1SW14,2284
81
- langgraph_api/stream.py,sha256=EdFb1ctSzkIWGws4vJMkTAtdGIWMmvNuTSQ7FBazb4I,11354
87
+ langgraph_api/stream.py,sha256=SN96CLJ5QnSQ2YWRrkQb4K8XkdoSbloyFRj8N1vKcs8,11369
82
88
  langgraph_api/thread_ttl.py,sha256=4vch4nu1UOiYcqYRd7bTHsfs0Ei_lXuy9nBQ0uVJLyo,1765
83
89
  langgraph_api/utils.py,sha256=92mSti9GfGdMRRWyESKQW5yV-75Z9icGHnIrBYvdypU,3619
84
90
  langgraph_api/validation.py,sha256=Qo3EkSRXzIRe3GRuqRWbElTcUXRMXMyA1w0VbMvdwME,4934
85
91
  langgraph_api/webhook.py,sha256=1ncwO0rIZcj-Df9sxSnFEzd1gP1bfS4okeZQS8NSRoE,1382
86
- langgraph_api/worker.py,sha256=_i1cmpnjMzQtok5CzssjnR5IFxLk4dMyuPwreq8dorU,12679
92
+ langgraph_api/worker.py,sha256=DX_EZZs47cfb4_1owBkjiq-Mrr2vUoeGjotWvKY21uc,11290
87
93
  langgraph_license/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
94
  langgraph_license/middleware.py,sha256=_ODIYzQkymr6W9_Fp9wtf1kAQspnpsmr53xuzyF2GA0,612
89
95
  langgraph_license/validation.py,sha256=Uu_G8UGO_WTlLsBEY0gTVWjRR4czYGfw5YAD3HLZoj0,203
90
96
  langgraph_runtime/__init__.py,sha256=3stEi5ECApK7l0Y7q4vN-fQQz8cgJ9lyqAyhqDBqags,1075
91
97
  logging.json,sha256=3RNjSADZmDq38eHePMm1CbP6qZ71AmpBtLwCmKU9Zgo,379
92
98
  openapi.json,sha256=YW4ND-N3adriEoNwxw7UD9endO2xUZoodCtwVIfa2dU,132261
93
- langgraph_api-0.1.0.dist-info/LICENSE,sha256=ZPwVR73Biwm3sK6vR54djCrhaRiM4cAD2zvOQZV8Xis,3859
94
- langgraph_api-0.1.0.dist-info/METADATA,sha256=nFYl9c7QS5BKMRaRLTr1eFhOTPyVh4ouyYgbUalt_K8,4164
95
- langgraph_api-0.1.0.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
96
- langgraph_api-0.1.0.dist-info/entry_points.txt,sha256=3EYLgj89DfzqJHHYGxPH4A_fEtClvlRbWRUHaXO7hj4,77
97
- langgraph_api-0.1.0.dist-info/RECORD,,
99
+ langgraph_api-0.1.2.dist-info/LICENSE,sha256=ZPwVR73Biwm3sK6vR54djCrhaRiM4cAD2zvOQZV8Xis,3859
100
+ langgraph_api-0.1.2.dist-info/METADATA,sha256=AXwaqScw3Ar7ugD1VPcHsz1QZ-Aa7HuCGY2fsWe5Aho,4119
101
+ langgraph_api-0.1.2.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
102
+ langgraph_api-0.1.2.dist-info/entry_points.txt,sha256=3EYLgj89DfzqJHHYGxPH4A_fEtClvlRbWRUHaXO7hj4,77
103
+ langgraph_api-0.1.2.dist-info/RECORD,,