langgraph-api 0.0.47__tar.gz → 0.0.48__tar.gz
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-0.0.47 → langgraph_api-0.0.48}/PKG-INFO +1 -1
- langgraph_api-0.0.48/langgraph_api/__init__.py +1 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/middleware/http_logger.py +19 -16
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_storage/ops.py +6 -9
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/pyproject.toml +1 -1
- langgraph_api-0.0.47/langgraph_api/__init__.py +0 -1
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/LICENSE +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/README.md +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/api/__init__.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/api/assistants.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/api/mcp.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/api/meta.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/api/openapi.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/api/runs.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/api/store.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/api/threads.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/api/ui.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/asyncio.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/auth/__init__.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/auth/custom.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/auth/langsmith/__init__.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/auth/langsmith/backend.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/auth/langsmith/client.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/auth/middleware.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/auth/noop.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/auth/studio_user.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/cli.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/command.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/config.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/cron_scheduler.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/errors.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/graph.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/http.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/.gitignore +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/base.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/build.mts +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/client.mts +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/errors.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/global.d.ts +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/package.json +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/remote.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/schema.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/src/graph.mts +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/src/hooks.mjs +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/src/parser/parser.mts +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/src/parser/parser.worker.mjs +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/src/schema/types.mts +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/src/schema/types.template.mts +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/src/utils/importMap.mts +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/src/utils/serde.mts +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/sse.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/api.test.mts +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/compose-postgres.yml +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/graphs/.gitignore +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/graphs/agent.css +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/graphs/agent.mts +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/graphs/agent.ui.tsx +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/graphs/command.mts +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/graphs/delay.mts +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/graphs/dynamic.mts +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/graphs/error.mts +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/graphs/langgraph.json +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/graphs/nested.mts +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/graphs/package.json +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/graphs/weather.mts +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/graphs/yarn.lock +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/parser.test.mts +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/tests/utils.mts +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/ui.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/yarn.lock +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/lifespan.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/logging.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/metadata.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/middleware/__init__.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/middleware/private_network.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/models/__init__.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/models/run.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/patch.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/queue_entrypoint.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/route.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/schema.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/serde.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/server.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/sse.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/state.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/stream.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/thread_ttl.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/utils.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/validation.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/webhook.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/worker.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_license/__init__.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_license/middleware.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_license/validation.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_storage/__init__.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_storage/checkpoint.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_storage/database.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_storage/inmem_stream.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_storage/queue.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_storage/retry.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_storage/store.py +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/logging.json +0 -0
- {langgraph_api-0.0.47 → langgraph_api-0.0.48}/openapi.json +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.0.46"
|
|
@@ -5,7 +5,6 @@ import structlog
|
|
|
5
5
|
from starlette.requests import ClientDisconnect
|
|
6
6
|
from starlette.types import Message, Receive, Scope, Send
|
|
7
7
|
|
|
8
|
-
from langgraph_api.asyncio import create_task
|
|
9
8
|
from langgraph_api.logging import LOG_JSON
|
|
10
9
|
|
|
11
10
|
asgi = structlog.stdlib.get_logger("asgi")
|
|
@@ -21,6 +20,12 @@ class AccessLoggerMiddleware:
|
|
|
21
20
|
) -> None:
|
|
22
21
|
self.app = app
|
|
23
22
|
self.logger = logger
|
|
23
|
+
if hasattr(logger, "isEnabledFor"):
|
|
24
|
+
self.debug_enabled = self.logger.isEnabledFor(logging.DEBUG)
|
|
25
|
+
elif hasattr(logger, "is_enabled_for"):
|
|
26
|
+
self.debug_enabled = self.logger.is_enabled_for(logging.DEBUG)
|
|
27
|
+
else:
|
|
28
|
+
self.debug_enabled = False
|
|
24
29
|
|
|
25
30
|
async def __call__(self, scope: Scope, receive: Receive, send: Send) -> None:
|
|
26
31
|
if scope["type"] != "http" or (LOG_JSON and scope.get("path") in PATHS_IGNORE):
|
|
@@ -29,7 +34,7 @@ class AccessLoggerMiddleware:
|
|
|
29
34
|
loop = asyncio.get_event_loop()
|
|
30
35
|
info = {"response": {}}
|
|
31
36
|
|
|
32
|
-
if self.
|
|
37
|
+
if self.debug_enabled:
|
|
33
38
|
|
|
34
39
|
async def inner_receive() -> Message:
|
|
35
40
|
message = await receive()
|
|
@@ -61,20 +66,18 @@ class AccessLoggerMiddleware:
|
|
|
61
66
|
finally:
|
|
62
67
|
info["end_time"] = loop.time()
|
|
63
68
|
latency = int((info["end_time"] - info["start_time"]) * 1_000)
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
res_header=_headers_to_dict(info["response"].get("headers")),
|
|
77
|
-
)
|
|
69
|
+
self.logger.info(
|
|
70
|
+
f"{scope.get('method')} {scope.get('path')} {info['response'].get('status')} {latency}ms",
|
|
71
|
+
method=scope.get("method"),
|
|
72
|
+
path=scope.get("path"),
|
|
73
|
+
status=info["response"].get("status"),
|
|
74
|
+
latency_ms=latency,
|
|
75
|
+
route=scope.get("route"),
|
|
76
|
+
path_params=scope.get("path_params"),
|
|
77
|
+
query_string=scope.get("query_string").decode(),
|
|
78
|
+
proto=scope.get("http_version"),
|
|
79
|
+
req_header=_headers_to_dict(scope.get("headers")),
|
|
80
|
+
res_header=_headers_to_dict(info["response"].get("headers")),
|
|
78
81
|
)
|
|
79
82
|
|
|
80
83
|
|
|
@@ -4,7 +4,6 @@ import asyncio
|
|
|
4
4
|
import base64
|
|
5
5
|
import copy
|
|
6
6
|
import json
|
|
7
|
-
import logging
|
|
8
7
|
import uuid
|
|
9
8
|
from collections import defaultdict
|
|
10
9
|
from collections.abc import AsyncIterator, Sequence
|
|
@@ -1915,7 +1914,6 @@ class Runs(Authenticated):
|
|
|
1915
1914
|
ctx: Auth.types.BaseAuthContext | None = None,
|
|
1916
1915
|
) -> AsyncIterator[tuple[bytes, bytes]]:
|
|
1917
1916
|
"""Stream the run output."""
|
|
1918
|
-
log = logger.isEnabledFor(logging.DEBUG)
|
|
1919
1917
|
queue = (
|
|
1920
1918
|
stream_mode
|
|
1921
1919
|
if isinstance(stream_mode, asyncio.Queue)
|
|
@@ -1954,13 +1952,12 @@ class Runs(Authenticated):
|
|
|
1954
1952
|
else:
|
|
1955
1953
|
# Extract mode from topic
|
|
1956
1954
|
yield topic[len_prefix:], data
|
|
1957
|
-
|
|
1958
|
-
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
)
|
|
1955
|
+
logger.debug(
|
|
1956
|
+
"Streamed run event",
|
|
1957
|
+
run_id=str(run_id),
|
|
1958
|
+
stream_mode=topic[len_prefix:],
|
|
1959
|
+
data=data,
|
|
1960
|
+
)
|
|
1964
1961
|
except TimeoutError:
|
|
1965
1962
|
# Check if the run is still pending
|
|
1966
1963
|
run_iter = await Runs.get(
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.0.47"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.0.47 → langgraph_api-0.0.48}/langgraph_api/js/src/schema/types.template.mts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|