langgraph-api 0.2.128__tar.gz → 0.2.130__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.2.128 → langgraph_api-0.2.130}/PKG-INFO +2 -2
- langgraph_api-0.2.130/langgraph_api/__init__.py +1 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/config.py +2 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/js/base.py +0 -3
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/js/client.mts +3 -9
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/js/remote.py +5 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/middleware/http_logger.py +2 -2
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/models/run.py +8 -6
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/route.py +7 -1
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/server.py +5 -1
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/stream.py +49 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/utils/headers.py +22 -5
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/worker.py +28 -5
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/openapi.json +2 -2
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/pyproject.toml +1 -1
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/uv.lock +80 -75
- langgraph_api-0.2.128/langgraph_api/__init__.py +0 -1
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/.gitignore +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/LICENSE +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/Makefile +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/README.md +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/benchmark/.gitignore +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/benchmark/Makefile +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/benchmark/README.md +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/benchmark/burst.js +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/benchmark/ramp.js +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/benchmark/weather.js +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/constraints.txt +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/forbidden.txt +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/healthcheck.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/api/__init__.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/api/assistants.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/api/mcp.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/api/meta.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/api/openapi.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/api/runs.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/api/store.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/api/threads.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/api/ui.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/asgi_transport.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/asyncio.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/auth/__init__.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/auth/custom.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/auth/langsmith/__init__.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/auth/langsmith/backend.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/auth/langsmith/client.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/auth/middleware.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/auth/noop.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/auth/studio_user.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/cli.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/command.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/cron_scheduler.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/errors.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/feature_flags.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/graph.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/http.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/http_metrics.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/js/.gitignore +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/js/.prettierrc +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/js/__init__.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/js/build.mts +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/js/client.http.mts +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/js/errors.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/js/global.d.ts +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/js/package.json +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/js/schema.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/js/src/graph.mts +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/js/src/load.hooks.mjs +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/js/src/preload.mjs +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/js/src/utils/files.mts +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/js/src/utils/importMap.mts +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/js/src/utils/serde.mts +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/js/sse.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/js/traceblock.mts +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/js/tsconfig.json +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/js/ui.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/js/yarn.lock +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/logging.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/metadata.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/middleware/__init__.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/middleware/private_network.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/middleware/request_id.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/models/__init__.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/patch.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/queue_entrypoint.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/schema.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/serde.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/sse.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/state.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/store.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/thread_ttl.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/traceblock.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/tunneling/cloudflare.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/utils/__init__.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/utils/cache.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/utils/config.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/utils/future.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/utils.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/validation.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/webhook.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_license/__init__.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_license/validation.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_runtime/__init__.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_runtime/checkpoint.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_runtime/database.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_runtime/lifespan.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_runtime/metrics.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_runtime/ops.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_runtime/queue.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_runtime/retry.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_runtime/store.py +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/logging.json +0 -0
- {langgraph_api-0.2.128 → langgraph_api-0.2.130}/scripts/create_license.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: langgraph-api
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.130
|
|
4
4
|
Author-email: Nuno Campos <nuno@langchain.dev>, Will Fu-Hinthorn <will@langchain.dev>
|
|
5
5
|
License: Elastic-2.0
|
|
6
6
|
License-File: LICENSE
|
|
@@ -11,7 +11,7 @@ Requires-Dist: httpx>=0.25.0
|
|
|
11
11
|
Requires-Dist: jsonschema-rs<0.30,>=0.20.0
|
|
12
12
|
Requires-Dist: langchain-core>=0.3.64
|
|
13
13
|
Requires-Dist: langgraph-checkpoint>=2.0.23
|
|
14
|
-
Requires-Dist: langgraph-runtime-inmem<0.7,>=0.6.
|
|
14
|
+
Requires-Dist: langgraph-runtime-inmem<0.7,>=0.6.13
|
|
15
15
|
Requires-Dist: langgraph-sdk>=0.2.0
|
|
16
16
|
Requires-Dist: langgraph>=0.4.0
|
|
17
17
|
Requires-Dist: langsmith>=0.3.45
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.2.130"
|
|
@@ -51,6 +51,7 @@ class HttpConfig(TypedDict, total=False):
|
|
|
51
51
|
mount_prefix: str
|
|
52
52
|
"""Prefix for mounted routes. E.g., "/my-deployment/api"."""
|
|
53
53
|
configurable_headers: ConfigurableHeaders | None
|
|
54
|
+
logging_headers: ConfigurableHeaders | None
|
|
54
55
|
|
|
55
56
|
|
|
56
57
|
class ThreadTTLConfig(TypedDict, total=False):
|
|
@@ -286,6 +287,7 @@ if THREAD_TTL is None and CHECKPOINTER_CONFIG is not None:
|
|
|
286
287
|
N_JOBS_PER_WORKER = env("N_JOBS_PER_WORKER", cast=int, default=10)
|
|
287
288
|
BG_JOB_TIMEOUT_SECS = env("BG_JOB_TIMEOUT_SECS", cast=float, default=3600)
|
|
288
289
|
FF_CRONS_ENABLED = env("FF_CRONS_ENABLED", cast=bool, default=True)
|
|
290
|
+
FF_RICH_THREADS = env("FF_RICH_THREADS", cast=bool, default=False)
|
|
289
291
|
|
|
290
292
|
# auth
|
|
291
293
|
|
|
@@ -116,6 +116,7 @@ let GRAPH_OPTIONS: {
|
|
|
116
116
|
let nodesExecuted = 0;
|
|
117
117
|
function incrementNodes() {
|
|
118
118
|
nodesExecuted++;
|
|
119
|
+
logger.debug(`Incremented nodes executed to ${nodesExecuted}`);
|
|
119
120
|
}
|
|
120
121
|
|
|
121
122
|
const version = await (async () => {
|
|
@@ -1029,15 +1030,7 @@ async function main() {
|
|
|
1029
1030
|
getStateHistoryRequest,
|
|
1030
1031
|
),
|
|
1031
1032
|
);
|
|
1032
|
-
|
|
1033
|
-
"/:graphId/getNodesExecuted",
|
|
1034
|
-
zValidator("json", GetNodesExecutedPayload),
|
|
1035
|
-
handleInvoke(
|
|
1036
|
-
"getNodesExecuted",
|
|
1037
|
-
GetNodesExecutedPayload,
|
|
1038
|
-
getNodesExecutedRequest,
|
|
1039
|
-
),
|
|
1040
|
-
);
|
|
1033
|
+
|
|
1041
1034
|
app.post(
|
|
1042
1035
|
"/:graphId/getNodesExecuted",
|
|
1043
1036
|
zValidator("json", GetNodesExecutedPayload),
|
|
@@ -1147,6 +1140,7 @@ async function getNodesExecutedRequest(
|
|
|
1147
1140
|
) {
|
|
1148
1141
|
const value = nodesExecuted;
|
|
1149
1142
|
nodesExecuted = 0;
|
|
1143
|
+
logger.debug(`Returning ${value} nodes executed. Reset nodes executed to ${nodesExecuted}.`);
|
|
1150
1144
|
return { nodesExecuted: value };
|
|
1151
1145
|
}
|
|
1152
1146
|
patchFetch();
|
|
@@ -344,6 +344,11 @@ class RemotePregel(BaseRemotePregel):
|
|
|
344
344
|
|
|
345
345
|
async def fetch_nodes_executed(self):
|
|
346
346
|
result = await _client_invoke("getNodesExecuted", {"graph_id": self.graph_id})
|
|
347
|
+
await logger.adebug(
|
|
348
|
+
f"Fetched {result['nodesExecuted']} nodes executed",
|
|
349
|
+
nodes_executed=result["nodesExecuted"],
|
|
350
|
+
graph_id=self.graph_id,
|
|
351
|
+
)
|
|
347
352
|
return result["nodesExecuted"]
|
|
348
353
|
|
|
349
354
|
|
|
@@ -6,7 +6,7 @@ from starlette.requests import ClientDisconnect
|
|
|
6
6
|
from starlette.types import Message, Receive, Scope, Send
|
|
7
7
|
|
|
8
8
|
from langgraph_api.http_metrics import HTTP_METRICS_COLLECTOR
|
|
9
|
-
from langgraph_api.utils.headers import
|
|
9
|
+
from langgraph_api.utils.headers import should_include_header_in_logs
|
|
10
10
|
|
|
11
11
|
asgi = structlog.stdlib.get_logger("asgi")
|
|
12
12
|
|
|
@@ -117,7 +117,7 @@ def _headers_to_dict(headers: list[tuple[bytes, bytes]] | None) -> dict[str, str
|
|
|
117
117
|
if k in IGNORE_HEADERS:
|
|
118
118
|
continue
|
|
119
119
|
key = k.decode()
|
|
120
|
-
if
|
|
120
|
+
if should_include_header_in_logs(key):
|
|
121
121
|
result[key] = v.decode()
|
|
122
122
|
|
|
123
123
|
return result
|
|
@@ -157,7 +157,7 @@ def assign_defaults(
|
|
|
157
157
|
)
|
|
158
158
|
else:
|
|
159
159
|
stream_mode = ["values"]
|
|
160
|
-
multitask_strategy = payload.get("multitask_strategy") or "
|
|
160
|
+
multitask_strategy = payload.get("multitask_strategy") or "enqueue"
|
|
161
161
|
prevent_insert_if_inflight = multitask_strategy == "reject"
|
|
162
162
|
return stream_mode, multitask_strategy, prevent_insert_if_inflight
|
|
163
163
|
|
|
@@ -282,6 +282,13 @@ async def create_valid_run(
|
|
|
282
282
|
detail="Cannot specify both configurable and context. Prefer setting context alone. Context was introduced in LangGraph 0.6.0 and is the long term planned replacement for configurable.",
|
|
283
283
|
)
|
|
284
284
|
|
|
285
|
+
# Keep config and context in sync for user provided params
|
|
286
|
+
if context:
|
|
287
|
+
configurable = context.copy()
|
|
288
|
+
config["configurable"] = configurable
|
|
289
|
+
else:
|
|
290
|
+
context = configurable.copy()
|
|
291
|
+
|
|
285
292
|
if checkpoint_id:
|
|
286
293
|
configurable["checkpoint_id"] = str(checkpoint_id)
|
|
287
294
|
if checkpoint := payload.get("checkpoint"):
|
|
@@ -308,11 +315,6 @@ async def create_valid_run(
|
|
|
308
315
|
put_time_start = time.time()
|
|
309
316
|
if_not_exists = payload.get("if_not_exists", "reject")
|
|
310
317
|
|
|
311
|
-
# Keep config and context in sync
|
|
312
|
-
# Configurable is either A) just internal config or B) internal config + user config (and context is empty). Either way, configurable is the default.
|
|
313
|
-
context = {**context, **configurable}
|
|
314
|
-
config["configurable"] = context
|
|
315
|
-
|
|
316
318
|
run_coro = Runs.put(
|
|
317
319
|
conn,
|
|
318
320
|
assistant_id,
|
|
@@ -7,6 +7,7 @@ import orjson
|
|
|
7
7
|
from starlette._exception_handler import wrap_app_handling_exceptions
|
|
8
8
|
from starlette._utils import is_async_callable
|
|
9
9
|
from starlette.concurrency import run_in_threadpool
|
|
10
|
+
from starlette.exceptions import HTTPException
|
|
10
11
|
from starlette.middleware import Middleware
|
|
11
12
|
from starlette.requests import Request
|
|
12
13
|
from starlette.responses import JSONResponse
|
|
@@ -75,7 +76,12 @@ class ApiRequest(Request):
|
|
|
75
76
|
async def json(self, schema: SchemaType = None) -> typing.Any:
|
|
76
77
|
if not hasattr(self, "_json"):
|
|
77
78
|
body = await self.body()
|
|
78
|
-
|
|
79
|
+
try:
|
|
80
|
+
self._json = await run_in_threadpool(_json_loads, body, schema)
|
|
81
|
+
except orjson.JSONDecodeError as e:
|
|
82
|
+
raise HTTPException(
|
|
83
|
+
status_code=422, detail="Invalid JSON in request body"
|
|
84
|
+
) from e
|
|
79
85
|
return self._json
|
|
80
86
|
|
|
81
87
|
|
|
@@ -71,7 +71,11 @@ middleware.extend(
|
|
|
71
71
|
allow_credentials=True,
|
|
72
72
|
allow_methods=["*"],
|
|
73
73
|
allow_headers=["*"],
|
|
74
|
-
expose_headers=[
|
|
74
|
+
expose_headers=[
|
|
75
|
+
"x-pagination-total",
|
|
76
|
+
"x-pagination-next",
|
|
77
|
+
"content-location",
|
|
78
|
+
],
|
|
75
79
|
)
|
|
76
80
|
if config.CORS_CONFIG is None
|
|
77
81
|
else Middleware(
|
|
@@ -40,6 +40,42 @@ from langgraph_runtime.ops import Runs
|
|
|
40
40
|
|
|
41
41
|
logger = structlog.stdlib.get_logger(__name__)
|
|
42
42
|
|
|
43
|
+
|
|
44
|
+
async def _filter_context_by_schema(
|
|
45
|
+
context: dict[str, Any], context_schema: dict | None
|
|
46
|
+
) -> dict[str, Any]:
|
|
47
|
+
"""Filter context parameters based on the context schema.
|
|
48
|
+
|
|
49
|
+
Args:
|
|
50
|
+
context: The context dictionary to filter
|
|
51
|
+
context_schema: The JSON schema for valid context parameters
|
|
52
|
+
|
|
53
|
+
Returns:
|
|
54
|
+
Filtered context dictionary containing only valid parameters
|
|
55
|
+
"""
|
|
56
|
+
if not context_schema or not context:
|
|
57
|
+
return context
|
|
58
|
+
|
|
59
|
+
# Extract valid properties from the schema
|
|
60
|
+
properties = context_schema.get("properties", {})
|
|
61
|
+
if not properties:
|
|
62
|
+
return context
|
|
63
|
+
|
|
64
|
+
# Filter context to only include parameters defined in the schema
|
|
65
|
+
filtered_context = {}
|
|
66
|
+
for key, value in context.items():
|
|
67
|
+
if key in properties:
|
|
68
|
+
filtered_context[key] = value
|
|
69
|
+
else:
|
|
70
|
+
await logger.adebug(
|
|
71
|
+
f"Filtering out context parameter '{key}' not found in context schema",
|
|
72
|
+
context_key=key,
|
|
73
|
+
available_keys=list(properties.keys()),
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
return filtered_context
|
|
77
|
+
|
|
78
|
+
|
|
43
79
|
AnyStream = AsyncIterator[tuple[str, Any]]
|
|
44
80
|
|
|
45
81
|
|
|
@@ -107,6 +143,17 @@ async def astream_state(
|
|
|
107
143
|
checkpointer=None if temporary else Checkpointer(),
|
|
108
144
|
)
|
|
109
145
|
)
|
|
146
|
+
|
|
147
|
+
# Filter context parameters based on context schema if available
|
|
148
|
+
if context and USE_RUNTIME_CONTEXT_API and not isinstance(graph, BaseRemotePregel):
|
|
149
|
+
try:
|
|
150
|
+
context_schema = graph.get_context_jsonschema()
|
|
151
|
+
context = await _filter_context_by_schema(context, context_schema)
|
|
152
|
+
except Exception as e:
|
|
153
|
+
await logger.adebug(
|
|
154
|
+
f"Failed to get context schema for filtering: {e}", exc_info=e
|
|
155
|
+
)
|
|
156
|
+
|
|
110
157
|
input = kwargs.pop("input")
|
|
111
158
|
if cmd := kwargs.pop("command"):
|
|
112
159
|
input = map_cmd(cmd)
|
|
@@ -339,6 +386,8 @@ async def astream_state(
|
|
|
339
386
|
incr_nodes(None, incr=nodes_executed)
|
|
340
387
|
except Exception as e:
|
|
341
388
|
logger.warning(f"Failed to fetch nodes executed for {graph.graph_id}: {e}")
|
|
389
|
+
else:
|
|
390
|
+
await logger.adebug("Graph is not an instance of BaseRemotePregel")
|
|
342
391
|
|
|
343
392
|
# Get feedback URLs
|
|
344
393
|
if feedback_keys:
|
|
@@ -24,15 +24,15 @@ def translate_pattern(pat: str) -> re.Pattern[str]:
|
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
@functools.lru_cache(maxsize=1)
|
|
27
|
-
def get_header_patterns(
|
|
28
|
-
|
|
29
|
-
]:
|
|
27
|
+
def get_header_patterns(
|
|
28
|
+
key: str,
|
|
29
|
+
) -> tuple[list[re.Pattern[str]] | None, list[re.Pattern[str]] | None]:
|
|
30
30
|
"""Get the configured header include/exclude patterns."""
|
|
31
31
|
from langgraph_api import config
|
|
32
32
|
|
|
33
33
|
if not config.HTTP_CONFIG:
|
|
34
34
|
return None, None
|
|
35
|
-
configurable = config.HTTP_CONFIG.get(
|
|
35
|
+
configurable = config.HTTP_CONFIG.get(key)
|
|
36
36
|
if not configurable:
|
|
37
37
|
return None, None
|
|
38
38
|
header_includes = configurable.get("includes") or configurable.get("include") or []
|
|
@@ -59,8 +59,25 @@ def should_include_header(key: str) -> bool:
|
|
|
59
59
|
Returns:
|
|
60
60
|
True if the header should be included, False otherwise
|
|
61
61
|
"""
|
|
62
|
-
include_patterns, exclude_patterns = get_header_patterns()
|
|
62
|
+
include_patterns, exclude_patterns = get_header_patterns("configurable_headers")
|
|
63
63
|
|
|
64
|
+
return pattern_matches(key, include_patterns, exclude_patterns)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
@functools.lru_cache(maxsize=512)
|
|
68
|
+
def should_include_header_in_logs(key: str) -> bool:
|
|
69
|
+
"""Check if header should be included in logs specifically."""
|
|
70
|
+
|
|
71
|
+
include_patterns, exclude_patterns = get_header_patterns("logging_headers")
|
|
72
|
+
|
|
73
|
+
return pattern_matches(key, include_patterns, exclude_patterns)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def pattern_matches(
|
|
77
|
+
key: str,
|
|
78
|
+
include_patterns: list[re.Pattern[str]] | None,
|
|
79
|
+
exclude_patterns: list[re.Pattern[str]] | None,
|
|
80
|
+
) -> bool:
|
|
64
81
|
# Handle configurable behavior
|
|
65
82
|
if exclude_patterns and any(pattern.match(key) for pattern in exclude_patterns):
|
|
66
83
|
return False
|
|
@@ -54,7 +54,6 @@ async def set_auth_ctx_for_run(
|
|
|
54
54
|
user = normalize_user(user)
|
|
55
55
|
# Reapply normalization to the kwargs
|
|
56
56
|
run_kwargs["config"]["configurable"]["langgraph_auth_user"] = user
|
|
57
|
-
run_kwargs["context"]["langgraph_auth_user"] = user
|
|
58
57
|
except Exception:
|
|
59
58
|
user = SimpleUser(user_id) if user_id is not None else None
|
|
60
59
|
permissions = None
|
|
@@ -210,6 +209,7 @@ async def worker(
|
|
|
210
209
|
|
|
211
210
|
# handle exceptions and set status
|
|
212
211
|
async with connect() as conn:
|
|
212
|
+
graph_id = run["kwargs"]["config"]["configurable"]["graph_id"]
|
|
213
213
|
log_info = {
|
|
214
214
|
"run_id": str(run_id),
|
|
215
215
|
"run_attempt": attempt,
|
|
@@ -253,7 +253,12 @@ async def worker(
|
|
|
253
253
|
)
|
|
254
254
|
if not temporary:
|
|
255
255
|
await Threads.set_joint_status(
|
|
256
|
-
conn,
|
|
256
|
+
conn,
|
|
257
|
+
run["thread_id"],
|
|
258
|
+
run_id,
|
|
259
|
+
status,
|
|
260
|
+
graph_id=graph_id,
|
|
261
|
+
checkpoint=checkpoint,
|
|
257
262
|
)
|
|
258
263
|
elif isinstance(exception, TimeoutError):
|
|
259
264
|
status = "timeout"
|
|
@@ -263,7 +268,12 @@ async def worker(
|
|
|
263
268
|
)
|
|
264
269
|
if not temporary:
|
|
265
270
|
await Threads.set_joint_status(
|
|
266
|
-
conn,
|
|
271
|
+
conn,
|
|
272
|
+
run["thread_id"],
|
|
273
|
+
run_id,
|
|
274
|
+
status,
|
|
275
|
+
graph_id=graph_id,
|
|
276
|
+
checkpoint=checkpoint,
|
|
267
277
|
)
|
|
268
278
|
elif isinstance(exception, UserRollback):
|
|
269
279
|
status = "rollback"
|
|
@@ -274,6 +284,7 @@ async def worker(
|
|
|
274
284
|
run["thread_id"],
|
|
275
285
|
run_id,
|
|
276
286
|
status,
|
|
287
|
+
graph_id=graph_id,
|
|
277
288
|
checkpoint=checkpoint,
|
|
278
289
|
)
|
|
279
290
|
await logger.ainfo(
|
|
@@ -298,7 +309,13 @@ async def worker(
|
|
|
298
309
|
)
|
|
299
310
|
if not temporary:
|
|
300
311
|
await Threads.set_joint_status(
|
|
301
|
-
conn,
|
|
312
|
+
conn,
|
|
313
|
+
run["thread_id"],
|
|
314
|
+
run_id,
|
|
315
|
+
status,
|
|
316
|
+
graph_id,
|
|
317
|
+
checkpoint,
|
|
318
|
+
exception,
|
|
302
319
|
)
|
|
303
320
|
elif isinstance(exception, ALL_RETRIABLE_EXCEPTIONS):
|
|
304
321
|
status = "retry"
|
|
@@ -323,7 +340,13 @@ async def worker(
|
|
|
323
340
|
)
|
|
324
341
|
if not temporary:
|
|
325
342
|
await Threads.set_joint_status(
|
|
326
|
-
conn,
|
|
343
|
+
conn,
|
|
344
|
+
run["thread_id"],
|
|
345
|
+
run_id,
|
|
346
|
+
status,
|
|
347
|
+
graph_id,
|
|
348
|
+
checkpoint,
|
|
349
|
+
exception,
|
|
327
350
|
)
|
|
328
351
|
|
|
329
352
|
# delete thread if it's temporary and we don't want to retry
|
|
@@ -3555,7 +3555,7 @@
|
|
|
3555
3555
|
],
|
|
3556
3556
|
"title": "Multitask Strategy",
|
|
3557
3557
|
"description": "Multitask strategy to use. Must be one of 'reject', 'interrupt', 'rollback', or 'enqueue'.",
|
|
3558
|
-
"default": "
|
|
3558
|
+
"default": "enqueue"
|
|
3559
3559
|
}
|
|
3560
3560
|
},
|
|
3561
3561
|
"type": "object",
|
|
@@ -4078,7 +4078,7 @@
|
|
|
4078
4078
|
],
|
|
4079
4079
|
"title": "Multitask Strategy",
|
|
4080
4080
|
"description": "Multitask strategy to use. Must be one of 'reject', 'interrupt', 'rollback', or 'enqueue'.",
|
|
4081
|
-
"default": "
|
|
4081
|
+
"default": "enqueue"
|
|
4082
4082
|
},
|
|
4083
4083
|
"if_not_exists": {
|
|
4084
4084
|
"type": "string",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
version = 1
|
|
2
|
-
revision =
|
|
2
|
+
revision = 3
|
|
3
3
|
requires-python = ">=3.11"
|
|
4
4
|
|
|
5
5
|
[[package]]
|
|
@@ -105,50 +105,55 @@ wheels = [
|
|
|
105
105
|
|
|
106
106
|
[[package]]
|
|
107
107
|
name = "charset-normalizer"
|
|
108
|
-
version = "3.4.
|
|
109
|
-
source = { registry = "https://pypi.org/simple" }
|
|
110
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
111
|
-
wheels = [
|
|
112
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
113
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
114
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
115
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
116
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
117
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
118
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
119
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
120
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
121
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
122
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
123
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
124
|
-
{ url = "https://files.pythonhosted.org/packages/a8/
|
|
125
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
126
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
127
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
128
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
129
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
130
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
131
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
132
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
133
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
134
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
135
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
136
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
137
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
138
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
139
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
140
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
141
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
142
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
143
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
144
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
145
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
146
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
147
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
148
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
149
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
150
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
151
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
108
|
+
version = "3.4.3"
|
|
109
|
+
source = { registry = "https://pypi.org/simple" }
|
|
110
|
+
sdist = { url = "https://files.pythonhosted.org/packages/83/2d/5fd176ceb9b2fc619e63405525573493ca23441330fcdaee6bef9460e924/charset_normalizer-3.4.3.tar.gz", hash = "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14", size = 122371, upload-time = "2025-08-09T07:57:28.46Z" }
|
|
111
|
+
wheels = [
|
|
112
|
+
{ url = "https://files.pythonhosted.org/packages/7f/b5/991245018615474a60965a7c9cd2b4efbaabd16d582a5547c47ee1c7730b/charset_normalizer-3.4.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b256ee2e749283ef3ddcff51a675ff43798d92d746d1a6e4631bf8c707d22d0b", size = 204483, upload-time = "2025-08-09T07:55:53.12Z" },
|
|
113
|
+
{ url = "https://files.pythonhosted.org/packages/c7/2a/ae245c41c06299ec18262825c1569c5d3298fc920e4ddf56ab011b417efd/charset_normalizer-3.4.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:13faeacfe61784e2559e690fc53fa4c5ae97c6fcedb8eb6fb8d0a15b475d2c64", size = 145520, upload-time = "2025-08-09T07:55:54.712Z" },
|
|
114
|
+
{ url = "https://files.pythonhosted.org/packages/3a/a4/b3b6c76e7a635748c4421d2b92c7b8f90a432f98bda5082049af37ffc8e3/charset_normalizer-3.4.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:00237675befef519d9af72169d8604a067d92755e84fe76492fef5441db05b91", size = 158876, upload-time = "2025-08-09T07:55:56.024Z" },
|
|
115
|
+
{ url = "https://files.pythonhosted.org/packages/e2/e6/63bb0e10f90a8243c5def74b5b105b3bbbfb3e7bb753915fe333fb0c11ea/charset_normalizer-3.4.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:585f3b2a80fbd26b048a0be90c5aae8f06605d3c92615911c3a2b03a8a3b796f", size = 156083, upload-time = "2025-08-09T07:55:57.582Z" },
|
|
116
|
+
{ url = "https://files.pythonhosted.org/packages/87/df/b7737ff046c974b183ea9aa111b74185ac8c3a326c6262d413bd5a1b8c69/charset_normalizer-3.4.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e78314bdc32fa80696f72fa16dc61168fda4d6a0c014e0380f9d02f0e5d8a07", size = 150295, upload-time = "2025-08-09T07:55:59.147Z" },
|
|
117
|
+
{ url = "https://files.pythonhosted.org/packages/61/f1/190d9977e0084d3f1dc169acd060d479bbbc71b90bf3e7bf7b9927dec3eb/charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:96b2b3d1a83ad55310de8c7b4a2d04d9277d5591f40761274856635acc5fcb30", size = 148379, upload-time = "2025-08-09T07:56:00.364Z" },
|
|
118
|
+
{ url = "https://files.pythonhosted.org/packages/4c/92/27dbe365d34c68cfe0ca76f1edd70e8705d82b378cb54ebbaeabc2e3029d/charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:939578d9d8fd4299220161fdd76e86c6a251987476f5243e8864a7844476ba14", size = 160018, upload-time = "2025-08-09T07:56:01.678Z" },
|
|
119
|
+
{ url = "https://files.pythonhosted.org/packages/99/04/baae2a1ea1893a01635d475b9261c889a18fd48393634b6270827869fa34/charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fd10de089bcdcd1be95a2f73dbe6254798ec1bda9f450d5828c96f93e2536b9c", size = 157430, upload-time = "2025-08-09T07:56:02.87Z" },
|
|
120
|
+
{ url = "https://files.pythonhosted.org/packages/2f/36/77da9c6a328c54d17b960c89eccacfab8271fdaaa228305330915b88afa9/charset_normalizer-3.4.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1e8ac75d72fa3775e0b7cb7e4629cec13b7514d928d15ef8ea06bca03ef01cae", size = 151600, upload-time = "2025-08-09T07:56:04.089Z" },
|
|
121
|
+
{ url = "https://files.pythonhosted.org/packages/64/d4/9eb4ff2c167edbbf08cdd28e19078bf195762e9bd63371689cab5ecd3d0d/charset_normalizer-3.4.3-cp311-cp311-win32.whl", hash = "sha256:6cf8fd4c04756b6b60146d98cd8a77d0cdae0e1ca20329da2ac85eed779b6849", size = 99616, upload-time = "2025-08-09T07:56:05.658Z" },
|
|
122
|
+
{ url = "https://files.pythonhosted.org/packages/f4/9c/996a4a028222e7761a96634d1820de8a744ff4327a00ada9c8942033089b/charset_normalizer-3.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:31a9a6f775f9bcd865d88ee350f0ffb0e25936a7f930ca98995c05abf1faf21c", size = 107108, upload-time = "2025-08-09T07:56:07.176Z" },
|
|
123
|
+
{ url = "https://files.pythonhosted.org/packages/e9/5e/14c94999e418d9b87682734589404a25854d5f5d0408df68bc15b6ff54bb/charset_normalizer-3.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1", size = 205655, upload-time = "2025-08-09T07:56:08.475Z" },
|
|
124
|
+
{ url = "https://files.pythonhosted.org/packages/7d/a8/c6ec5d389672521f644505a257f50544c074cf5fc292d5390331cd6fc9c3/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884", size = 146223, upload-time = "2025-08-09T07:56:09.708Z" },
|
|
125
|
+
{ url = "https://files.pythonhosted.org/packages/fc/eb/a2ffb08547f4e1e5415fb69eb7db25932c52a52bed371429648db4d84fb1/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018", size = 159366, upload-time = "2025-08-09T07:56:11.326Z" },
|
|
126
|
+
{ url = "https://files.pythonhosted.org/packages/82/10/0fd19f20c624b278dddaf83b8464dcddc2456cb4b02bb902a6da126b87a1/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392", size = 157104, upload-time = "2025-08-09T07:56:13.014Z" },
|
|
127
|
+
{ url = "https://files.pythonhosted.org/packages/16/ab/0233c3231af734f5dfcf0844aa9582d5a1466c985bbed6cedab85af9bfe3/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f", size = 151830, upload-time = "2025-08-09T07:56:14.428Z" },
|
|
128
|
+
{ url = "https://files.pythonhosted.org/packages/ae/02/e29e22b4e02839a0e4a06557b1999d0a47db3567e82989b5bb21f3fbbd9f/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154", size = 148854, upload-time = "2025-08-09T07:56:16.051Z" },
|
|
129
|
+
{ url = "https://files.pythonhosted.org/packages/05/6b/e2539a0a4be302b481e8cafb5af8792da8093b486885a1ae4d15d452bcec/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491", size = 160670, upload-time = "2025-08-09T07:56:17.314Z" },
|
|
130
|
+
{ url = "https://files.pythonhosted.org/packages/31/e7/883ee5676a2ef217a40ce0bffcc3d0dfbf9e64cbcfbdf822c52981c3304b/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93", size = 158501, upload-time = "2025-08-09T07:56:18.641Z" },
|
|
131
|
+
{ url = "https://files.pythonhosted.org/packages/c1/35/6525b21aa0db614cf8b5792d232021dca3df7f90a1944db934efa5d20bb1/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f", size = 153173, upload-time = "2025-08-09T07:56:20.289Z" },
|
|
132
|
+
{ url = "https://files.pythonhosted.org/packages/50/ee/f4704bad8201de513fdc8aac1cabc87e38c5818c93857140e06e772b5892/charset_normalizer-3.4.3-cp312-cp312-win32.whl", hash = "sha256:fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37", size = 99822, upload-time = "2025-08-09T07:56:21.551Z" },
|
|
133
|
+
{ url = "https://files.pythonhosted.org/packages/39/f5/3b3836ca6064d0992c58c7561c6b6eee1b3892e9665d650c803bd5614522/charset_normalizer-3.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc", size = 107543, upload-time = "2025-08-09T07:56:23.115Z" },
|
|
134
|
+
{ url = "https://files.pythonhosted.org/packages/65/ca/2135ac97709b400c7654b4b764daf5c5567c2da45a30cdd20f9eefe2d658/charset_normalizer-3.4.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:14c2a87c65b351109f6abfc424cab3927b3bdece6f706e4d12faaf3d52ee5efe", size = 205326, upload-time = "2025-08-09T07:56:24.721Z" },
|
|
135
|
+
{ url = "https://files.pythonhosted.org/packages/71/11/98a04c3c97dd34e49c7d247083af03645ca3730809a5509443f3c37f7c99/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8", size = 146008, upload-time = "2025-08-09T07:56:26.004Z" },
|
|
136
|
+
{ url = "https://files.pythonhosted.org/packages/60/f5/4659a4cb3c4ec146bec80c32d8bb16033752574c20b1252ee842a95d1a1e/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1bb60174149316da1c35fa5233681f7c0f9f514509b8e399ab70fea5f17e45c9", size = 159196, upload-time = "2025-08-09T07:56:27.25Z" },
|
|
137
|
+
{ url = "https://files.pythonhosted.org/packages/86/9e/f552f7a00611f168b9a5865a1414179b2c6de8235a4fa40189f6f79a1753/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:30d006f98569de3459c2fc1f2acde170b7b2bd265dc1943e87e1a4efe1b67c31", size = 156819, upload-time = "2025-08-09T07:56:28.515Z" },
|
|
138
|
+
{ url = "https://files.pythonhosted.org/packages/7e/95/42aa2156235cbc8fa61208aded06ef46111c4d3f0de233107b3f38631803/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f", size = 151350, upload-time = "2025-08-09T07:56:29.716Z" },
|
|
139
|
+
{ url = "https://files.pythonhosted.org/packages/c2/a9/3865b02c56f300a6f94fc631ef54f0a8a29da74fb45a773dfd3dcd380af7/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6aab0f181c486f973bc7262a97f5aca3ee7e1437011ef0c2ec04b5a11d16c927", size = 148644, upload-time = "2025-08-09T07:56:30.984Z" },
|
|
140
|
+
{ url = "https://files.pythonhosted.org/packages/77/d9/cbcf1a2a5c7d7856f11e7ac2d782aec12bdfea60d104e60e0aa1c97849dc/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabf8315679312cfa71302f9bd509ded4f2f263fb5b765cf1433b39106c3cc9", size = 160468, upload-time = "2025-08-09T07:56:32.252Z" },
|
|
141
|
+
{ url = "https://files.pythonhosted.org/packages/f6/42/6f45efee8697b89fda4d50580f292b8f7f9306cb2971d4b53f8914e4d890/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:bd28b817ea8c70215401f657edef3a8aa83c29d447fb0b622c35403780ba11d5", size = 158187, upload-time = "2025-08-09T07:56:33.481Z" },
|
|
142
|
+
{ url = "https://files.pythonhosted.org/packages/70/99/f1c3bdcfaa9c45b3ce96f70b14f070411366fa19549c1d4832c935d8e2c3/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:18343b2d246dc6761a249ba1fb13f9ee9a2bcd95decc767319506056ea4ad4dc", size = 152699, upload-time = "2025-08-09T07:56:34.739Z" },
|
|
143
|
+
{ url = "https://files.pythonhosted.org/packages/a3/ad/b0081f2f99a4b194bcbb1934ef3b12aa4d9702ced80a37026b7607c72e58/charset_normalizer-3.4.3-cp313-cp313-win32.whl", hash = "sha256:6fb70de56f1859a3f71261cbe41005f56a7842cc348d3aeb26237560bfa5e0ce", size = 99580, upload-time = "2025-08-09T07:56:35.981Z" },
|
|
144
|
+
{ url = "https://files.pythonhosted.org/packages/9a/8f/ae790790c7b64f925e5c953b924aaa42a243fb778fed9e41f147b2a5715a/charset_normalizer-3.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:cf1ebb7d78e1ad8ec2a8c4732c7be2e736f6e5123a4146c5b89c9d1f585f8cef", size = 107366, upload-time = "2025-08-09T07:56:37.339Z" },
|
|
145
|
+
{ url = "https://files.pythonhosted.org/packages/8e/91/b5a06ad970ddc7a0e513112d40113e834638f4ca1120eb727a249fb2715e/charset_normalizer-3.4.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15", size = 204342, upload-time = "2025-08-09T07:56:38.687Z" },
|
|
146
|
+
{ url = "https://files.pythonhosted.org/packages/ce/ec/1edc30a377f0a02689342f214455c3f6c2fbedd896a1d2f856c002fc3062/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db", size = 145995, upload-time = "2025-08-09T07:56:40.048Z" },
|
|
147
|
+
{ url = "https://files.pythonhosted.org/packages/17/e5/5e67ab85e6d22b04641acb5399c8684f4d37caf7558a53859f0283a650e9/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d", size = 158640, upload-time = "2025-08-09T07:56:41.311Z" },
|
|
148
|
+
{ url = "https://files.pythonhosted.org/packages/f1/e5/38421987f6c697ee3722981289d554957c4be652f963d71c5e46a262e135/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096", size = 156636, upload-time = "2025-08-09T07:56:43.195Z" },
|
|
149
|
+
{ url = "https://files.pythonhosted.org/packages/a0/e4/5a075de8daa3ec0745a9a3b54467e0c2967daaaf2cec04c845f73493e9a1/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa", size = 150939, upload-time = "2025-08-09T07:56:44.819Z" },
|
|
150
|
+
{ url = "https://files.pythonhosted.org/packages/02/f7/3611b32318b30974131db62b4043f335861d4d9b49adc6d57c1149cc49d4/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049", size = 148580, upload-time = "2025-08-09T07:56:46.684Z" },
|
|
151
|
+
{ url = "https://files.pythonhosted.org/packages/7e/61/19b36f4bd67f2793ab6a99b979b4e4f3d8fc754cbdffb805335df4337126/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0", size = 159870, upload-time = "2025-08-09T07:56:47.941Z" },
|
|
152
|
+
{ url = "https://files.pythonhosted.org/packages/06/57/84722eefdd338c04cf3030ada66889298eaedf3e7a30a624201e0cbe424a/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92", size = 157797, upload-time = "2025-08-09T07:56:49.756Z" },
|
|
153
|
+
{ url = "https://files.pythonhosted.org/packages/72/2a/aff5dd112b2f14bcc3462c312dce5445806bfc8ab3a7328555da95330e4b/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16", size = 152224, upload-time = "2025-08-09T07:56:51.369Z" },
|
|
154
|
+
{ url = "https://files.pythonhosted.org/packages/b7/8c/9839225320046ed279c6e839d51f028342eb77c91c89b8ef2549f951f3ec/charset_normalizer-3.4.3-cp314-cp314-win32.whl", hash = "sha256:c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce", size = 100086, upload-time = "2025-08-09T07:56:52.722Z" },
|
|
155
|
+
{ url = "https://files.pythonhosted.org/packages/ee/7a/36fbcf646e41f710ce0a563c1c9a343c6edf9be80786edeb15b6f62e17db/charset_normalizer-3.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c", size = 107400, upload-time = "2025-08-09T07:56:55.172Z" },
|
|
156
|
+
{ url = "https://files.pythonhosted.org/packages/8a/1f/f041989e93b001bc4e44bb1669ccdcf54d3f00e628229a85b08d330615c5/charset_normalizer-3.4.3-py3-none-any.whl", hash = "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a", size = 53175, upload-time = "2025-08-09T07:57:26.864Z" },
|
|
152
157
|
]
|
|
153
158
|
|
|
154
159
|
[[package]]
|
|
@@ -358,7 +363,7 @@ wheels = [
|
|
|
358
363
|
|
|
359
364
|
[[package]]
|
|
360
365
|
name = "langchain-core"
|
|
361
|
-
version = "0.3.
|
|
366
|
+
version = "0.3.74"
|
|
362
367
|
source = { registry = "https://pypi.org/simple" }
|
|
363
368
|
dependencies = [
|
|
364
369
|
{ name = "jsonpatch" },
|
|
@@ -369,14 +374,14 @@ dependencies = [
|
|
|
369
374
|
{ name = "tenacity" },
|
|
370
375
|
{ name = "typing-extensions" },
|
|
371
376
|
]
|
|
372
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
377
|
+
sdist = { url = "https://files.pythonhosted.org/packages/f1/c6/5d755a0f1f4857abbe5ea6f5907ed0e2b5df52bf4dde0a0fd768290e3084/langchain_core-0.3.74.tar.gz", hash = "sha256:ff604441aeade942fbcc0a3860a592daba7671345230c2078ba2eb5f82b6ba76", size = 569553, upload-time = "2025-08-07T20:47:05.094Z" }
|
|
373
378
|
wheels = [
|
|
374
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
379
|
+
{ url = "https://files.pythonhosted.org/packages/4d/26/545283681ac0379d31c7ad0bac5f195e1982092d76c65ca048db9e3cec0e/langchain_core-0.3.74-py3-none-any.whl", hash = "sha256:088338b5bc2f6a66892f9afc777992c24ee3188f41cbc603d09181e34a228ce7", size = 443453, upload-time = "2025-08-07T20:47:03.853Z" },
|
|
375
380
|
]
|
|
376
381
|
|
|
377
382
|
[[package]]
|
|
378
383
|
name = "langgraph"
|
|
379
|
-
version = "0.6.
|
|
384
|
+
version = "0.6.4"
|
|
380
385
|
source = { registry = "https://pypi.org/simple" }
|
|
381
386
|
dependencies = [
|
|
382
387
|
{ name = "langchain-core" },
|
|
@@ -386,9 +391,9 @@ dependencies = [
|
|
|
386
391
|
{ name = "pydantic" },
|
|
387
392
|
{ name = "xxhash" },
|
|
388
393
|
]
|
|
389
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
394
|
+
sdist = { url = "https://files.pythonhosted.org/packages/9f/a2/632e882b6f8d83fefce7a838695dc4f91eaf7d2adc6c8ac160003754eda3/langgraph-0.6.4.tar.gz", hash = "sha256:5d591646b4c5bfc86d5fb0baf3407ba55b37f6ee1c22613e9ed084090357fccd", size = 454190, upload-time = "2025-08-07T18:30:59.619Z" }
|
|
390
395
|
wheels = [
|
|
391
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
396
|
+
{ url = "https://files.pythonhosted.org/packages/09/25/7ccac0a5aee88a882683e09c71fbc3a884e41d092a65304dbab40d633dcb/langgraph-0.6.4-py3-none-any.whl", hash = "sha256:001cb076d204b7e7cdf2dce24b18171bbd184840f236852a256107b2aed105bb", size = 153150, upload-time = "2025-08-07T18:30:58.039Z" },
|
|
392
397
|
]
|
|
393
398
|
|
|
394
399
|
[[package]]
|
|
@@ -517,15 +522,15 @@ wheels = [
|
|
|
517
522
|
|
|
518
523
|
[[package]]
|
|
519
524
|
name = "langgraph-prebuilt"
|
|
520
|
-
version = "0.6.
|
|
525
|
+
version = "0.6.4"
|
|
521
526
|
source = { registry = "https://pypi.org/simple" }
|
|
522
527
|
dependencies = [
|
|
523
528
|
{ name = "langchain-core" },
|
|
524
529
|
{ name = "langgraph-checkpoint" },
|
|
525
530
|
]
|
|
526
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
531
|
+
sdist = { url = "https://files.pythonhosted.org/packages/d6/21/9b198d11732101ee8cdf30af98d0b4f11254c768de15173e57f5260fd14b/langgraph_prebuilt-0.6.4.tar.gz", hash = "sha256:e9e53b906ee5df46541d1dc5303239e815d3ec551e52bb03dd6463acc79ec28f", size = 125695, upload-time = "2025-08-07T18:17:57.333Z" }
|
|
527
532
|
wheels = [
|
|
528
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
533
|
+
{ url = "https://files.pythonhosted.org/packages/0a/7f/973b0d9729d9693d6e5b4bc5f3ae41138d194cb7b16b0ed230020beeb13a/langgraph_prebuilt-0.6.4-py3-none-any.whl", hash = "sha256:819f31d88b84cb2729ff1b79db2d51e9506b8fb7aaacfc0d359d4fe16e717344", size = 28025, upload-time = "2025-08-07T18:17:56.493Z" },
|
|
529
534
|
]
|
|
530
535
|
|
|
531
536
|
[[package]]
|
|
@@ -1028,27 +1033,27 @@ wheels = [
|
|
|
1028
1033
|
|
|
1029
1034
|
[[package]]
|
|
1030
1035
|
name = "ruff"
|
|
1031
|
-
version = "0.12.
|
|
1032
|
-
source = { registry = "https://pypi.org/simple" }
|
|
1033
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1034
|
-
wheels = [
|
|
1035
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1036
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1037
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1038
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1039
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1040
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1041
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1042
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1043
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1044
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1045
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1046
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1047
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1048
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1049
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1050
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1051
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1036
|
+
version = "0.12.8"
|
|
1037
|
+
source = { registry = "https://pypi.org/simple" }
|
|
1038
|
+
sdist = { url = "https://files.pythonhosted.org/packages/4b/da/5bd7565be729e86e1442dad2c9a364ceeff82227c2dece7c29697a9795eb/ruff-0.12.8.tar.gz", hash = "sha256:4cb3a45525176e1009b2b64126acf5f9444ea59066262791febf55e40493a033", size = 5242373, upload-time = "2025-08-07T19:05:47.268Z" }
|
|
1039
|
+
wheels = [
|
|
1040
|
+
{ url = "https://files.pythonhosted.org/packages/c9/1e/c843bfa8ad1114fab3eb2b78235dda76acd66384c663a4e0415ecc13aa1e/ruff-0.12.8-py3-none-linux_armv6l.whl", hash = "sha256:63cb5a5e933fc913e5823a0dfdc3c99add73f52d139d6cd5cc8639d0e0465513", size = 11675315, upload-time = "2025-08-07T19:05:06.15Z" },
|
|
1041
|
+
{ url = "https://files.pythonhosted.org/packages/24/ee/af6e5c2a8ca3a81676d5480a1025494fd104b8896266502bb4de2a0e8388/ruff-0.12.8-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:9a9bbe28f9f551accf84a24c366c1aa8774d6748438b47174f8e8565ab9dedbc", size = 12456653, upload-time = "2025-08-07T19:05:09.759Z" },
|
|
1042
|
+
{ url = "https://files.pythonhosted.org/packages/99/9d/e91f84dfe3866fa648c10512904991ecc326fd0b66578b324ee6ecb8f725/ruff-0.12.8-py3-none-macosx_11_0_arm64.whl", hash = "sha256:2fae54e752a3150f7ee0e09bce2e133caf10ce9d971510a9b925392dc98d2fec", size = 11659690, upload-time = "2025-08-07T19:05:12.551Z" },
|
|
1043
|
+
{ url = "https://files.pythonhosted.org/packages/fe/ac/a363d25ec53040408ebdd4efcee929d48547665858ede0505d1d8041b2e5/ruff-0.12.8-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c0acbcf01206df963d9331b5838fb31f3b44fa979ee7fa368b9b9057d89f4a53", size = 11896923, upload-time = "2025-08-07T19:05:14.821Z" },
|
|
1044
|
+
{ url = "https://files.pythonhosted.org/packages/58/9f/ea356cd87c395f6ade9bb81365bd909ff60860975ca1bc39f0e59de3da37/ruff-0.12.8-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ae3e7504666ad4c62f9ac8eedb52a93f9ebdeb34742b8b71cd3cccd24912719f", size = 11477612, upload-time = "2025-08-07T19:05:16.712Z" },
|
|
1045
|
+
{ url = "https://files.pythonhosted.org/packages/1a/46/92e8fa3c9dcfd49175225c09053916cb97bb7204f9f899c2f2baca69e450/ruff-0.12.8-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb82efb5d35d07497813a1c5647867390a7d83304562607f3579602fa3d7d46f", size = 13182745, upload-time = "2025-08-07T19:05:18.709Z" },
|
|
1046
|
+
{ url = "https://files.pythonhosted.org/packages/5e/c4/f2176a310f26e6160deaf661ef60db6c3bb62b7a35e57ae28f27a09a7d63/ruff-0.12.8-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:dbea798fc0065ad0b84a2947b0aff4233f0cb30f226f00a2c5850ca4393de609", size = 14206885, upload-time = "2025-08-07T19:05:21.025Z" },
|
|
1047
|
+
{ url = "https://files.pythonhosted.org/packages/87/9d/98e162f3eeeb6689acbedbae5050b4b3220754554526c50c292b611d3a63/ruff-0.12.8-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:49ebcaccc2bdad86fd51b7864e3d808aad404aab8df33d469b6e65584656263a", size = 13639381, upload-time = "2025-08-07T19:05:23.423Z" },
|
|
1048
|
+
{ url = "https://files.pythonhosted.org/packages/81/4e/1b7478b072fcde5161b48f64774d6edd59d6d198e4ba8918d9f4702b8043/ruff-0.12.8-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ac9c570634b98c71c88cb17badd90f13fc076a472ba6ef1d113d8ed3df109fb", size = 12613271, upload-time = "2025-08-07T19:05:25.507Z" },
|
|
1049
|
+
{ url = "https://files.pythonhosted.org/packages/e8/67/0c3c9179a3ad19791ef1b8f7138aa27d4578c78700551c60d9260b2c660d/ruff-0.12.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:560e0cd641e45591a3e42cb50ef61ce07162b9c233786663fdce2d8557d99818", size = 12847783, upload-time = "2025-08-07T19:05:28.14Z" },
|
|
1050
|
+
{ url = "https://files.pythonhosted.org/packages/4e/2a/0b6ac3dd045acf8aa229b12c9c17bb35508191b71a14904baf99573a21bd/ruff-0.12.8-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:71c83121512e7743fba5a8848c261dcc454cafb3ef2934a43f1b7a4eb5a447ea", size = 11702672, upload-time = "2025-08-07T19:05:30.413Z" },
|
|
1051
|
+
{ url = "https://files.pythonhosted.org/packages/9d/ee/f9fdc9f341b0430110de8b39a6ee5fa68c5706dc7c0aa940817947d6937e/ruff-0.12.8-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:de4429ef2ba091ecddedd300f4c3f24bca875d3d8b23340728c3cb0da81072c3", size = 11440626, upload-time = "2025-08-07T19:05:32.492Z" },
|
|
1052
|
+
{ url = "https://files.pythonhosted.org/packages/89/fb/b3aa2d482d05f44e4d197d1de5e3863feb13067b22c571b9561085c999dc/ruff-0.12.8-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a2cab5f60d5b65b50fba39a8950c8746df1627d54ba1197f970763917184b161", size = 12462162, upload-time = "2025-08-07T19:05:34.449Z" },
|
|
1053
|
+
{ url = "https://files.pythonhosted.org/packages/18/9f/5c5d93e1d00d854d5013c96e1a92c33b703a0332707a7cdbd0a4880a84fb/ruff-0.12.8-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:45c32487e14f60b88aad6be9fd5da5093dbefb0e3e1224131cb1d441d7cb7d46", size = 12913212, upload-time = "2025-08-07T19:05:36.541Z" },
|
|
1054
|
+
{ url = "https://files.pythonhosted.org/packages/71/13/ab9120add1c0e4604c71bfc2e4ef7d63bebece0cfe617013da289539cef8/ruff-0.12.8-py3-none-win32.whl", hash = "sha256:daf3475060a617fd5bc80638aeaf2f5937f10af3ec44464e280a9d2218e720d3", size = 11694382, upload-time = "2025-08-07T19:05:38.468Z" },
|
|
1055
|
+
{ url = "https://files.pythonhosted.org/packages/f6/dc/a2873b7c5001c62f46266685863bee2888caf469d1edac84bf3242074be2/ruff-0.12.8-py3-none-win_amd64.whl", hash = "sha256:7209531f1a1fcfbe8e46bcd7ab30e2f43604d8ba1c49029bb420b103d0b5f76e", size = 12740482, upload-time = "2025-08-07T19:05:40.391Z" },
|
|
1056
|
+
{ url = "https://files.pythonhosted.org/packages/cb/5c/799a1efb8b5abab56e8a9f2a0b72d12bd64bb55815e9476c7d0a2887d2f7/ruff-0.12.8-py3-none-win_arm64.whl", hash = "sha256:c90e1a334683ce41b0e7a04f41790c429bf5073b62c1ae701c9dc5b3d14f0749", size = 11884718, upload-time = "2025-08-07T19:05:42.866Z" },
|
|
1052
1057
|
]
|
|
1053
1058
|
|
|
1054
1059
|
[[package]]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.2.128"
|
|
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
|
{langgraph_api-0.2.128 → langgraph_api-0.2.130}/langgraph_api/js/src/utils/pythonSchemas.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
|