langgraph-api 0.2.26__py3-none-any.whl → 0.2.28__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/api/assistants.py +4 -4
- langgraph_api/api/store.py +10 -6
- langgraph_api/asgi_transport.py +171 -0
- langgraph_api/asyncio.py +17 -0
- langgraph_api/config.py +1 -0
- langgraph_api/graph.py +28 -5
- langgraph_api/js/remote.py +16 -11
- langgraph_api/metadata.py +28 -16
- langgraph_api/store.py +127 -0
- langgraph_api/stream.py +17 -7
- langgraph_api/worker.py +1 -1
- {langgraph_api-0.2.26.dist-info → langgraph_api-0.2.28.dist-info}/METADATA +24 -30
- {langgraph_api-0.2.26.dist-info → langgraph_api-0.2.28.dist-info}/RECORD +42 -64
- {langgraph_api-0.2.26.dist-info → langgraph_api-0.2.28.dist-info}/WHEEL +1 -1
- langgraph_api-0.2.28.dist-info/entry_points.txt +2 -0
- langgraph_api/js/tests/api.test.mts +0 -2194
- langgraph_api/js/tests/auth.test.mts +0 -648
- langgraph_api/js/tests/compose-postgres.auth.yml +0 -59
- langgraph_api/js/tests/compose-postgres.yml +0 -59
- langgraph_api/js/tests/graphs/.gitignore +0 -1
- langgraph_api/js/tests/graphs/agent.css +0 -1
- langgraph_api/js/tests/graphs/agent.mts +0 -187
- langgraph_api/js/tests/graphs/agent.ui.tsx +0 -10
- langgraph_api/js/tests/graphs/agent_simple.mts +0 -105
- langgraph_api/js/tests/graphs/auth.mts +0 -106
- langgraph_api/js/tests/graphs/command.mts +0 -48
- langgraph_api/js/tests/graphs/delay.mts +0 -30
- langgraph_api/js/tests/graphs/dynamic.mts +0 -24
- langgraph_api/js/tests/graphs/error.mts +0 -17
- langgraph_api/js/tests/graphs/http.mts +0 -76
- langgraph_api/js/tests/graphs/langgraph.json +0 -11
- langgraph_api/js/tests/graphs/nested.mts +0 -44
- langgraph_api/js/tests/graphs/package.json +0 -13
- langgraph_api/js/tests/graphs/weather.mts +0 -57
- langgraph_api/js/tests/graphs/yarn.lock +0 -242
- langgraph_api/js/tests/utils.mts +0 -17
- langgraph_api-0.2.26.dist-info/LICENSE +0 -93
- langgraph_api-0.2.26.dist-info/entry_points.txt +0 -3
- logging.json +0 -22
- openapi.json +0 -4562
- /LICENSE → /langgraph_api-0.2.28.dist-info/licenses/LICENSE +0 -0
langgraph_api/store.py
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
import importlib.util
|
|
3
|
+
import sys
|
|
4
|
+
import threading
|
|
5
|
+
from collections.abc import Callable
|
|
6
|
+
from contextlib import AsyncExitStack, asynccontextmanager
|
|
7
|
+
from random import choice
|
|
8
|
+
from typing import Any
|
|
9
|
+
|
|
10
|
+
import structlog
|
|
11
|
+
from langchain_core.runnables.config import run_in_executor
|
|
12
|
+
from langgraph.graph import Graph
|
|
13
|
+
from langgraph.pregel import Pregel
|
|
14
|
+
from langgraph.store.base import BaseStore
|
|
15
|
+
|
|
16
|
+
from langgraph_api import config
|
|
17
|
+
|
|
18
|
+
logger = structlog.stdlib.get_logger(__name__)
|
|
19
|
+
|
|
20
|
+
CUSTOM_STORE: BaseStore | Callable[[], BaseStore] | None = None
|
|
21
|
+
STORE_STACK = threading.local()
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
async def get_store() -> BaseStore:
|
|
25
|
+
if CUSTOM_STORE:
|
|
26
|
+
if not hasattr(STORE_STACK, "stack"):
|
|
27
|
+
stack = AsyncExitStack()
|
|
28
|
+
STORE_STACK.stack = stack
|
|
29
|
+
store = await stack.enter_async_context(_yield_store(CUSTOM_STORE))
|
|
30
|
+
STORE_STACK.store = store
|
|
31
|
+
await logger.ainfo(f"Using custom store: {store}", kind=str(type(store)))
|
|
32
|
+
return store
|
|
33
|
+
return STORE_STACK.store
|
|
34
|
+
else:
|
|
35
|
+
from langgraph_runtime.store import Store
|
|
36
|
+
|
|
37
|
+
return Store()
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
async def exit_store():
|
|
41
|
+
if not CUSTOM_STORE:
|
|
42
|
+
return
|
|
43
|
+
if not hasattr(STORE_STACK, "stack"):
|
|
44
|
+
return
|
|
45
|
+
await STORE_STACK.stack.aclose()
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
@asynccontextmanager
|
|
49
|
+
async def _yield_store(value: Any):
|
|
50
|
+
if isinstance(value, BaseStore):
|
|
51
|
+
yield value
|
|
52
|
+
elif hasattr(value, "__aenter__") and hasattr(value, "__aexit__"):
|
|
53
|
+
async with value as ctx_value:
|
|
54
|
+
yield ctx_value
|
|
55
|
+
elif hasattr(value, "__enter__") and hasattr(value, "__exit__"):
|
|
56
|
+
with value as ctx_value:
|
|
57
|
+
yield ctx_value
|
|
58
|
+
elif asyncio.iscoroutine(value):
|
|
59
|
+
yield await value
|
|
60
|
+
elif callable(value):
|
|
61
|
+
async with _yield_store(value()) as ctx_value:
|
|
62
|
+
yield ctx_value
|
|
63
|
+
else:
|
|
64
|
+
raise ValueError(
|
|
65
|
+
f"Unsupported store type: {type(value)}. Expected an instance of BaseStore "
|
|
66
|
+
"or a function or async generator that returns one."
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
async def collect_store_from_env() -> None:
|
|
71
|
+
global CUSTOM_STORE
|
|
72
|
+
if not config.STORE_CONFIG or not (store_path := config.STORE_CONFIG.get("path")):
|
|
73
|
+
return
|
|
74
|
+
await logger.ainfo(
|
|
75
|
+
f"Heads up! You are configuring a custom long-term memory store at {store_path}\n\n"
|
|
76
|
+
"This store will be used IN STEAD OF the default postgres + pgvector store."
|
|
77
|
+
"Some functionality, such as TTLs and vector search, may not be available."
|
|
78
|
+
"Search performance & other capabilities will depend on the quality of your implementation."
|
|
79
|
+
)
|
|
80
|
+
# Try to load. The loaded object can either be a BaseStore instance, a function that generates it, etc.
|
|
81
|
+
value = await run_in_executor(None, _load_store, store_path)
|
|
82
|
+
CUSTOM_STORE = value
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def _load_store(store_path: str) -> Any:
|
|
86
|
+
if "/" in store_path or ".py:" in store_path:
|
|
87
|
+
modname = "".join(choice("abcdefghijklmnopqrstuvwxyz") for _ in range(24))
|
|
88
|
+
path_name, function = store_path.rsplit(":", 1)
|
|
89
|
+
module_name = path_name.rstrip(":")
|
|
90
|
+
# Load from file path
|
|
91
|
+
modspec = importlib.util.spec_from_file_location(modname, module_name)
|
|
92
|
+
if modspec is None:
|
|
93
|
+
raise ValueError(f"Could not find store file: {path_name}")
|
|
94
|
+
module = importlib.util.module_from_spec(modspec)
|
|
95
|
+
sys.modules[module_name] = module
|
|
96
|
+
modspec.loader.exec_module(module)
|
|
97
|
+
|
|
98
|
+
else:
|
|
99
|
+
path_name, function = store_path.rsplit(".", 1)
|
|
100
|
+
module = importlib.import_module(path_name)
|
|
101
|
+
|
|
102
|
+
try:
|
|
103
|
+
store: BaseStore | Callable[[config.StoreConfig], BaseStore] = module.__dict__[
|
|
104
|
+
function
|
|
105
|
+
]
|
|
106
|
+
except KeyError as e:
|
|
107
|
+
available = [k for k in module.__dict__ if not k.startswith("__")]
|
|
108
|
+
suggestion = ""
|
|
109
|
+
if available:
|
|
110
|
+
likely = [
|
|
111
|
+
k for k in available if isinstance(module.__dict__[k], Graph | Pregel)
|
|
112
|
+
]
|
|
113
|
+
if likely:
|
|
114
|
+
likely_ = "\n".join(
|
|
115
|
+
[f"\t- {path_name}:{k}" if path_name else k for k in likely]
|
|
116
|
+
)
|
|
117
|
+
suggestion = f"\nDid you mean to use one of the following?\n{likely_}"
|
|
118
|
+
elif available:
|
|
119
|
+
suggestion = f"\nFound the following exports: {', '.join(available)}"
|
|
120
|
+
|
|
121
|
+
raise ValueError(
|
|
122
|
+
f"Could not find store '{store_path}'. "
|
|
123
|
+
f"Please check that:\n"
|
|
124
|
+
f"1. The file exports a variable named '{store_path}'\n"
|
|
125
|
+
f"2. The variable name in your config matches the export name{suggestion}"
|
|
126
|
+
) from e
|
|
127
|
+
return store
|
langgraph_api/stream.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import functools
|
|
1
2
|
from collections.abc import AsyncIterator, Callable
|
|
2
3
|
from contextlib import AsyncExitStack, aclosing
|
|
3
|
-
from functools import lru_cache
|
|
4
4
|
from typing import Any, cast
|
|
5
5
|
|
|
6
6
|
import langgraph.version
|
|
@@ -23,6 +23,7 @@ from langgraph.pregel.debug import CheckpointPayload, TaskResultPayload
|
|
|
23
23
|
from pydantic import ValidationError
|
|
24
24
|
from pydantic.v1 import ValidationError as ValidationErrorLegacy
|
|
25
25
|
|
|
26
|
+
from langgraph_api import store as api_store
|
|
26
27
|
from langgraph_api.asyncio import ValueEvent, wait_if_not_done
|
|
27
28
|
from langgraph_api.command import map_cmd
|
|
28
29
|
from langgraph_api.graph import get_graph
|
|
@@ -33,7 +34,6 @@ from langgraph_api.serde import json_dumpb
|
|
|
33
34
|
from langgraph_api.utils import AsyncConnectionProto
|
|
34
35
|
from langgraph_runtime.checkpoint import Checkpointer
|
|
35
36
|
from langgraph_runtime.ops import Runs
|
|
36
|
-
from langgraph_runtime.store import Store
|
|
37
37
|
|
|
38
38
|
logger = structlog.stdlib.get_logger(__name__)
|
|
39
39
|
|
|
@@ -94,7 +94,7 @@ async def astream_state(
|
|
|
94
94
|
get_graph(
|
|
95
95
|
config["configurable"]["graph_id"],
|
|
96
96
|
config,
|
|
97
|
-
store=
|
|
97
|
+
store=(await api_store.get_store()),
|
|
98
98
|
checkpointer=None if temporary else Checkpointer(conn),
|
|
99
99
|
)
|
|
100
100
|
)
|
|
@@ -119,7 +119,9 @@ async def astream_state(
|
|
|
119
119
|
# attach node counter
|
|
120
120
|
is_remote_pregel = isinstance(graph, BaseRemotePregel)
|
|
121
121
|
if not is_remote_pregel:
|
|
122
|
-
config["configurable"]["__pregel_node_finished"] =
|
|
122
|
+
config["configurable"]["__pregel_node_finished"] = functools.partial(
|
|
123
|
+
incr_nodes, graph_id=_get_graph_id(run)
|
|
124
|
+
)
|
|
123
125
|
|
|
124
126
|
# attach run_id to config
|
|
125
127
|
# for attempts beyond the first, use a fresh, unique run_id
|
|
@@ -263,10 +265,10 @@ async def astream_state(
|
|
|
263
265
|
yield mode, chunk
|
|
264
266
|
# --- end shared logic with astream_events ---
|
|
265
267
|
if is_remote_pregel:
|
|
266
|
-
#
|
|
268
|
+
# increment the remote runs
|
|
267
269
|
try:
|
|
268
270
|
nodes_executed = await graph.fetch_nodes_executed()
|
|
269
|
-
incr_nodes(
|
|
271
|
+
incr_nodes(graph_id=graph.graph_id, incr=nodes_executed)
|
|
270
272
|
except Exception as e:
|
|
271
273
|
logger.warning(f"Failed to fetch nodes executed for {graph.graph_id}: {e}")
|
|
272
274
|
|
|
@@ -301,7 +303,7 @@ def get_feedback_urls(run_id: str, feedback_keys: list[str]) -> dict[str, str]:
|
|
|
301
303
|
return {key: token.url for key, token in zip(feedback_keys, tokens, strict=False)}
|
|
302
304
|
|
|
303
305
|
|
|
304
|
-
@lru_cache(maxsize=1)
|
|
306
|
+
@functools.lru_cache(maxsize=1)
|
|
305
307
|
def get_langsmith_client() -> langsmith.Client:
|
|
306
308
|
return langsmith.Client()
|
|
307
309
|
|
|
@@ -315,3 +317,11 @@ EXPECTED_ERRORS = (
|
|
|
315
317
|
ValidationError,
|
|
316
318
|
ValidationErrorLegacy,
|
|
317
319
|
)
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
def _get_graph_id(run: Run) -> str | None:
|
|
323
|
+
try:
|
|
324
|
+
return run["kwargs"]["config"]["configurable"]["graph_id"]
|
|
325
|
+
except Exception:
|
|
326
|
+
logger.info(f"Failed to get graph_id from run {run['run_id']}")
|
|
327
|
+
return "Unknown"
|
langgraph_api/worker.py
CHANGED
|
@@ -1,35 +1,29 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: langgraph-api
|
|
3
|
-
Version: 0.2.
|
|
4
|
-
|
|
3
|
+
Version: 0.2.28
|
|
4
|
+
Author-email: Nuno Campos <nuno@langchain.dev>, Will Fu-Hinthorn <will@langchain.dev>
|
|
5
5
|
License: Elastic-2.0
|
|
6
|
-
|
|
7
|
-
Author-email: nuno@langchain.dev
|
|
6
|
+
License-File: LICENSE
|
|
8
7
|
Requires-Python: >=3.11
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
Requires-Dist:
|
|
15
|
-
Requires-Dist:
|
|
16
|
-
Requires-Dist:
|
|
17
|
-
Requires-Dist:
|
|
18
|
-
Requires-Dist:
|
|
19
|
-
Requires-Dist:
|
|
20
|
-
Requires-Dist:
|
|
21
|
-
Requires-Dist:
|
|
22
|
-
Requires-Dist:
|
|
23
|
-
Requires-Dist:
|
|
24
|
-
Requires-Dist:
|
|
25
|
-
Requires-Dist:
|
|
26
|
-
Requires-Dist:
|
|
27
|
-
Requires-Dist:
|
|
28
|
-
Requires-Dist: structlog (>=24.1.0,<26)
|
|
29
|
-
Requires-Dist: tenacity (>=8.0.0)
|
|
30
|
-
Requires-Dist: truststore (>=0.1)
|
|
31
|
-
Requires-Dist: uvicorn (>=0.26.0)
|
|
32
|
-
Requires-Dist: watchfiles (>=0.13)
|
|
8
|
+
Requires-Dist: cloudpickle>=3.0.0
|
|
9
|
+
Requires-Dist: cryptography<45.0,>=42.0.0
|
|
10
|
+
Requires-Dist: httpx>=0.25.0
|
|
11
|
+
Requires-Dist: jsonschema-rs<0.30,>=0.20.0
|
|
12
|
+
Requires-Dist: langchain-core>=0.2.38
|
|
13
|
+
Requires-Dist: langgraph-checkpoint>=2.0.23
|
|
14
|
+
Requires-Dist: langgraph-runtime-inmem<0.2,>=0.1.0
|
|
15
|
+
Requires-Dist: langgraph-sdk>=0.1.66
|
|
16
|
+
Requires-Dist: langgraph>=0.3.27
|
|
17
|
+
Requires-Dist: langsmith>=0.1.112
|
|
18
|
+
Requires-Dist: orjson>=3.9.7
|
|
19
|
+
Requires-Dist: pyjwt>=2.9.0
|
|
20
|
+
Requires-Dist: sse-starlette<2.2.0,>=2.1.0
|
|
21
|
+
Requires-Dist: starlette>=0.38.6
|
|
22
|
+
Requires-Dist: structlog<26,>=24.1.0
|
|
23
|
+
Requires-Dist: tenacity>=8.0.0
|
|
24
|
+
Requires-Dist: truststore>=0.1
|
|
25
|
+
Requires-Dist: uvicorn>=0.26.0
|
|
26
|
+
Requires-Dist: watchfiles>=0.13
|
|
33
27
|
Description-Content-Type: text/markdown
|
|
34
28
|
|
|
35
29
|
# LangGraph API
|
|
@@ -132,4 +126,4 @@ Options:
|
|
|
132
126
|
|
|
133
127
|
## License
|
|
134
128
|
|
|
135
|
-
This project is licensed under the Elastic License 2.0 - see the [LICENSE](./LICENSE) file for details.
|
|
129
|
+
This project is licensed under the Elastic License 2.0 - see the [LICENSE](./LICENSE) file for details.
|
|
@@ -1,30 +1,47 @@
|
|
|
1
|
-
|
|
2
|
-
langgraph_api/
|
|
1
|
+
langgraph_api/__init__.py,sha256=KP-rlT7kt2ra8vABrHAwk3sAxXx9YgGE14_P5mGaLL4,23
|
|
2
|
+
langgraph_api/asgi_transport.py,sha256=eqifhHxNnxvI7jJqrY1_8RjL4Fp9NdN4prEub2FWBt8,5091
|
|
3
|
+
langgraph_api/asyncio.py,sha256=nelZwKL7iOjM5GHj1rVjiPE7igUIKLNKtc-3urxmlfo,9250
|
|
4
|
+
langgraph_api/cli.py,sha256=9Ou3tGDDY_VVLt5DFle8UviJdpI4ZigC5hElYvq2-To,14519
|
|
5
|
+
langgraph_api/command.py,sha256=3O9v3i0OPa96ARyJ_oJbLXkfO8rPgDhLCswgO9koTFA,768
|
|
6
|
+
langgraph_api/config.py,sha256=j1e1D9h1cTny3Q_8N3Tbbvq179rEjzPGjMKJnS6yFNE,10982
|
|
7
|
+
langgraph_api/cron_scheduler.py,sha256=i87j4pJrcsmsqMKeKUs69gaAjrGaSM3pM3jnXdN5JDQ,2630
|
|
8
|
+
langgraph_api/errors.py,sha256=Bu_i5drgNTyJcLiyrwVE_6-XrSU50BHf9TDpttki9wQ,1690
|
|
9
|
+
langgraph_api/graph.py,sha256=uc4YFMwzC8husHC0lySPm7KUaYh1L5Y9sZREE-FIekE,23205
|
|
10
|
+
langgraph_api/http.py,sha256=gYbxxjY8aLnsXeJymcJ7G7Nj_yToOGpPYQqmZ1_ggfA,5240
|
|
11
|
+
langgraph_api/logging.py,sha256=3GSbvmXi8yWxWxJ558RE81xUEdklrPHJ4PpkxAb-35w,4428
|
|
12
|
+
langgraph_api/metadata.py,sha256=YZ2O9BpMSgDyPUc4hcw5ab6e6VMZETpoc-ml2RWgpIU,5140
|
|
13
|
+
langgraph_api/patch.py,sha256=Dgs0PXHytekX4SUL6KsjjN0hHcOtGLvv1GRGbh6PswU,1408
|
|
14
|
+
langgraph_api/queue_entrypoint.py,sha256=Hw6W66EEY_V7GHvnRzijsbvoNy4TM7IQVoZJ-DRbSfU,2173
|
|
15
|
+
langgraph_api/route.py,sha256=uN311KjIugyNHG3rmVw_ms61QO1W1l16jJx03rf0R_s,4630
|
|
16
|
+
langgraph_api/schema.py,sha256=2711t4PIBk5dky4gmMndrTRC9CVvAgH47C9FKDxhkBo,5444
|
|
17
|
+
langgraph_api/serde.py,sha256=8fQXg7T7RVUqj_jgOoSOJrWVpQDW0qJKjAjSsEhPHo4,4803
|
|
18
|
+
langgraph_api/server.py,sha256=4P7GpXbE9m-sAV7rBQ4Gd3oFk6htNbL-tRQfICAFc2k,6837
|
|
19
|
+
langgraph_api/sse.py,sha256=3jG_FZj8FI9r7xGWTqaAyDkmqf6P1NOu0EzGrcSOGYc,4033
|
|
20
|
+
langgraph_api/state.py,sha256=8jx4IoTCOjTJuwzuXJKKFwo1VseHjNnw_CCq4x1SW14,2284
|
|
21
|
+
langgraph_api/store.py,sha256=UWVpopgVjAYM2U9Ra6ZY_BmwPPlq6wfqOw7zdWnQjBU,4598
|
|
22
|
+
langgraph_api/stream.py,sha256=UAc_bOlXadE4nK2Bf0iNyzQkMgRegDszk5AMoLR3NGI,12781
|
|
23
|
+
langgraph_api/thread_ttl.py,sha256=-Ox8NFHqUH3wGNdEKMIfAXUubY5WGifIgCaJ7npqLgw,1762
|
|
24
|
+
langgraph_api/utils.py,sha256=92mSti9GfGdMRRWyESKQW5yV-75Z9icGHnIrBYvdypU,3619
|
|
25
|
+
langgraph_api/validation.py,sha256=zMuKmwUEBjBgFMwAaeLZmatwGVijKv2sOYtYg7gfRtc,4950
|
|
26
|
+
langgraph_api/webhook.py,sha256=1ncwO0rIZcj-Df9sxSnFEzd1gP1bfS4okeZQS8NSRoE,1382
|
|
27
|
+
langgraph_api/worker.py,sha256=X1btoYoAhCGLgC8zi34zeF512ZjzXzozOyeb4eLzElY,12418
|
|
3
28
|
langgraph_api/api/__init__.py,sha256=YVzpbn5IQotvuuLG9fhS9QMrxXfP4s4EpEMG0n4q3Nw,5625
|
|
4
|
-
langgraph_api/api/assistants.py,sha256=
|
|
29
|
+
langgraph_api/api/assistants.py,sha256=x_V1rnSGFYjNZFJkZKFN9yNFOqXhqkOSqMDSv3I8VeE,15880
|
|
5
30
|
langgraph_api/api/mcp.py,sha256=RvRYgANqRzNQzSmgjNkq4RlKTtoEJYil04ot9lsmEtE,14352
|
|
6
31
|
langgraph_api/api/meta.py,sha256=sTgkhE-DaFWpERG6F7KelZfDsmJAiVc4j5dg50tDkSo,2950
|
|
7
32
|
langgraph_api/api/openapi.py,sha256=362m6Ny8wOwZ6HrDK9JAVUzPkyLYWKeV1E71hPOaA0U,11278
|
|
8
33
|
langgraph_api/api/runs.py,sha256=ys8X3g2EGbuF_OF1htM4jcLu4Mqztd8v7ttosmIbdsw,17972
|
|
9
|
-
langgraph_api/api/store.py,sha256=
|
|
34
|
+
langgraph_api/api/store.py,sha256=TSeMiuMfrifmEnEbL0aObC2DPeseLlmZvAMaMzPgG3Y,5535
|
|
10
35
|
langgraph_api/api/threads.py,sha256=ogMKmEoiycuaV3fa5kpupDohJ7fwUOfVczt6-WSK4FE,9322
|
|
11
36
|
langgraph_api/api/ui.py,sha256=2nlipYV2nUGR4T9pceaAbgN1lS3-T2zPBh7Nv3j9eZQ,2479
|
|
12
|
-
langgraph_api/asyncio.py,sha256=h0eZ7aoDGnJpoxnHLZABVlj1jQ78UxjgiHntTmAEWek,8613
|
|
13
37
|
langgraph_api/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
38
|
langgraph_api/auth/custom.py,sha256=f_gKqtz1BlPQcwDBlG91k78nxAWKLcxU3wF1tvbZByg,22120
|
|
15
|
-
langgraph_api/auth/langsmith/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
|
-
langgraph_api/auth/langsmith/backend.py,sha256=UNsXa1rXuUJy8fdnasdILIWoxWIlHafY03YJChV0USk,2764
|
|
17
|
-
langgraph_api/auth/langsmith/client.py,sha256=eKchvAom7hdkUXauD8vHNceBDDUijrFgdTV8bKd7x4Q,3998
|
|
18
39
|
langgraph_api/auth/middleware.py,sha256=jDA4t41DUoAArEY_PNoXesIUBJ0nGhh85QzRdn5EPD0,1916
|
|
19
40
|
langgraph_api/auth/noop.py,sha256=Bk6Nf3p8D_iMVy_OyfPlyiJp_aEwzL-sHrbxoXpCbac,586
|
|
20
41
|
langgraph_api/auth/studio_user.py,sha256=FzFQRROKDlA9JjtBuwyZvk6Mbwno5M9RVYjDO6FU3F8,186
|
|
21
|
-
langgraph_api/
|
|
22
|
-
langgraph_api/
|
|
23
|
-
langgraph_api/
|
|
24
|
-
langgraph_api/cron_scheduler.py,sha256=i87j4pJrcsmsqMKeKUs69gaAjrGaSM3pM3jnXdN5JDQ,2630
|
|
25
|
-
langgraph_api/errors.py,sha256=Bu_i5drgNTyJcLiyrwVE_6-XrSU50BHf9TDpttki9wQ,1690
|
|
26
|
-
langgraph_api/graph.py,sha256=sn3rH_D51CZ9Ghd6pIb8LO0nc0oIc8H9RXGRWbiamQU,22256
|
|
27
|
-
langgraph_api/http.py,sha256=gYbxxjY8aLnsXeJymcJ7G7Nj_yToOGpPYQqmZ1_ggfA,5240
|
|
42
|
+
langgraph_api/auth/langsmith/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
43
|
+
langgraph_api/auth/langsmith/backend.py,sha256=UNsXa1rXuUJy8fdnasdILIWoxWIlHafY03YJChV0USk,2764
|
|
44
|
+
langgraph_api/auth/langsmith/client.py,sha256=eKchvAom7hdkUXauD8vHNceBDDUijrFgdTV8bKd7x4Q,3998
|
|
28
45
|
langgraph_api/js/.gitignore,sha256=l5yI6G_V6F1600I1IjiUKn87f4uYIrBAYU1MOyBBhg4,59
|
|
29
46
|
langgraph_api/js/.prettierrc,sha256=0es3ovvyNIqIw81rPQsdt1zCQcOdBqyR_DMbFE4Ifms,19
|
|
30
47
|
langgraph_api/js/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -35,8 +52,12 @@ langgraph_api/js/client.mts,sha256=N9CTH7mbXGSD-gpv-XyruYsHI-rgrObL8cQoAp5s3_U,3
|
|
|
35
52
|
langgraph_api/js/errors.py,sha256=Cm1TKWlUCwZReDC5AQ6SgNIVGD27Qov2xcgHyf8-GXo,361
|
|
36
53
|
langgraph_api/js/global.d.ts,sha256=j4GhgtQSZ5_cHzjSPcHgMJ8tfBThxrH-pUOrrJGteOU,196
|
|
37
54
|
langgraph_api/js/package.json,sha256=craKzuSIEnt-WQpKZDaACwdm75lPqpRQde6l9LfS-eI,1289
|
|
38
|
-
langgraph_api/js/remote.py,sha256=
|
|
55
|
+
langgraph_api/js/remote.py,sha256=utq7tjSFUf0zPLDFgC9lnsGKrtX3EVEX6IcNCc9Q1yM,35934
|
|
39
56
|
langgraph_api/js/schema.py,sha256=7idnv7URlYUdSNMBXQcw7E4SxaPxCq_Oxwnlml8q5ik,408
|
|
57
|
+
langgraph_api/js/sse.py,sha256=lsfp4nyJyA1COmlKG9e2gJnTttf_HGCB5wyH8OZBER8,4105
|
|
58
|
+
langgraph_api/js/tsconfig.json,sha256=imCYqVnqFpaBoZPx8k1nO4slHIWBFsSlmCYhO73cpBs,341
|
|
59
|
+
langgraph_api/js/ui.py,sha256=XNT8iBcyT8XmbIqSQUWd-j_00HsaWB2vRTVabwFBkik,2439
|
|
60
|
+
langgraph_api/js/yarn.lock,sha256=qtnJQjwX8OUQVzsh51N1imtjYGg5RCI9xkg5n5VZMKI,84019
|
|
40
61
|
langgraph_api/js/src/graph.mts,sha256=9zTQNdtanI_CFnOwNRoamoCVHHQHGbNlbm91aRxDeOc,2675
|
|
41
62
|
langgraph_api/js/src/load.hooks.mjs,sha256=xNVHq75W0Lk6MUKl1pQYrx-wtQ8_neiUyI6SO-k0ecM,2235
|
|
42
63
|
langgraph_api/js/src/preload.mjs,sha256=ORV7xwMuZcXWL6jQxNAcCYp8GZVYIvVJbUhmle8jbno,759
|
|
@@ -44,61 +65,18 @@ langgraph_api/js/src/utils/files.mts,sha256=MXC-3gy0pkS82AjPBoUN83jY_qg37WSAPHOA
|
|
|
44
65
|
langgraph_api/js/src/utils/importMap.mts,sha256=pX4TGOyUpuuWF82kXcxcv3-8mgusRezOGe6Uklm2O5A,1644
|
|
45
66
|
langgraph_api/js/src/utils/pythonSchemas.mts,sha256=98IW7Z_VP7L_CHNRMb3_MsiV3BgLE2JsWQY_PQcRR3o,685
|
|
46
67
|
langgraph_api/js/src/utils/serde.mts,sha256=D9o6MwTgwPezC_DEmsWS5NnLPnjPMVWIb1I1D4QPEPo,743
|
|
47
|
-
langgraph_api/js/sse.py,sha256=lsfp4nyJyA1COmlKG9e2gJnTttf_HGCB5wyH8OZBER8,4105
|
|
48
|
-
langgraph_api/js/tests/api.test.mts,sha256=UT5UotPULGYUMQ5ZQ5yLBhRP-0cfPmQ3-4-a5GQ9p58,69458
|
|
49
|
-
langgraph_api/js/tests/auth.test.mts,sha256=mMhKe9ggJw4BgUqzSVwqYY3HLMXXEBZ23iiKK8Yq1mM,21678
|
|
50
|
-
langgraph_api/js/tests/compose-postgres.auth.yml,sha256=iPfJbCeYZdV6GiRLiDn_f7qgpG4TyyGaQ4lV-ZXr6Qk,1768
|
|
51
|
-
langgraph_api/js/tests/compose-postgres.yml,sha256=w4B3YRS0QEnTcZH2-MY0DYvR_c5GcER0uDa1Ga_knf8,1960
|
|
52
|
-
langgraph_api/js/tests/graphs/.gitignore,sha256=26J8MarZNXh7snXD5eTpV3CPFTht5Znv8dtHYCLNfkw,12
|
|
53
|
-
langgraph_api/js/tests/graphs/agent.css,sha256=QgcOC0W7IBsrg4pSqqpull-WTgtULZfx_lF_5ZxLdag,23
|
|
54
|
-
langgraph_api/js/tests/graphs/agent.mts,sha256=0CizKahPnDg5JB9_zGyZRQc7RCM19SV4FiWxscLAWY0,5402
|
|
55
|
-
langgraph_api/js/tests/graphs/agent.ui.tsx,sha256=JDFJdpdIS6rglkXTaROSb1Is0j1kt5wN9ML8W4cuht8,175
|
|
56
|
-
langgraph_api/js/tests/graphs/agent_simple.mts,sha256=EDaQXM5x73HhcHoujezOX5C27uZdGdtfMVBE9o4hleE,2998
|
|
57
|
-
langgraph_api/js/tests/graphs/auth.mts,sha256=MS7pyla1bHRT5Ll-6-vxqcr6-kjbMorn4wG7LlMiOzg,3196
|
|
58
|
-
langgraph_api/js/tests/graphs/command.mts,sha256=HAliqio19XXSe4nTxKMCCIm7uUc0jPvvs6KUW16Cqhc,1164
|
|
59
|
-
langgraph_api/js/tests/graphs/delay.mts,sha256=LPZSex0AJO_Bcp1qtS6P92VRVN9rBZQQLBSsPUd6gOc,704
|
|
60
|
-
langgraph_api/js/tests/graphs/dynamic.mts,sha256=Wf_-keF7lkEfp_iyI45nlFGCeU8ARLQ8axc0LXh7TyE,659
|
|
61
|
-
langgraph_api/js/tests/graphs/error.mts,sha256=l4tk89449dj1BnEF_0ZcfPt0Ikk1gl8L1RaSnRfr3xo,487
|
|
62
|
-
langgraph_api/js/tests/graphs/http.mts,sha256=64xbMlLA58323zOX68Zh57zIB5Zl8ZCqEWRPNdJ-oJs,2171
|
|
63
|
-
langgraph_api/js/tests/graphs/langgraph.json,sha256=h6hV1wkNEUIpLBX9JOUKqtIBvbhvzyLEuWtBIHteseg,265
|
|
64
|
-
langgraph_api/js/tests/graphs/nested.mts,sha256=e06kFzcX2zEJlb7e5B6kMnuZn6sfvsO7PCcYGkkV-8U,1248
|
|
65
|
-
langgraph_api/js/tests/graphs/package.json,sha256=8kgqWdZJCwekCqjsSrhbLrAPZ2vEy1DmcC8EQnwJMDU,262
|
|
66
|
-
langgraph_api/js/tests/graphs/weather.mts,sha256=Gef9dCXxoVgNa4Ba0AcoptodYV85Ed2CGcleUB9BRMk,1656
|
|
67
|
-
langgraph_api/js/tests/graphs/yarn.lock,sha256=HDLJKx47Y-csPzA5eYUMVHWE8fMKrZgrc4SEkQAYYCE,11201
|
|
68
|
-
langgraph_api/js/tests/utils.mts,sha256=Jk1ZZmllNgSS6FJlSs9VaQxHqCEUzkqB5rRQwTSAOP4,441
|
|
69
|
-
langgraph_api/js/tsconfig.json,sha256=imCYqVnqFpaBoZPx8k1nO4slHIWBFsSlmCYhO73cpBs,341
|
|
70
|
-
langgraph_api/js/ui.py,sha256=XNT8iBcyT8XmbIqSQUWd-j_00HsaWB2vRTVabwFBkik,2439
|
|
71
|
-
langgraph_api/js/yarn.lock,sha256=qtnJQjwX8OUQVzsh51N1imtjYGg5RCI9xkg5n5VZMKI,84019
|
|
72
|
-
langgraph_api/logging.py,sha256=3GSbvmXi8yWxWxJ558RE81xUEdklrPHJ4PpkxAb-35w,4428
|
|
73
|
-
langgraph_api/metadata.py,sha256=ptaxwmzdx2bUBSc1KRhqgF-Xnm-Zh2gqwSiHpl8LD9c,4482
|
|
74
68
|
langgraph_api/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
75
69
|
langgraph_api/middleware/http_logger.py,sha256=aj4mdisRobFePkD3Iy6-w_Mujwx4TQRaEhPvSd6HgLk,3284
|
|
76
70
|
langgraph_api/middleware/private_network.py,sha256=eYgdyU8AzU2XJu362i1L8aSFoQRiV7_aLBPw7_EgeqI,2111
|
|
77
71
|
langgraph_api/middleware/request_id.py,sha256=jBaL-zRLIYuGkYBz1poSH35ld_GDRuiMR5CyIpzKJt8,1025
|
|
78
72
|
langgraph_api/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
79
73
|
langgraph_api/models/run.py,sha256=kVdxF239sVmdvXUZNBL-GV0-euZO-Ca2Jz8qseNycKM,13362
|
|
80
|
-
langgraph_api/patch.py,sha256=Dgs0PXHytekX4SUL6KsjjN0hHcOtGLvv1GRGbh6PswU,1408
|
|
81
|
-
langgraph_api/queue_entrypoint.py,sha256=Hw6W66EEY_V7GHvnRzijsbvoNy4TM7IQVoZJ-DRbSfU,2173
|
|
82
|
-
langgraph_api/route.py,sha256=uN311KjIugyNHG3rmVw_ms61QO1W1l16jJx03rf0R_s,4630
|
|
83
|
-
langgraph_api/schema.py,sha256=2711t4PIBk5dky4gmMndrTRC9CVvAgH47C9FKDxhkBo,5444
|
|
84
|
-
langgraph_api/serde.py,sha256=8fQXg7T7RVUqj_jgOoSOJrWVpQDW0qJKjAjSsEhPHo4,4803
|
|
85
|
-
langgraph_api/server.py,sha256=4P7GpXbE9m-sAV7rBQ4Gd3oFk6htNbL-tRQfICAFc2k,6837
|
|
86
|
-
langgraph_api/sse.py,sha256=3jG_FZj8FI9r7xGWTqaAyDkmqf6P1NOu0EzGrcSOGYc,4033
|
|
87
|
-
langgraph_api/state.py,sha256=8jx4IoTCOjTJuwzuXJKKFwo1VseHjNnw_CCq4x1SW14,2284
|
|
88
|
-
langgraph_api/stream.py,sha256=vQXHb2f8g-VvTRjPcgq4MEQ2mR4tYdQ8nxr4V3ogQkQ,12433
|
|
89
|
-
langgraph_api/thread_ttl.py,sha256=-Ox8NFHqUH3wGNdEKMIfAXUubY5WGifIgCaJ7npqLgw,1762
|
|
90
74
|
langgraph_api/tunneling/cloudflare.py,sha256=iKb6tj-VWPlDchHFjuQyep2Dpb-w2NGfJKt-WJG9LH0,3650
|
|
91
|
-
langgraph_api/utils.py,sha256=92mSti9GfGdMRRWyESKQW5yV-75Z9icGHnIrBYvdypU,3619
|
|
92
|
-
langgraph_api/validation.py,sha256=zMuKmwUEBjBgFMwAaeLZmatwGVijKv2sOYtYg7gfRtc,4950
|
|
93
|
-
langgraph_api/webhook.py,sha256=1ncwO0rIZcj-Df9sxSnFEzd1gP1bfS4okeZQS8NSRoE,1382
|
|
94
|
-
langgraph_api/worker.py,sha256=uuQ6i9iKvSeF4CD_w1nGgpQ4FXLZ2wpn3IvHOLfphTY,12391
|
|
95
75
|
langgraph_license/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
96
76
|
langgraph_license/validation.py,sha256=ZKraAVJArAABKqrmHN-EN18ncoNUmRm500Yt1Sc7tUA,537
|
|
97
77
|
langgraph_runtime/__init__.py,sha256=O4GgSmu33c-Pr8Xzxj_brcK5vkm70iNTcyxEjICFZxA,1075
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
langgraph_api-0.2.
|
|
101
|
-
langgraph_api-0.2.
|
|
102
|
-
langgraph_api-0.2.
|
|
103
|
-
langgraph_api-0.2.26.dist-info/entry_points.txt,sha256=3EYLgj89DfzqJHHYGxPH4A_fEtClvlRbWRUHaXO7hj4,77
|
|
104
|
-
langgraph_api-0.2.26.dist-info/RECORD,,
|
|
78
|
+
langgraph_api-0.2.28.dist-info/METADATA,sha256=DetFDsETpSVApUMNUJpV8mCknIsw06H-0n4HkcvxI7Q,3892
|
|
79
|
+
langgraph_api-0.2.28.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
80
|
+
langgraph_api-0.2.28.dist-info/entry_points.txt,sha256=hGedv8n7cgi41PypMfinwS_HfCwA7xJIfS0jAp8htV8,78
|
|
81
|
+
langgraph_api-0.2.28.dist-info/licenses/LICENSE,sha256=ZPwVR73Biwm3sK6vR54djCrhaRiM4cAD2zvOQZV8Xis,3859
|
|
82
|
+
langgraph_api-0.2.28.dist-info/RECORD,,
|