langgraph-api 0.1.15__py3-none-any.whl → 0.1.17__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 +1 -1
- langgraph_api/config.py +6 -0
- langgraph_api/graph.py +1 -1
- langgraph_api/js/base.py +3 -0
- langgraph_api/js/build.mts +28 -5
- langgraph_api/js/client.mts +98 -42
- langgraph_api/js/package.json +2 -2
- langgraph_api/js/remote.py +33 -14
- langgraph_api/js/src/graph.mts +0 -3
- langgraph_api/js/src/load.hooks.mjs +61 -0
- langgraph_api/js/src/parser/parser.mts +77 -51
- langgraph_api/js/src/preload.mjs +21 -0
- langgraph_api/js/tests/api.test.mts +6 -3
- langgraph_api/js/tests/auth.test.mts +1 -1
- langgraph_api/js/tests/graphs/package.json +1 -1
- langgraph_api/js/tests/graphs/yarn.lock +9 -9
- langgraph_api/js/tests/parser.test.mts +18 -18
- langgraph_api/js/tsconfig.json +15 -0
- langgraph_api/js/yarn.lock +15 -9
- langgraph_api/models/run.py +78 -22
- langgraph_api/server.py +2 -1
- langgraph_api/sse.py +1 -1
- langgraph_api/stream.py +10 -1
- {langgraph_api-0.1.15.dist-info → langgraph_api-0.1.17.dist-info}/METADATA +5 -5
- {langgraph_api-0.1.15.dist-info → langgraph_api-0.1.17.dist-info}/RECORD +30 -28
- langgraph_api/js/src/hooks.mjs +0 -17
- /langgraph_api/js/src/{schema → parser/schema}/types.mts +0 -0
- /langgraph_api/js/src/{schema → parser/schema}/types.template.mts +0 -0
- {langgraph_api-0.1.15.dist-info → langgraph_api-0.1.17.dist-info}/LICENSE +0 -0
- {langgraph_api-0.1.15.dist-info → langgraph_api-0.1.17.dist-info}/WHEEL +0 -0
- {langgraph_api-0.1.15.dist-info → langgraph_api-0.1.17.dist-info}/entry_points.txt +0 -0
langgraph_api/models/run.py
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import asyncio
|
|
2
|
+
import functools
|
|
3
|
+
import re
|
|
2
4
|
import urllib.parse
|
|
3
5
|
import uuid
|
|
4
6
|
from collections.abc import Mapping, Sequence
|
|
@@ -159,6 +161,81 @@ LANGSMITH_TAGS = "langsmith-tags"
|
|
|
159
161
|
LANGSMITH_PROJECT = "langsmith-project"
|
|
160
162
|
|
|
161
163
|
|
|
164
|
+
def translate_pattern(pat: str) -> re.Pattern[str]:
|
|
165
|
+
"""Translate a pattern to regex, supporting only literals and * wildcards to avoid RE DoS."""
|
|
166
|
+
res = []
|
|
167
|
+
i = 0
|
|
168
|
+
n = len(pat)
|
|
169
|
+
|
|
170
|
+
while i < n:
|
|
171
|
+
c = pat[i]
|
|
172
|
+
i += 1
|
|
173
|
+
|
|
174
|
+
if c == "*":
|
|
175
|
+
res.append(".*")
|
|
176
|
+
else:
|
|
177
|
+
res.append(re.escape(c))
|
|
178
|
+
|
|
179
|
+
pattern = "".join(res)
|
|
180
|
+
return re.compile(rf"(?s:{pattern})\Z")
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
@functools.lru_cache(maxsize=1)
|
|
184
|
+
def get_header_patterns() -> (
|
|
185
|
+
tuple[list[re.Pattern[str] | None], list[re.Pattern[str] | None]]
|
|
186
|
+
):
|
|
187
|
+
from langgraph_api import config
|
|
188
|
+
|
|
189
|
+
if not config.HTTP_CONFIG:
|
|
190
|
+
return None, None
|
|
191
|
+
configurable = config.HTTP_CONFIG.get("configurable_headers")
|
|
192
|
+
if not configurable:
|
|
193
|
+
return None, None
|
|
194
|
+
header_includes = configurable.get("includes") or []
|
|
195
|
+
include_patterns = []
|
|
196
|
+
for include in header_includes:
|
|
197
|
+
include_patterns.append(translate_pattern(include))
|
|
198
|
+
header_excludes = configurable.get("excludes") or []
|
|
199
|
+
exclude_patterns = []
|
|
200
|
+
for exclude in header_excludes:
|
|
201
|
+
exclude_patterns.append(translate_pattern(exclude))
|
|
202
|
+
return include_patterns, exclude_patterns
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
def get_configurable_headers(headers: dict[str, str]) -> dict[str, str]:
|
|
206
|
+
configurable = {}
|
|
207
|
+
include_patterns, exclude_patterns = get_header_patterns()
|
|
208
|
+
for key, value in headers.items():
|
|
209
|
+
if include_patterns and not any(
|
|
210
|
+
pattern.match(key) for pattern in include_patterns
|
|
211
|
+
):
|
|
212
|
+
continue
|
|
213
|
+
if exclude_patterns and any(pattern.match(key) for pattern in exclude_patterns):
|
|
214
|
+
continue
|
|
215
|
+
if key.startswith("x-"):
|
|
216
|
+
if key in (
|
|
217
|
+
"x-api-key",
|
|
218
|
+
"x-tenant-id",
|
|
219
|
+
"x-service-key",
|
|
220
|
+
):
|
|
221
|
+
continue
|
|
222
|
+
configurable[key] = value
|
|
223
|
+
elif key == "langsmith-trace":
|
|
224
|
+
configurable[key] = value
|
|
225
|
+
if baggage := headers.get("baggage"):
|
|
226
|
+
for item in baggage.split(","):
|
|
227
|
+
key, value = item.split("=")
|
|
228
|
+
if key == LANGSMITH_METADATA and key not in configurable:
|
|
229
|
+
configurable[key] = orjson.loads(urllib.parse.unquote(value))
|
|
230
|
+
elif key == LANGSMITH_TAGS:
|
|
231
|
+
configurable[key] = urllib.parse.unquote(value).split(",")
|
|
232
|
+
elif key == LANGSMITH_PROJECT:
|
|
233
|
+
configurable[key] = urllib.parse.unquote(value)
|
|
234
|
+
elif key == "user-agent":
|
|
235
|
+
configurable[key] = value
|
|
236
|
+
return configurable
|
|
237
|
+
|
|
238
|
+
|
|
162
239
|
async def create_valid_run(
|
|
163
240
|
conn: AsyncConnectionProto,
|
|
164
241
|
thread_id: str | None,
|
|
@@ -197,28 +274,7 @@ async def create_valid_run(
|
|
|
197
274
|
configurable["checkpoint_id"] = str(checkpoint_id)
|
|
198
275
|
if checkpoint := payload.get("checkpoint"):
|
|
199
276
|
configurable.update(checkpoint)
|
|
200
|
-
|
|
201
|
-
if key.startswith("x-"):
|
|
202
|
-
if key in (
|
|
203
|
-
"x-api-key",
|
|
204
|
-
"x-tenant-id",
|
|
205
|
-
"x-service-key",
|
|
206
|
-
):
|
|
207
|
-
continue
|
|
208
|
-
configurable[key] = value
|
|
209
|
-
elif key == "langsmith-trace":
|
|
210
|
-
configurable[key] = value
|
|
211
|
-
if baggage := headers.get("baggage"):
|
|
212
|
-
for item in baggage.split(","):
|
|
213
|
-
key, value = item.split("=")
|
|
214
|
-
if key == LANGSMITH_METADATA and key not in configurable:
|
|
215
|
-
configurable[key] = orjson.loads(urllib.parse.unquote(value))
|
|
216
|
-
elif key == LANGSMITH_TAGS:
|
|
217
|
-
configurable[key] = urllib.parse.unquote(value).split(",")
|
|
218
|
-
elif key == LANGSMITH_PROJECT:
|
|
219
|
-
configurable[key] = urllib.parse.unquote(value)
|
|
220
|
-
elif key == "user-agent":
|
|
221
|
-
configurable[key] = value
|
|
277
|
+
configurable.update(get_configurable_headers(headers))
|
|
222
278
|
ctx = get_auth_ctx()
|
|
223
279
|
if ctx:
|
|
224
280
|
user = ctx.user
|
langgraph_api/server.py
CHANGED
|
@@ -60,6 +60,7 @@ middleware.extend(
|
|
|
60
60
|
allow_credentials=True,
|
|
61
61
|
allow_methods=["*"],
|
|
62
62
|
allow_headers=["*"],
|
|
63
|
+
expose_headers=["x-pagination-total"],
|
|
63
64
|
)
|
|
64
65
|
if config.CORS_CONFIG is None
|
|
65
66
|
else Middleware(
|
|
@@ -184,7 +185,7 @@ if config.MOUNT_PREFIX:
|
|
|
184
185
|
# The SDK initialized with None is trying to connect via
|
|
185
186
|
# ASGITransport. Ensure that it has the correct subpath prefixes
|
|
186
187
|
# so the regular router can handle it.
|
|
187
|
-
scope["path"] = f
|
|
188
|
+
scope["path"] = f"/noauth{prefix}{scope['path']}"
|
|
188
189
|
scope["raw_path"] = scope["path"].encode("utf-8")
|
|
189
190
|
|
|
190
191
|
return await self.app(scope, receive, send)
|
langgraph_api/sse.py
CHANGED
langgraph_api/stream.py
CHANGED
|
@@ -116,7 +116,8 @@ async def astream_state(
|
|
|
116
116
|
config["metadata"]["langgraph_host"] = HOST
|
|
117
117
|
config["metadata"]["langgraph_api_url"] = USER_API_URL
|
|
118
118
|
# attach node counter
|
|
119
|
-
|
|
119
|
+
is_remote_pregel = isinstance(graph, BaseRemotePregel)
|
|
120
|
+
if not is_remote_pregel:
|
|
120
121
|
config["configurable"]["__pregel_node_finished"] = incr_nodes
|
|
121
122
|
# TODO add node tracking for JS graphs
|
|
122
123
|
# attach run_id to config
|
|
@@ -244,6 +245,14 @@ async def astream_state(
|
|
|
244
245
|
else:
|
|
245
246
|
yield mode, chunk
|
|
246
247
|
# --- end shared logic with astream_events ---
|
|
248
|
+
if is_remote_pregel:
|
|
249
|
+
# increament the remote runs
|
|
250
|
+
try:
|
|
251
|
+
nodes_executed = await graph.fetch_nodes_executed()
|
|
252
|
+
incr_nodes(None, incr=nodes_executed)
|
|
253
|
+
except Exception as e:
|
|
254
|
+
logger.warning(f"Failed to fetch nodes executed for {graph.graph_id}: {e}")
|
|
255
|
+
|
|
247
256
|
# Get feedback URLs
|
|
248
257
|
if feedback_keys:
|
|
249
258
|
feedback_urls = await run_in_executor(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: langgraph-api
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.17
|
|
4
4
|
Summary:
|
|
5
5
|
License: Elastic-2.0
|
|
6
6
|
Author: Nuno Campos
|
|
@@ -15,12 +15,12 @@ Requires-Dist: cloudpickle (>=3.0.0,<4.0.0)
|
|
|
15
15
|
Requires-Dist: cryptography (>=42.0.0,<45.0)
|
|
16
16
|
Requires-Dist: httpx (>=0.25.0)
|
|
17
17
|
Requires-Dist: jsonschema-rs (>=0.20.0,<0.30)
|
|
18
|
-
Requires-Dist: langchain-core (>=0.2.38
|
|
19
|
-
Requires-Dist: langgraph (>=0.2.56
|
|
20
|
-
Requires-Dist: langgraph-checkpoint (>=2.0.23
|
|
18
|
+
Requires-Dist: langchain-core (>=0.2.38)
|
|
19
|
+
Requires-Dist: langgraph (>=0.2.56)
|
|
20
|
+
Requires-Dist: langgraph-checkpoint (>=2.0.23)
|
|
21
21
|
Requires-Dist: langgraph-runtime-inmem (>=0.0.6)
|
|
22
22
|
Requires-Dist: langgraph-sdk (>=0.1.63,<0.2.0)
|
|
23
|
-
Requires-Dist: langsmith (>=0.1.63
|
|
23
|
+
Requires-Dist: langsmith (>=0.1.63)
|
|
24
24
|
Requires-Dist: orjson (>=3.9.7)
|
|
25
25
|
Requires-Dist: pyjwt (>=2.9.0,<3.0.0)
|
|
26
26
|
Requires-Dist: sse-starlette (>=2.1.0,<2.2.0)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
LICENSE,sha256=ZPwVR73Biwm3sK6vR54djCrhaRiM4cAD2zvOQZV8Xis,3859
|
|
2
|
-
langgraph_api/__init__.py,sha256=
|
|
2
|
+
langgraph_api/__init__.py,sha256=BzIjnki8Bz3evNWo6bjGxxpLhy_tN9MRYhtM0MnDiWs,23
|
|
3
3
|
langgraph_api/api/__init__.py,sha256=IKKMrC5gCHTzjprbg8jgZDrAJRuqJfSUgEkZAgh3l-M,5771
|
|
4
4
|
langgraph_api/api/assistants.py,sha256=6oYFRKlvqheJQGbWjFhQOUnnSbvsbrdMYLRJP7WtSRo,14481
|
|
5
5
|
langgraph_api/api/mcp.py,sha256=KbR19dtFCpJEiKYj3IfepAuJij8YZVELuVp7JY_yu_o,13754
|
|
@@ -20,36 +20,37 @@ langgraph_api/auth/noop.py,sha256=Bk6Nf3p8D_iMVy_OyfPlyiJp_aEwzL-sHrbxoXpCbac,58
|
|
|
20
20
|
langgraph_api/auth/studio_user.py,sha256=FzFQRROKDlA9JjtBuwyZvk6Mbwno5M9RVYjDO6FU3F8,186
|
|
21
21
|
langgraph_api/cli.py,sha256=9Ou3tGDDY_VVLt5DFle8UviJdpI4ZigC5hElYvq2-To,14519
|
|
22
22
|
langgraph_api/command.py,sha256=3O9v3i0OPa96ARyJ_oJbLXkfO8rPgDhLCswgO9koTFA,768
|
|
23
|
-
langgraph_api/config.py,sha256=
|
|
23
|
+
langgraph_api/config.py,sha256=KXQ3W0LzGuEqc0kfB2B37tvqFBwl66rW7vXtw1gIZGc,10773
|
|
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=
|
|
26
|
+
langgraph_api/graph.py,sha256=YyWCPtoI9VDV0knjCMUFoH4r9OFVsAiv5K8FzbziMqs,21488
|
|
27
27
|
langgraph_api/http.py,sha256=gYbxxjY8aLnsXeJymcJ7G7Nj_yToOGpPYQqmZ1_ggfA,5240
|
|
28
28
|
langgraph_api/js/.gitignore,sha256=l5yI6G_V6F1600I1IjiUKn87f4uYIrBAYU1MOyBBhg4,59
|
|
29
29
|
langgraph_api/js/.prettierrc,sha256=r08GtR4CPFQkArPYy10eMUbrpTvGDVNeoZRvaeZu0Kc,18
|
|
30
30
|
langgraph_api/js/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
31
|
-
langgraph_api/js/base.py,sha256=
|
|
32
|
-
langgraph_api/js/build.mts,sha256=
|
|
31
|
+
langgraph_api/js/base.py,sha256=gjY6K8avI03OrI-Hy6a311fQ_EG5r_x8hUYlc7uqxdE,534
|
|
32
|
+
langgraph_api/js/build.mts,sha256=ceHRr_Io_9otkDOSgHuKbGnOUu4AX2jPj8APTTa9UjM,2741
|
|
33
33
|
langgraph_api/js/client.http.mts,sha256=AGA-p8J85IcNh2oXZjDxHQ4PnQdJmt-LPcpZp6j0Cws,4687
|
|
34
|
-
langgraph_api/js/client.mts,sha256=
|
|
34
|
+
langgraph_api/js/client.mts,sha256=YUna7um53zSiZHt0Dfmd7fBTTEPAZ2-hLNZ7m9nDsT8,30090
|
|
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=
|
|
38
|
-
langgraph_api/js/remote.py,sha256=
|
|
37
|
+
langgraph_api/js/package.json,sha256=5gtQpj0mXh069X5fWJFWp-jt7Sb3RQUPVpe4m8Q0KHE,1289
|
|
38
|
+
langgraph_api/js/remote.py,sha256=7n9JN6rLO3BcvLF76jSX6BHPM3vSrARqBeZGmsPANAI,35628
|
|
39
39
|
langgraph_api/js/schema.py,sha256=7idnv7URlYUdSNMBXQcw7E4SxaPxCq_Oxwnlml8q5ik,408
|
|
40
|
-
langgraph_api/js/src/graph.mts,sha256=
|
|
41
|
-
langgraph_api/js/src/hooks.mjs,sha256=
|
|
42
|
-
langgraph_api/js/src/parser/parser.mts,sha256=
|
|
40
|
+
langgraph_api/js/src/graph.mts,sha256=QVy2sUcwcG9WkPF6AXy9mh0dvaXccVIZNtv5rkUtUYc,3479
|
|
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
43
|
langgraph_api/js/src/parser/parser.worker.mjs,sha256=2K6D0GlUmkk7LE39I8mryB8VZVE3-N9Cblji-ArPhFo,386
|
|
44
|
-
langgraph_api/js/src/schema/types.mts,sha256=SRCYZTWjxyc7528DaapR_DCm3G5bfDSh4vf-JsYpk0w,62633
|
|
45
|
-
langgraph_api/js/src/schema/types.template.mts,sha256=Dbjj_8d-OubqH4QY_OaxSu8ocZ4dVjI94oncL20fqtk,2235
|
|
44
|
+
langgraph_api/js/src/parser/schema/types.mts,sha256=SRCYZTWjxyc7528DaapR_DCm3G5bfDSh4vf-JsYpk0w,62633
|
|
45
|
+
langgraph_api/js/src/parser/schema/types.template.mts,sha256=Dbjj_8d-OubqH4QY_OaxSu8ocZ4dVjI94oncL20fqtk,2235
|
|
46
|
+
langgraph_api/js/src/preload.mjs,sha256=ORV7xwMuZcXWL6jQxNAcCYp8GZVYIvVJbUhmle8jbno,759
|
|
46
47
|
langgraph_api/js/src/utils/files.mts,sha256=MXC-3gy0pkS82AjPBoUN83jY_qg37WSAPHOA7DwfB4M,141
|
|
47
48
|
langgraph_api/js/src/utils/importMap.mts,sha256=pX4TGOyUpuuWF82kXcxcv3-8mgusRezOGe6Uklm2O5A,1644
|
|
48
49
|
langgraph_api/js/src/utils/pythonSchemas.mts,sha256=98IW7Z_VP7L_CHNRMb3_MsiV3BgLE2JsWQY_PQcRR3o,685
|
|
49
50
|
langgraph_api/js/src/utils/serde.mts,sha256=OuyyO9btvwWd55rU_H4x91dFEJiaPxL-lL9O6Zgo908,742
|
|
50
51
|
langgraph_api/js/sse.py,sha256=lsfp4nyJyA1COmlKG9e2gJnTttf_HGCB5wyH8OZBER8,4105
|
|
51
|
-
langgraph_api/js/tests/api.test.mts,sha256=
|
|
52
|
-
langgraph_api/js/tests/auth.test.mts,sha256=
|
|
52
|
+
langgraph_api/js/tests/api.test.mts,sha256=mQxM4Dbdnv_nIYpMg6VIkpmpU012I3D4dwRko3Cw-zI,68115
|
|
53
|
+
langgraph_api/js/tests/auth.test.mts,sha256=Aink9N0y3VCxp-Q0sLapAmdiUBYGzcwU8_3RXkRYN4c,21614
|
|
53
54
|
langgraph_api/js/tests/compose-postgres.auth.yml,sha256=iPfJbCeYZdV6GiRLiDn_f7qgpG4TyyGaQ4lV-ZXr6Qk,1768
|
|
54
55
|
langgraph_api/js/tests/compose-postgres.yml,sha256=w4B3YRS0QEnTcZH2-MY0DYvR_c5GcER0uDa1Ga_knf8,1960
|
|
55
56
|
langgraph_api/js/tests/graphs/.gitignore,sha256=26J8MarZNXh7snXD5eTpV3CPFTht5Znv8dtHYCLNfkw,12
|
|
@@ -65,29 +66,30 @@ langgraph_api/js/tests/graphs/error.mts,sha256=l4tk89449dj1BnEF_0ZcfPt0Ikk1gl8L1
|
|
|
65
66
|
langgraph_api/js/tests/graphs/http.mts,sha256=64xbMlLA58323zOX68Zh57zIB5Zl8ZCqEWRPNdJ-oJs,2171
|
|
66
67
|
langgraph_api/js/tests/graphs/langgraph.json,sha256=h6hV1wkNEUIpLBX9JOUKqtIBvbhvzyLEuWtBIHteseg,265
|
|
67
68
|
langgraph_api/js/tests/graphs/nested.mts,sha256=4G7jSOSaFVQAza-_ARbK-Iai1biLlF2DIPDZXf7PLIY,1245
|
|
68
|
-
langgraph_api/js/tests/graphs/package.json,sha256=
|
|
69
|
+
langgraph_api/js/tests/graphs/package.json,sha256=8kgqWdZJCwekCqjsSrhbLrAPZ2vEy1DmcC8EQnwJMDU,262
|
|
69
70
|
langgraph_api/js/tests/graphs/weather.mts,sha256=A7mLK3xW8h5B-ZyJNAyX2M2fJJwzPJzXs4DYesJwreQ,1655
|
|
70
|
-
langgraph_api/js/tests/graphs/yarn.lock,sha256=
|
|
71
|
-
langgraph_api/js/tests/parser.test.mts,sha256=
|
|
71
|
+
langgraph_api/js/tests/graphs/yarn.lock,sha256=HDLJKx47Y-csPzA5eYUMVHWE8fMKrZgrc4SEkQAYYCE,11201
|
|
72
|
+
langgraph_api/js/tests/parser.test.mts,sha256=BBKUTveZnf-RI6B9XfTBLqy6tp84ddyu1tN3z041IAs,27900
|
|
72
73
|
langgraph_api/js/tests/utils.mts,sha256=q1V9gvT63v95onlfK9W4iv3n9ZJO3h-0RD9TdDYuRyY,439
|
|
74
|
+
langgraph_api/js/tsconfig.json,sha256=imCYqVnqFpaBoZPx8k1nO4slHIWBFsSlmCYhO73cpBs,341
|
|
73
75
|
langgraph_api/js/ui.py,sha256=XNT8iBcyT8XmbIqSQUWd-j_00HsaWB2vRTVabwFBkik,2439
|
|
74
|
-
langgraph_api/js/yarn.lock,sha256=
|
|
76
|
+
langgraph_api/js/yarn.lock,sha256=OEj5JbffHe8opUAki0eH_0XJbVmgasv9zcHhGeI0g0w,84019
|
|
75
77
|
langgraph_api/logging.py,sha256=JJIzbNIgLCN6ClQ3tA-Mm5ffuBGvpRDSZsEvnIlsuu4,3693
|
|
76
78
|
langgraph_api/metadata.py,sha256=ptaxwmzdx2bUBSc1KRhqgF-Xnm-Zh2gqwSiHpl8LD9c,4482
|
|
77
79
|
langgraph_api/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
78
80
|
langgraph_api/middleware/http_logger.py,sha256=aj4mdisRobFePkD3Iy6-w_Mujwx4TQRaEhPvSd6HgLk,3284
|
|
79
81
|
langgraph_api/middleware/private_network.py,sha256=eYgdyU8AzU2XJu362i1L8aSFoQRiV7_aLBPw7_EgeqI,2111
|
|
80
82
|
langgraph_api/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
81
|
-
langgraph_api/models/run.py,sha256=
|
|
83
|
+
langgraph_api/models/run.py,sha256=ZgIaE7fUYAllqeC7MbfXuKEzmkFnvo3O44DdXTMCTNY,12946
|
|
82
84
|
langgraph_api/patch.py,sha256=Dgs0PXHytekX4SUL6KsjjN0hHcOtGLvv1GRGbh6PswU,1408
|
|
83
85
|
langgraph_api/queue_entrypoint.py,sha256=gjtajZfnDXhsi7JElfmkY-p0ENBiKBDJ4Ugiw-exapw,1839
|
|
84
86
|
langgraph_api/route.py,sha256=fM4qYCGbmH0a3_cV8uKocb1sLklehxO6HhdRXqLK6OM,4421
|
|
85
87
|
langgraph_api/schema.py,sha256=Frh_YOC3S1cDAMPUVanNi78ooSXK2WFpu9YkIVz5h14,5433
|
|
86
88
|
langgraph_api/serde.py,sha256=TVsx2QQtepf8Wsgsabcku1NV4Vbugu4Oujmdnq4qMS0,3964
|
|
87
|
-
langgraph_api/server.py,sha256=
|
|
88
|
-
langgraph_api/sse.py,sha256=
|
|
89
|
+
langgraph_api/server.py,sha256=lCv_ZHLbMnhKRhdaSJi1edk-O9We-MnQafkGzdWlngw,6599
|
|
90
|
+
langgraph_api/sse.py,sha256=3jG_FZj8FI9r7xGWTqaAyDkmqf6P1NOu0EzGrcSOGYc,4033
|
|
89
91
|
langgraph_api/state.py,sha256=8jx4IoTCOjTJuwzuXJKKFwo1VseHjNnw_CCq4x1SW14,2284
|
|
90
|
-
langgraph_api/stream.py,sha256=
|
|
92
|
+
langgraph_api/stream.py,sha256=a4sjBm3XhHK6NC4OD1dHey53t6czKodvrlxh9rfjfSA,11718
|
|
91
93
|
langgraph_api/thread_ttl.py,sha256=4vch4nu1UOiYcqYRd7bTHsfs0Ei_lXuy9nBQ0uVJLyo,1765
|
|
92
94
|
langgraph_api/tunneling/cloudflare.py,sha256=iKb6tj-VWPlDchHFjuQyep2Dpb-w2NGfJKt-WJG9LH0,3650
|
|
93
95
|
langgraph_api/utils.py,sha256=92mSti9GfGdMRRWyESKQW5yV-75Z9icGHnIrBYvdypU,3619
|
|
@@ -99,8 +101,8 @@ langgraph_license/validation.py,sha256=ZKraAVJArAABKqrmHN-EN18ncoNUmRm500Yt1Sc7t
|
|
|
99
101
|
langgraph_runtime/__init__.py,sha256=O4GgSmu33c-Pr8Xzxj_brcK5vkm70iNTcyxEjICFZxA,1075
|
|
100
102
|
logging.json,sha256=3RNjSADZmDq38eHePMm1CbP6qZ71AmpBtLwCmKU9Zgo,379
|
|
101
103
|
openapi.json,sha256=cjlQFtrH7TwXQ9GNe1jy2iBRhae_F6inFZhsaCQidBc,132770
|
|
102
|
-
langgraph_api-0.1.
|
|
103
|
-
langgraph_api-0.1.
|
|
104
|
-
langgraph_api-0.1.
|
|
105
|
-
langgraph_api-0.1.
|
|
106
|
-
langgraph_api-0.1.
|
|
104
|
+
langgraph_api-0.1.17.dist-info/LICENSE,sha256=ZPwVR73Biwm3sK6vR54djCrhaRiM4cAD2zvOQZV8Xis,3859
|
|
105
|
+
langgraph_api-0.1.17.dist-info/METADATA,sha256=nXIzxwaN2vJqV-HZvcSn4M-lwjJFSgRvqM01CScbib4,4143
|
|
106
|
+
langgraph_api-0.1.17.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
|
|
107
|
+
langgraph_api-0.1.17.dist-info/entry_points.txt,sha256=3EYLgj89DfzqJHHYGxPH4A_fEtClvlRbWRUHaXO7hj4,77
|
|
108
|
+
langgraph_api-0.1.17.dist-info/RECORD,,
|
langgraph_api/js/src/hooks.mjs
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
// This hook is to ensure that @langchain/langgraph package
|
|
2
|
-
// found in /api folder has precendence compared to user-provided package
|
|
3
|
-
// found in /deps. Does not attempt to semver check for too old packages.
|
|
4
|
-
const OVERRIDE_RESOLVE = [
|
|
5
|
-
"@langchain/langgraph",
|
|
6
|
-
"@langchain/langgraph-checkpoint",
|
|
7
|
-
];
|
|
8
|
-
|
|
9
|
-
export const resolve = async (specifier, context, nextResolve) => {
|
|
10
|
-
const parentURL = new URL("./graph.mts", import.meta.url).toString();
|
|
11
|
-
|
|
12
|
-
if (OVERRIDE_RESOLVE.includes(specifier)) {
|
|
13
|
-
return nextResolve(specifier, { ...context, parentURL });
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
return nextResolve(specifier, context);
|
|
17
|
-
};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|