langgraph-api 0.2.9__py3-none-any.whl → 0.2.10__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.

langgraph_api/__init__.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.2.9"
1
+ __version__ = "0.2.10"
@@ -4,13 +4,10 @@ import "./src/preload.mjs";
4
4
  import { z } from "zod";
5
5
  import * as fs from "node:fs/promises";
6
6
  import * as path from "node:path";
7
- import {
8
- type GraphSchema,
9
- resolveGraph,
10
- runGraphSchemaWorker,
11
- } from "./src/graph.mts";
7
+ import { type GraphSchema, resolveGraph } from "./src/graph.mts";
12
8
  import { build } from "@langchain/langgraph-ui";
13
9
  import { checkLangGraphSemver } from "@langchain/langgraph-api/semver";
10
+ import { getStaticGraphSchema } from "@langchain/langgraph-api/schema";
14
11
  import { filterValidExportPath } from "./src/utils/files.mts";
15
12
 
16
13
  const __dirname = new URL(".", import.meta.url).pathname;
@@ -54,7 +51,7 @@ async function main() {
54
51
 
55
52
  try {
56
53
  console.info(`[${graphId}]: Extracting schema`);
57
- GRAPH_SCHEMAS[graphId] = await runGraphSchemaWorker(spec, {
54
+ GRAPH_SCHEMAS[graphId] = await getStaticGraphSchema(spec, {
58
55
  timeoutMs: 120_000,
59
56
  });
60
57
  } catch (error) {
@@ -38,7 +38,6 @@ import { BaseMessageChunk, isBaseMessage } from "@langchain/core/messages";
38
38
  import type { PyItem, PyResult } from "./src/utils/pythonSchemas.mts";
39
39
  import type { RunnableConfig } from "@langchain/core/runnables";
40
40
  import {
41
- runGraphSchemaWorker,
42
41
  GraphSchema,
43
42
  resolveGraph,
44
43
  GraphSpec,
@@ -52,6 +51,10 @@ import {
52
51
  authorize,
53
52
  registerAuth,
54
53
  } from "@langchain/langgraph-api/auth";
54
+ import {
55
+ getRuntimeGraphSchema,
56
+ getStaticGraphSchema,
57
+ } from "@langchain/langgraph-api/schema";
55
58
  import { filterValidExportPath } from "./src/utils/files.mts";
56
59
 
57
60
  const logger = createLogger({
@@ -177,7 +180,7 @@ async function getOrExtractSchema(graphId: string) {
177
180
  // ignore
178
181
  }
179
182
 
180
- GRAPH_SCHEMA[graphId] = await runGraphSchemaWorker(GRAPH_SPEC[graphId], {
183
+ GRAPH_SCHEMA[graphId] = await getStaticGraphSchema(GRAPH_SPEC[graphId], {
181
184
  timeoutMs,
182
185
  });
183
186
  timer.done({ message: `Extracting schema for ${graphId} finished` });
@@ -482,6 +485,15 @@ function pyItemToJs(item?: PyItem): Item | undefined {
482
485
  };
483
486
  }
484
487
 
488
+ function isPyItem(result: unknown): result is PyItem {
489
+ return (
490
+ result != null &&
491
+ typeof result === "object" &&
492
+ "value" in result &&
493
+ "key" in result
494
+ );
495
+ }
496
+
485
497
  export class RemoteStore extends BaseStore {
486
498
  async batch<Op extends Operation[]>(
487
499
  operations: Op,
@@ -492,16 +504,10 @@ export class RemoteStore extends BaseStore {
492
504
 
493
505
  return results.map((result) => {
494
506
  if (Array.isArray(result)) {
495
- return result.map((item) => pyItemToJs(item));
496
- } else if (
497
- result &&
498
- typeof result === "object" &&
499
- "value" in result &&
500
- "key" in result
501
- ) {
502
- return pyItemToJs(result);
507
+ return result.map((item) => (isPyItem(item) ? pyItemToJs(item) : item));
503
508
  }
504
- return result;
509
+
510
+ return isPyItem(result) ? pyItemToJs(result) : result;
505
511
  }) as OperationResults<Op>;
506
512
  }
507
513
 
@@ -788,25 +794,33 @@ async function getSubgraphsRequest(
788
794
  rawPayload: z.infer<typeof GetSubgraphsPayload>,
789
795
  ) {
790
796
  const { graph_id: graphId, ...payload } = rawPayload;
791
- const graphConfig = getRunnableConfig(payload.graph_config);
792
- const graph = await getGraph(graphId, graphConfig, payload.graph_name);
793
- const result: Array<[name: string, Record<string, any>]> = [];
794
797
 
795
- const graphSchema = await getOrExtractSchema(graphId);
796
- const rootGraphId = Object.keys(graphSchema).find((i) => !i.includes("|"));
798
+ const config = getRunnableConfig(payload.graph_config);
799
+ const graph = await getGraph(graphId, config, payload.graph_name);
797
800
 
798
- if (!rootGraphId) throw new Error("Failed to find root graph");
801
+ const result: Array<[name: string, schema: Record<string, any>]> = [];
802
+ let graphSchemaPromise: ReturnType<typeof getOrExtractSchema> | undefined;
799
803
 
800
- for await (const [name] of graph.getSubgraphsAsync(
804
+ for await (const [ns, subgraph] of graph.getSubgraphsAsync(
801
805
  payload.namespace ?? undefined,
802
806
  payload.recurse ?? undefined,
803
807
  )) {
804
- const schema =
805
- graphSchema[`${rootGraphId}|${name}`] || graphSchema[rootGraphId];
806
- result.push([name, schema]);
808
+ const schema = await (async () => {
809
+ const runtimeSchema = await getRuntimeGraphSchema(subgraph);
810
+ if (runtimeSchema) return runtimeSchema;
811
+
812
+ graphSchemaPromise ??= getOrExtractSchema(graphId);
813
+ const graphSchema = await graphSchemaPromise;
814
+ const rootGraphId = Object.keys(graphSchema).find(
815
+ (i) => !i.includes("|"),
816
+ );
817
+ if (!rootGraphId) throw new Error("Failed to find root graph");
818
+ return graphSchema[`${rootGraphId}|${ns}`] || graphSchema[rootGraphId];
819
+ })();
820
+
821
+ result.push([ns, schema]);
807
822
  }
808
823
 
809
- // TODO: make this a stream
810
824
  return Object.fromEntries(result);
811
825
  }
812
826
 
@@ -864,14 +878,21 @@ const GetSchemaPayload = z.object({
864
878
 
865
879
  async function getSchemaRequest(payload: z.infer<typeof GetSchemaPayload>) {
866
880
  const { graph_id: graphId } = payload;
867
- // TODO: add support for schema inference with dynamic graphs (now that Zod is supported)
868
881
 
869
- const schemas = await getOrExtractSchema(graphId);
870
- const rootGraphId = Object.keys(schemas).find((i) => !i.includes("|"));
871
- if (!rootGraphId) {
872
- throw new Error("Failed to find root graph");
873
- }
874
- return schemas[rootGraphId];
882
+ const config = getRunnableConfig(payload.graph_config);
883
+ const graph = await getGraph(graphId, config, payload.graph_name);
884
+
885
+ const schema = await (async () => {
886
+ const runtimeSchema = await getRuntimeGraphSchema(graph);
887
+ if (runtimeSchema) return runtimeSchema;
888
+
889
+ const graphSchema = await getOrExtractSchema(graphId);
890
+ const rootGraphId = Object.keys(graphSchema).find((i) => !i.includes("|"));
891
+ if (!rootGraphId) throw new Error("Failed to find root graph");
892
+ return graphSchema[rootGraphId];
893
+ })();
894
+
895
+ return schema;
875
896
  }
876
897
 
877
898
  const GetStateHistoryPayload = z.object({
@@ -24,8 +24,8 @@
24
24
  "undici": "^6.21.1",
25
25
  "uuid": "^10.0.0",
26
26
  "winston": "^3.17.0",
27
- "@langchain/langgraph-api": "~0.0.29",
28
- "@langchain/langgraph-ui": "~0.0.29",
27
+ "@langchain/langgraph-api": "~0.0.32",
28
+ "@langchain/langgraph-ui": "~0.0.32",
29
29
  "zod": "^3.23.8"
30
30
  },
31
31
  "resolutions": {
@@ -1,8 +1,7 @@
1
- import { Worker } from "node:worker_threads";
2
- import { register } from "node:module";
3
1
  import * as fs from "node:fs/promises";
4
- import type { CompiledGraph, Graph } from "@langchain/langgraph";
5
2
  import * as path from "node:path";
3
+
4
+ import type { CompiledGraph, Graph } from "@langchain/langgraph";
6
5
  import type { JSONSchema7 } from "json-schema";
7
6
 
8
7
  export interface GraphSchema {
@@ -40,14 +39,14 @@ export async function resolveGraph(
40
39
  options?: { onlyFilePresence?: boolean },
41
40
  ) {
42
41
  const [userFile, exportSymbol] = spec.split(":", 2);
42
+ const sourceFile = path.resolve(process.cwd(), userFile);
43
43
 
44
44
  // validate file exists
45
- await fs.stat(userFile);
45
+ await fs.stat(sourceFile);
46
46
  if (options?.onlyFilePresence) {
47
- return { sourceFile: userFile, exportSymbol, resolved: undefined };
47
+ return { sourceFile, exportSymbol, resolved: undefined };
48
48
  }
49
49
 
50
- const sourceFile = path.resolve(process.cwd(), userFile);
51
50
  type GraphLike = CompiledGraph<string> | Graph<string>;
52
51
 
53
52
  type GraphUnknown =
@@ -89,29 +88,3 @@ export async function resolveGraph(
89
88
 
90
89
  return { sourceFile, exportSymbol, resolved };
91
90
  }
92
-
93
- export async function runGraphSchemaWorker(
94
- spec: GraphSpec,
95
- options?: { timeoutMs?: number },
96
- ) {
97
- return await new Promise<Record<string, GraphSchema>>((resolve, reject) => {
98
- const worker = new Worker(
99
- new URL("./parser/parser.worker.mjs", import.meta.url).pathname,
100
- );
101
-
102
- // Set a timeout to reject if the worker takes too long
103
- const timeoutId = setTimeout(() => {
104
- worker.terminate();
105
- reject(new Error("Schema extract worker timed out"));
106
- }, options?.timeoutMs ?? 30_000);
107
-
108
- worker.on("message", (result) => {
109
- worker.terminate();
110
- clearTimeout(timeoutId);
111
- resolve(result);
112
- });
113
-
114
- worker.on("error", reject);
115
- worker.postMessage(spec);
116
- });
117
- }
@@ -561,7 +561,9 @@ describe("runs", () => {
561
561
  }
562
562
 
563
563
  if (chunk.event === "values") {
564
- const messageIds = chunk.data.messages.map((message) => message.id);
564
+ const messageIds = chunk.data.messages.map(
565
+ (message: any) => message.id,
566
+ );
565
567
  expect(messageIds.slice(0, -1)).toEqual(previousMessageIds);
566
568
  previousMessageIds = messageIds;
567
569
  }
@@ -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.29":
207
- version "0.0.29"
208
- resolved "https://registry.yarnpkg.com/@langchain/langgraph-api/-/langgraph-api-0.0.29.tgz#787e01675250720d293e3363ff579b601a9c94ab"
209
- integrity sha512-WJVOWFJBEo7sCUtzchFRhFWT4+Zn3evKakmLGDJihMZ2nrNeoaordEUmbsXMLiQVOe3bP7Fpweq3mSPIwxQyyQ==
206
+ "@langchain/langgraph-api@~0.0.32":
207
+ version "0.0.32"
208
+ resolved "https://registry.yarnpkg.com/@langchain/langgraph-api/-/langgraph-api-0.0.32.tgz#65f41373318055b330fa64e7d4ccd7c994f7dc8d"
209
+ integrity sha512-wYflud8iCGjwh3/GtzrTeWlwcc91kXBa49Goc2iaHcJRjMnTbl+loE3eklegDPnQGx1VKUCiB9qW/HutxuqXGA==
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.29"
214
+ "@langchain/langgraph-ui" "0.0.32"
215
215
  "@types/json-schema" "^7.0.15"
216
216
  "@typescript/vfs" "^1.6.0"
217
217
  dedent "^1.5.3"
@@ -256,10 +256,10 @@
256
256
  p-retry "4"
257
257
  uuid "^9.0.0"
258
258
 
259
- "@langchain/langgraph-ui@0.0.29", "@langchain/langgraph-ui@~0.0.29":
260
- version "0.0.29"
261
- resolved "https://registry.yarnpkg.com/@langchain/langgraph-ui/-/langgraph-ui-0.0.29.tgz#98659cc56f0e8e074a9a0b2e33e967dc5f30e79f"
262
- integrity sha512-FADBt6B1/egKSpZFmTa6vxonBK9lF6EmeKoBEWh/XTkO6lD5zsejWoRgT+LR2x22CHJvfvCQtXxgP5y8AtxsQw==
259
+ "@langchain/langgraph-ui@0.0.32", "@langchain/langgraph-ui@~0.0.32":
260
+ version "0.0.32"
261
+ resolved "https://registry.yarnpkg.com/@langchain/langgraph-ui/-/langgraph-ui-0.0.32.tgz#7e0cab750ba1e65f47d7b1d2adf955a36e50664e"
262
+ integrity sha512-65QZpouvw4P+hCpklYebNiwR88M84h7awjNB6FaKWHvCZa6NcSzlruFa/PnvU1o/kRK5NNpXNPyDUQLhT3tmTA==
263
263
  dependencies:
264
264
  "@commander-js/extra-typings" "^13.0.0"
265
265
  commander "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: langgraph-api
3
- Version: 0.2.9
3
+ Version: 0.2.10
4
4
  Summary:
5
5
  License: Elastic-2.0
6
6
  Author: Nuno Campos
@@ -1,5 +1,5 @@
1
1
  LICENSE,sha256=ZPwVR73Biwm3sK6vR54djCrhaRiM4cAD2zvOQZV8Xis,3859
2
- langgraph_api/__init__.py,sha256=F8OVhAhMXSkvvXYgZtbPn2SG1AQC3joK4yu-FrHt81Y,22
2
+ langgraph_api/__init__.py,sha256=waXgc7p-jgGCsUjdVfO_KjlVZblnCvrzf4A0dsBj_lg,23
3
3
  langgraph_api/api/__init__.py,sha256=YVzpbn5IQotvuuLG9fhS9QMrxXfP4s4EpEMG0n4q3Nw,5625
4
4
  langgraph_api/api/assistants.py,sha256=mcKaVeNG8hQAV4IQDhaukS7FgVqTIVQNTyti3GfK2KI,14649
5
5
  langgraph_api/api/mcp.py,sha256=RvRYgANqRzNQzSmgjNkq4RlKTtoEJYil04ot9lsmEtE,14352
@@ -29,27 +29,23 @@ langgraph_api/js/.gitignore,sha256=l5yI6G_V6F1600I1IjiUKn87f4uYIrBAYU1MOyBBhg4,5
29
29
  langgraph_api/js/.prettierrc,sha256=0es3ovvyNIqIw81rPQsdt1zCQcOdBqyR_DMbFE4Ifms,19
30
30
  langgraph_api/js/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
31
  langgraph_api/js/base.py,sha256=gjY6K8avI03OrI-Hy6a311fQ_EG5r_x8hUYlc7uqxdE,534
32
- langgraph_api/js/build.mts,sha256=ceHRr_Io_9otkDOSgHuKbGnOUu4AX2jPj8APTTa9UjM,2741
32
+ langgraph_api/js/build.mts,sha256=05bkP9mpxf1JVuJ3at0y56p13QBkHgf7Q6eG6pOZsIg,2784
33
33
  langgraph_api/js/client.http.mts,sha256=AGA-p8J85IcNh2oXZjDxHQ4PnQdJmt-LPcpZp6j0Cws,4687
34
- langgraph_api/js/client.mts,sha256=RZgkJk43CMOwnHXMXBbWIEhHh0W8WBwQ8Rm8GkJwvhM,30341
34
+ langgraph_api/js/client.mts,sha256=N9CTH7mbXGSD-gpv-XyruYsHI-rgrObL8cQoAp5s3_U,30986
35
35
  langgraph_api/js/errors.py,sha256=Cm1TKWlUCwZReDC5AQ6SgNIVGD27Qov2xcgHyf8-GXo,361
36
36
  langgraph_api/js/global.d.ts,sha256=j4GhgtQSZ5_cHzjSPcHgMJ8tfBThxrH-pUOrrJGteOU,196
37
- langgraph_api/js/package.json,sha256=J2sWtYb_gFMCb_g8661iGUR1C23lZQna3wmgl5da0Xc,1289
37
+ langgraph_api/js/package.json,sha256=craKzuSIEnt-WQpKZDaACwdm75lPqpRQde6l9LfS-eI,1289
38
38
  langgraph_api/js/remote.py,sha256=ipAITSDyh-kNau37nfRg-PSB-6Lbtax3UJap8-lLZdw,35729
39
39
  langgraph_api/js/schema.py,sha256=7idnv7URlYUdSNMBXQcw7E4SxaPxCq_Oxwnlml8q5ik,408
40
- langgraph_api/js/src/graph.mts,sha256=_xKhdO2WAwsieoezFqTCcx1IDeHeN6GSMv0lyBsakKI,3485
40
+ langgraph_api/js/src/graph.mts,sha256=9zTQNdtanI_CFnOwNRoamoCVHHQHGbNlbm91aRxDeOc,2675
41
41
  langgraph_api/js/src/load.hooks.mjs,sha256=xNVHq75W0Lk6MUKl1pQYrx-wtQ8_neiUyI6SO-k0ecM,2235
42
- langgraph_api/js/src/parser/parser.mts,sha256=iW5G-YIVIuwuFsfn_GS3_CZsjpa00SxypICfPf2SN9Q,14156
43
- langgraph_api/js/src/parser/parser.worker.mjs,sha256=Byo65U2aI3FtZaUwRRq65xBpwornoR6ldak333jxH4c,387
44
- langgraph_api/js/src/parser/schema/types.mts,sha256=Vx34tLAncRnITwAVe1wABFgM86TpByMLQ5y5pnit4tI,62693
45
- langgraph_api/js/src/parser/schema/types.template.mts,sha256=Dbjj_8d-OubqH4QY_OaxSu8ocZ4dVjI94oncL20fqtk,2235
46
42
  langgraph_api/js/src/preload.mjs,sha256=ORV7xwMuZcXWL6jQxNAcCYp8GZVYIvVJbUhmle8jbno,759
47
43
  langgraph_api/js/src/utils/files.mts,sha256=MXC-3gy0pkS82AjPBoUN83jY_qg37WSAPHOA7DwfB4M,141
48
44
  langgraph_api/js/src/utils/importMap.mts,sha256=pX4TGOyUpuuWF82kXcxcv3-8mgusRezOGe6Uklm2O5A,1644
49
45
  langgraph_api/js/src/utils/pythonSchemas.mts,sha256=98IW7Z_VP7L_CHNRMb3_MsiV3BgLE2JsWQY_PQcRR3o,685
50
46
  langgraph_api/js/src/utils/serde.mts,sha256=D9o6MwTgwPezC_DEmsWS5NnLPnjPMVWIb1I1D4QPEPo,743
51
47
  langgraph_api/js/sse.py,sha256=lsfp4nyJyA1COmlKG9e2gJnTttf_HGCB5wyH8OZBER8,4105
52
- langgraph_api/js/tests/api.test.mts,sha256=LSWDHTar-AtyazqR8EbnS17MrMr3IvKWysGDZ13p-GM,69432
48
+ langgraph_api/js/tests/api.test.mts,sha256=UT5UotPULGYUMQ5ZQ5yLBhRP-0cfPmQ3-4-a5GQ9p58,69458
53
49
  langgraph_api/js/tests/auth.test.mts,sha256=mMhKe9ggJw4BgUqzSVwqYY3HLMXXEBZ23iiKK8Yq1mM,21678
54
50
  langgraph_api/js/tests/compose-postgres.auth.yml,sha256=iPfJbCeYZdV6GiRLiDn_f7qgpG4TyyGaQ4lV-ZXr6Qk,1768
55
51
  langgraph_api/js/tests/compose-postgres.yml,sha256=w4B3YRS0QEnTcZH2-MY0DYvR_c5GcER0uDa1Ga_knf8,1960
@@ -69,11 +65,10 @@ langgraph_api/js/tests/graphs/nested.mts,sha256=e06kFzcX2zEJlb7e5B6kMnuZn6sfvsO7
69
65
  langgraph_api/js/tests/graphs/package.json,sha256=8kgqWdZJCwekCqjsSrhbLrAPZ2vEy1DmcC8EQnwJMDU,262
70
66
  langgraph_api/js/tests/graphs/weather.mts,sha256=Gef9dCXxoVgNa4Ba0AcoptodYV85Ed2CGcleUB9BRMk,1656
71
67
  langgraph_api/js/tests/graphs/yarn.lock,sha256=HDLJKx47Y-csPzA5eYUMVHWE8fMKrZgrc4SEkQAYYCE,11201
72
- langgraph_api/js/tests/parser.test.mts,sha256=BBKUTveZnf-RI6B9XfTBLqy6tp84ddyu1tN3z041IAs,27900
73
68
  langgraph_api/js/tests/utils.mts,sha256=Jk1ZZmllNgSS6FJlSs9VaQxHqCEUzkqB5rRQwTSAOP4,441
74
69
  langgraph_api/js/tsconfig.json,sha256=imCYqVnqFpaBoZPx8k1nO4slHIWBFsSlmCYhO73cpBs,341
75
70
  langgraph_api/js/ui.py,sha256=XNT8iBcyT8XmbIqSQUWd-j_00HsaWB2vRTVabwFBkik,2439
76
- langgraph_api/js/yarn.lock,sha256=HJuG663b4R2sqQDTQOHtpfMiK615k3CiUsRIZfGDd7k,84019
71
+ langgraph_api/js/yarn.lock,sha256=qtnJQjwX8OUQVzsh51N1imtjYGg5RCI9xkg5n5VZMKI,84019
77
72
  langgraph_api/logging.py,sha256=JJIzbNIgLCN6ClQ3tA-Mm5ffuBGvpRDSZsEvnIlsuu4,3693
78
73
  langgraph_api/metadata.py,sha256=ptaxwmzdx2bUBSc1KRhqgF-Xnm-Zh2gqwSiHpl8LD9c,4482
79
74
  langgraph_api/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -101,8 +96,8 @@ langgraph_license/validation.py,sha256=ZKraAVJArAABKqrmHN-EN18ncoNUmRm500Yt1Sc7t
101
96
  langgraph_runtime/__init__.py,sha256=O4GgSmu33c-Pr8Xzxj_brcK5vkm70iNTcyxEjICFZxA,1075
102
97
  logging.json,sha256=3RNjSADZmDq38eHePMm1CbP6qZ71AmpBtLwCmKU9Zgo,379
103
98
  openapi.json,sha256=GefWJwBrbrN_jNDAEFlwNEXx1ottRtvjOmKBi965KLU,133756
104
- langgraph_api-0.2.9.dist-info/LICENSE,sha256=ZPwVR73Biwm3sK6vR54djCrhaRiM4cAD2zvOQZV8Xis,3859
105
- langgraph_api-0.2.9.dist-info/METADATA,sha256=-USWsNozeKkqmxeoMi3Aj_SkdoTp_s2p3AEwtnHq1F4,4240
106
- langgraph_api-0.2.9.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
107
- langgraph_api-0.2.9.dist-info/entry_points.txt,sha256=3EYLgj89DfzqJHHYGxPH4A_fEtClvlRbWRUHaXO7hj4,77
108
- langgraph_api-0.2.9.dist-info/RECORD,,
99
+ langgraph_api-0.2.10.dist-info/LICENSE,sha256=ZPwVR73Biwm3sK6vR54djCrhaRiM4cAD2zvOQZV8Xis,3859
100
+ langgraph_api-0.2.10.dist-info/METADATA,sha256=UCAG8IhwMEOsdWD6CZgSX3h4aaz7Semsq8dTf-cA5lQ,4241
101
+ langgraph_api-0.2.10.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
102
+ langgraph_api-0.2.10.dist-info/entry_points.txt,sha256=3EYLgj89DfzqJHHYGxPH4A_fEtClvlRbWRUHaXO7hj4,77
103
+ langgraph_api-0.2.10.dist-info/RECORD,,