langgraph-api 0.5.3__tar.gz → 0.5.9__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.5.3 → langgraph_api-0.5.9}/Makefile +3 -2
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/PKG-INFO +3 -3
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/benchmark-runners/assistant.js +2 -2
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/benchmark-runners/benchmark-runner.js +1 -1
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/burst.js +1 -1
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/clean.js +1 -1
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/ramp.js +2 -2
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/update-revision.js +5 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/constraints.txt +1 -1
- langgraph_api-0.5.9/langgraph_api/__init__.py +1 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/api/a2a.py +3 -2
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/api/assistants.py +1 -1
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/api/meta.py +6 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/api/threads.py +1 -1
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/asgi_transport.py +1 -1
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/auth/custom.py +29 -24
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/config.py +3 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/feature_flags.py +6 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/graph.py +1 -1
- {langgraph_api-0.5.3/langgraph_api/grpc_ops → langgraph_api-0.5.9/langgraph_api/grpc}/config_conversion.py +12 -9
- langgraph_api-0.5.9/langgraph_api/grpc/generated/core_api_pb2.py +273 -0
- {langgraph_api-0.5.3/langgraph_api/grpc_ops → langgraph_api-0.5.9/langgraph_api/grpc}/generated/core_api_pb2.pyi +21 -45
- langgraph_api-0.5.9/langgraph_api/grpc/generated/engine_common_pb2.py +185 -0
- {langgraph_api-0.5.3/langgraph_api/grpc_ops → langgraph_api-0.5.9/langgraph_api/grpc}/generated/engine_common_pb2.pyi +26 -54
- langgraph_api-0.5.9/langgraph_api/grpc/generated/enum_durability_pb2.py +37 -0
- langgraph_api-0.5.9/langgraph_api/grpc/generated/enum_durability_pb2.pyi +16 -0
- langgraph_api-0.5.9/langgraph_api/grpc/generated/enum_durability_pb2_grpc.py +24 -0
- langgraph_api-0.5.9/langgraph_api/grpc/generated/enum_multitask_strategy_pb2.py +37 -0
- langgraph_api-0.5.9/langgraph_api/grpc/generated/enum_multitask_strategy_pb2.pyi +16 -0
- langgraph_api-0.5.9/langgraph_api/grpc/generated/enum_multitask_strategy_pb2_grpc.py +24 -0
- langgraph_api-0.5.9/langgraph_api/grpc/generated/enum_run_status_pb2.py +37 -0
- langgraph_api-0.5.9/langgraph_api/grpc/generated/enum_run_status_pb2.pyi +22 -0
- langgraph_api-0.5.9/langgraph_api/grpc/generated/enum_run_status_pb2_grpc.py +24 -0
- langgraph_api-0.5.9/langgraph_api/grpc/ops/__init__.py +180 -0
- langgraph_api-0.5.9/langgraph_api/grpc/ops/assistants.py +419 -0
- langgraph_api-0.5.9/langgraph_api/grpc/ops/threads.py +505 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/ui.py +1 -1
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/queue_entrypoint.py +2 -2
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/schema.py +2 -2
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/self_hosted_metrics.py +48 -2
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/serde.py +3 -3
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/worker.py +1 -1
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/pyproject.toml +2 -2
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/uv.lock +65 -65
- langgraph_api-0.5.3/langgraph_api/__init__.py +0 -1
- langgraph_api-0.5.3/langgraph_api/grpc_ops/generated/core_api_pb2.py +0 -275
- langgraph_api-0.5.3/langgraph_api/grpc_ops/generated/engine_common_pb2.py +0 -191
- langgraph_api-0.5.3/langgraph_api/grpc_ops/ops.py +0 -1045
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/.gitignore +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/LICENSE +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/README.md +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/.gitignore +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/Makefile +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/README.md +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/benchmark-runners/benchmarks.js +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/benchmark-runners/stream_write.js +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/benchmark-runners/wait_write.js +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/capacity_k6.js +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/capacity_runner.mjs +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/capacity_urls.mjs +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/graphs.js +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/package.json +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/reporting/dd_reporting.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/weather.js +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/forbidden.txt +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/healthcheck.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/api/__init__.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/api/mcp.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/api/openapi.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/api/runs.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/api/store.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/api/ui.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/asyncio.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/auth/__init__.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/auth/langsmith/__init__.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/auth/langsmith/backend.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/auth/langsmith/client.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/auth/middleware.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/auth/noop.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/auth/studio_user.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/cli.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/command.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/cron_scheduler.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/errors.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/executor_entrypoint.py +0 -0
- {langgraph_api-0.5.3/langgraph_api/grpc_ops → langgraph_api-0.5.9/langgraph_api/grpc}/__init__.py +0 -0
- {langgraph_api-0.5.3/langgraph_api/grpc_ops → langgraph_api-0.5.9/langgraph_api/grpc}/client.py +0 -0
- {langgraph_api-0.5.3/langgraph_api/grpc_ops → langgraph_api-0.5.9/langgraph_api/grpc}/generated/__init__.py +0 -0
- {langgraph_api-0.5.3/langgraph_api/grpc_ops → langgraph_api-0.5.9/langgraph_api/grpc}/generated/core_api_pb2_grpc.py +0 -0
- {langgraph_api-0.5.3/langgraph_api/grpc_ops → langgraph_api-0.5.9/langgraph_api/grpc}/generated/engine_common_pb2_grpc.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/http.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/http_metrics.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/http_metrics_utils.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/.gitignore +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/.prettierrc +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/__init__.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/base.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/build.mts +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/client.http.mts +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/client.mts +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/errors.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/global.d.ts +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/package.json +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/remote.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/schema.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/src/graph.mts +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/src/load.hooks.mjs +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/src/preload.mjs +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/src/utils/files.mts +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/src/utils/importMap.mts +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/src/utils/serde.mts +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/sse.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/traceblock.mts +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/tsconfig.json +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/yarn.lock +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/logging.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/metadata.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/middleware/__init__.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/middleware/http_logger.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/middleware/private_network.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/middleware/request_id.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/models/__init__.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/models/run.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/patch.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/route.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/self_hosted_logs.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/server.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/sse.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/state.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/store.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/stream.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/thread_ttl.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/traceblock.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/tunneling/cloudflare.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/utils/__init__.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/utils/cache.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/utils/config.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/utils/errors.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/utils/future.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/utils/headers.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/utils/retriable_client.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/utils/stream_codec.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/utils/uuids.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/validation.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/webhook.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_license/__init__.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_license/validation.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_runtime/__init__.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_runtime/checkpoint.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_runtime/database.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_runtime/lifespan.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_runtime/metrics.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_runtime/ops.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_runtime/queue.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_runtime/retry.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_runtime/store.py +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/logging.json +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/openapi.json +0 -0
- {langgraph_api-0.5.3 → langgraph_api-0.5.9}/scripts/create_license.py +0 -0
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
# Environment variables
|
|
4
4
|
FF_USE_CORE_API ?= false
|
|
5
|
-
LANGSERVE_GRAPHS_ALL = '{"agent": "./tests/graphs/agent.py:graph", "custom_lifespan": "./tests/graphs/my_router.py:graph", "single_node": "./tests/graphs/single_node.py:graph", "benchmark": "./tests/graphs/benchmark.py:graph", "config_graph": "./tests/graphs/config_graph.py:graph", "other": "./tests/graphs/other.py:make_graph", "weather": "./tests/graphs/weather.py:mk_weather_graph", "searchy": "./tests/graphs/searchy.py:graph", "agent_simple": "./tests/graphs/agent_simple.py:graph", "simple_runtime": "./tests/graphs/simple_runtime.py:graph", "agent_interrupt": "./tests/graphs/agent_interrupt.py:graph", "message_type_test": "./tests/graphs/message_type_test.py:graph", "remote_subgraph_parent": "./tests/graphs/remote_subgraph_parent.py:graph", "simple_remote": "./tests/graphs/simple_remote.py:graph"}'
|
|
6
|
-
LANGSERVE_GRAPHS_AUTH = '{"agent": "./tests/graphs/agent.py:graph", "config_graph": "./tests/graphs/config_graph.py:graph", "other": "./tests/graphs/other.py:make_graph", "weather": "./tests/graphs/weather.py:mk_weather_graph", "searchy": "./tests/graphs/searchy.py:graph", "agent_simple": "./tests/graphs/agent_simple.py:graph", "simple_runtime": "./tests/graphs/simple_runtime.py:graph"}'
|
|
5
|
+
LANGSERVE_GRAPHS_ALL = '{"agent": {"path": "./tests/graphs/agent.py:graph", "description": "agent"}, "custom_lifespan": "./tests/graphs/my_router.py:graph", "single_node": "./tests/graphs/single_node.py:graph", "benchmark": "./tests/graphs/benchmark.py:graph", "config_graph": "./tests/graphs/config_graph.py:graph", "other": "./tests/graphs/other.py:make_graph", "weather": "./tests/graphs/weather.py:mk_weather_graph", "searchy": "./tests/graphs/searchy.py:graph", "agent_simple": "./tests/graphs/agent_simple.py:graph", "simple_runtime": "./tests/graphs/simple_runtime.py:graph", "agent_interrupt": "./tests/graphs/agent_interrupt.py:graph", "message_type_test": "./tests/graphs/message_type_test.py:graph", "remote_subgraph_parent": "./tests/graphs/remote_subgraph_parent.py:graph", "simple_remote": "./tests/graphs/simple_remote.py:graph", "nested_subgraphs": "./tests/graphs/nested_subgraphs.py:graph", "functional_fibonacci": "./tests/graphs/functional_fibonacci.py:fibonacci", "state_graph_fibonacci": "./tests/graphs/state_graph_fibonacci.py:fibonacci"}'
|
|
6
|
+
LANGSERVE_GRAPHS_AUTH = '{"agent": {"path": "./tests/graphs/agent.py:graph", "description": "agent"}, "config_graph": "./tests/graphs/config_graph.py:graph", "other": "./tests/graphs/other.py:make_graph", "weather": "./tests/graphs/weather.py:mk_weather_graph", "searchy": "./tests/graphs/searchy.py:graph", "agent_simple": "./tests/graphs/agent_simple.py:graph", "simple_runtime": "./tests/graphs/simple_runtime.py:graph", "functional_fibonacci": "./tests/graphs/functional_fibonacci.py:fibonacci", "state_graph_fibonacci": "./tests/graphs/state_graph_fibonacci.py:fibonacci"}'
|
|
7
7
|
|
|
8
8
|
# Go server management
|
|
9
9
|
build-go-server:
|
|
@@ -217,6 +217,7 @@ start-js-server:
|
|
|
217
217
|
cd ../public-api-server-js && FF_USE_CORE_API=true \
|
|
218
218
|
LANGSERVE_GRAPHS=$(LANGSERVE_GRAPHS_ALL) \
|
|
219
219
|
LANGGRAPH_CONFIG='{"agent": {"configurable": {"model_name": "openai"}}}' \
|
|
220
|
+
FF_USE_JS_API=true \
|
|
220
221
|
PORT=9123 yarn start
|
|
221
222
|
|
|
222
223
|
VERSION_KIND ?= patch
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: langgraph-api
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.9
|
|
4
4
|
Author-email: Will Fu-Hinthorn <will@langchain.dev>, Josh Rogers <josh@langchain.dev>, Parker Rule <parker@langchain.dev>
|
|
5
5
|
License: Elastic-2.0
|
|
6
6
|
License-File: LICENSE
|
|
@@ -12,8 +12,8 @@ Requires-Dist: grpcio<2.0.0,>=1.75.0
|
|
|
12
12
|
Requires-Dist: httpx>=0.25.0
|
|
13
13
|
Requires-Dist: jsonschema-rs<0.30,>=0.20.0
|
|
14
14
|
Requires-Dist: langchain-core>=0.3.64
|
|
15
|
-
Requires-Dist: langgraph-checkpoint<4,>=3
|
|
16
|
-
Requires-Dist: langgraph-runtime-inmem<0.
|
|
15
|
+
Requires-Dist: langgraph-checkpoint<4,>=3.0.1
|
|
16
|
+
Requires-Dist: langgraph-runtime-inmem<0.18.0,>=0.17.0
|
|
17
17
|
Requires-Dist: langgraph-sdk>=0.2.0
|
|
18
18
|
Requires-Dist: langgraph<2,>=0.4.10
|
|
19
19
|
Requires-Dist: langsmith>=0.3.45
|
|
@@ -59,7 +59,7 @@ export class Assistant extends BenchmarkRunner {
|
|
|
59
59
|
'Patch response contains the correct assistant': (r) => r.patchResponse.json().assistant_id === result.assistantId,
|
|
60
60
|
'Get response 2 contains the correct assistant': (r) => r.getResponse2.json().assistant_id === result.assistantId,
|
|
61
61
|
'Get response 2 contains the new description': (r) => r.getResponse2.json().metadata.description != result.getResponse.json().metadata.description && result.getResponse2.json().metadata.description === result.patchResponse.json().metadata.description,
|
|
62
|
-
'Get response 2 contains the correct created_by': (r) => r.getResponse2.json().metadata.created_by === '
|
|
62
|
+
'Get response 2 contains the correct created_by': (r) => r.getResponse2.json().metadata.created_by === 'benchmark',
|
|
63
63
|
'Count response contains the correct number of assistants': (r) => parseInt(r.countResponse.json()) === 1,
|
|
64
64
|
'Delete response is successful': (r) => r.deleteResponse.status === 204,
|
|
65
65
|
});
|
|
@@ -68,7 +68,7 @@ export class Assistant extends BenchmarkRunner {
|
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
if (!success) {
|
|
71
|
-
if (result.searchResponse.status
|
|
71
|
+
if (result.searchResponse.status == 502 || result.getResponse.status == 502 || result.patchResponse.status == 502 || result.getResponse2.status == 502 || result.countResponse.status == 502 || result.deleteResponse.status == 502) {
|
|
72
72
|
errorMetrics.server_errors.add(1);
|
|
73
73
|
console.log(`Server error: ${result.searchResponse.status}, ${result.getResponse.status}, ${result.patchResponse.status}, ${result.getResponse2.status}, ${result.countResponse.status}, ${result.deleteResponse.status}`);
|
|
74
74
|
} else if (result.searchResponse.status === 408 || result.getResponse.status === 408 || result.patchResponse.status === 408 || result.getResponse2.status === 408 || result.countResponse.status === 408 || result.deleteResponse.status === 408) {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
export class BenchmarkRunner {
|
|
5
5
|
/**
|
|
6
6
|
* Run the benchmark type.
|
|
7
|
-
* @param {string} baseUrl - The base URL of the
|
|
7
|
+
* @param {string} baseUrl - The base URL of the Agent Server.
|
|
8
8
|
* @param {any} requestParams - The parameters to use for the request. Includes headers and other config like timeout.
|
|
9
9
|
* @param {any} benchmarkGraphOptions - The options for the benchmark graph.
|
|
10
10
|
* @returns {any} - The result of the benchmark type. This format will vary by benchmark type.
|
|
@@ -13,7 +13,7 @@ const serverErrors = new Counter('server_errors');
|
|
|
13
13
|
const otherErrors = new Counter('other_errors');
|
|
14
14
|
const burstSuccessRate = new Rate('burst_success_rate');
|
|
15
15
|
|
|
16
|
-
// URL of your
|
|
16
|
+
// URL of your Agent Server
|
|
17
17
|
const BASE_URL = __ENV.BASE_URL || 'http://localhost:9123';
|
|
18
18
|
// LangSmith API key only needed with a custom server endpoint
|
|
19
19
|
const LANGSMITH_API_KEY = __ENV.LANGSMITH_API_KEY;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* The default benchmark server has a thread TTL of one hour that should clean things up too so this doesn't run too long.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
// URL of your
|
|
6
|
+
// URL of your Agent Server
|
|
7
7
|
const BASE_URL = process.env.BASE_URL || 'http://localhost:9123';
|
|
8
8
|
// LangSmith API key only needed with a custom server endpoint
|
|
9
9
|
const LANGSMITH_API_KEY = process.env.LANGSMITH_API_KEY;
|
|
@@ -16,12 +16,12 @@ const otherErrors = new Counter('other_errors');
|
|
|
16
16
|
const errorMetrics = {
|
|
17
17
|
timeout_errors: timeoutErrors,
|
|
18
18
|
connection_errors: connectionErrors,
|
|
19
|
-
server_errors: serverErrors,
|
|
20
19
|
missing_message_errors: missingMessageErrors,
|
|
21
20
|
other_errors: otherErrors,
|
|
21
|
+
server_errors: serverErrors,
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
// URL of your
|
|
24
|
+
// URL of your Agent Server
|
|
25
25
|
const BASE_URL = __ENV.BASE_URL || 'http://localhost:9123';
|
|
26
26
|
// LangSmith API key only needed with a custom server endpoint
|
|
27
27
|
const LANGSMITH_API_KEY = __ENV.LANGSMITH_API_KEY;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# https://github.com/langchain-ai/langgraph/blob/main/docs/docs/cloud/deployment/setup_pyproject.md
|
|
4
4
|
langgraph>=0.4.10,<2
|
|
5
5
|
langgraph-sdk>=0.2.0
|
|
6
|
-
langgraph-checkpoint>=3,<4
|
|
6
|
+
langgraph-checkpoint>=3.0.1,<4
|
|
7
7
|
langchain-core>=0.3.64
|
|
8
8
|
langsmith>=0.3.45
|
|
9
9
|
orjson>=3.9.7,<3.10.17
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.5.9"
|
|
@@ -1035,7 +1035,6 @@ async def handle_tasks_get(
|
|
|
1035
1035
|
assistant_id = run_info.get("assistant_id")
|
|
1036
1036
|
if assistant_id:
|
|
1037
1037
|
try:
|
|
1038
|
-
# Verify that the assistant exists
|
|
1039
1038
|
await _get_assistant(assistant_id, request.headers)
|
|
1040
1039
|
except ValueError as e:
|
|
1041
1040
|
return {
|
|
@@ -1053,7 +1052,9 @@ async def handle_tasks_get(
|
|
|
1053
1052
|
a2a_state = "working"
|
|
1054
1053
|
elif lg_status == "success":
|
|
1055
1054
|
a2a_state = "completed"
|
|
1056
|
-
elif lg_status
|
|
1055
|
+
elif lg_status == "interrupted":
|
|
1056
|
+
a2a_state = "input-required"
|
|
1057
|
+
elif lg_status in ["error", "timeout"]:
|
|
1057
1058
|
a2a_state = "failed"
|
|
1058
1059
|
else:
|
|
1059
1060
|
a2a_state = "submitted"
|
|
@@ -16,7 +16,7 @@ from starlette.routing import BaseRoute
|
|
|
16
16
|
from langgraph_api import store as api_store
|
|
17
17
|
from langgraph_api.feature_flags import FF_USE_CORE_API, USE_RUNTIME_CONTEXT_API
|
|
18
18
|
from langgraph_api.graph import get_assistant_id, get_graph
|
|
19
|
-
from langgraph_api.
|
|
19
|
+
from langgraph_api.grpc.ops import Assistants as GrpcAssistants
|
|
20
20
|
from langgraph_api.js.base import BaseRemotePregel
|
|
21
21
|
from langgraph_api.route import ApiRequest, ApiResponse, ApiRoute
|
|
22
22
|
from langgraph_api.schema import ASSISTANT_FIELDS
|
|
@@ -86,6 +86,12 @@ async def meta_metrics(request: ApiRequest):
|
|
|
86
86
|
"# HELP lg_api_num_running_runs The number of runs currently running.",
|
|
87
87
|
"# TYPE lg_api_num_running_runs gauge",
|
|
88
88
|
f'lg_api_num_running_runs{{project_id="{metadata.PROJECT_ID}", revision_id="{metadata.HOST_REVISION_ID}"}} {queue_stats["n_running"]}',
|
|
89
|
+
"# HELP lg_api_pending_runs_wait_time_max The maximum time a run has been pending, in seconds.",
|
|
90
|
+
"# TYPE lg_api_pending_runs_wait_time_max gauge",
|
|
91
|
+
f'lg_api_pending_runs_wait_time_max{{project_id="{metadata.PROJECT_ID}", revision_id="{metadata.HOST_REVISION_ID}"}} {queue_stats.get("pending_runs_wait_time_max_secs") or 0}',
|
|
92
|
+
"# HELP lg_api_pending_runs_wait_time_med The median pending wait time across runs, in seconds.",
|
|
93
|
+
"# TYPE lg_api_pending_runs_wait_time_med gauge",
|
|
94
|
+
f'lg_api_pending_runs_wait_time_med{{project_id="{metadata.PROJECT_ID}", revision_id="{metadata.HOST_REVISION_ID}"}} {queue_stats.get("pending_runs_wait_time_med_secs") or 0}',
|
|
89
95
|
]
|
|
90
96
|
)
|
|
91
97
|
except Exception as e:
|
|
@@ -6,7 +6,7 @@ from starlette.responses import Response
|
|
|
6
6
|
from starlette.routing import BaseRoute
|
|
7
7
|
|
|
8
8
|
from langgraph_api.feature_flags import FF_USE_CORE_API
|
|
9
|
-
from langgraph_api.
|
|
9
|
+
from langgraph_api.grpc.ops import Threads as GrpcThreads
|
|
10
10
|
from langgraph_api.route import ApiRequest, ApiResponse, ApiRoute
|
|
11
11
|
from langgraph_api.schema import THREAD_FIELDS, ThreadStreamMode
|
|
12
12
|
from langgraph_api.sse import EventSourceResponse
|
|
@@ -355,34 +355,39 @@ def _solve_fastapi_dependencies(
|
|
|
355
355
|
}
|
|
356
356
|
|
|
357
357
|
async def decorator(scope: dict, request: Request):
|
|
358
|
-
async with AsyncExitStack() as
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
358
|
+
async with AsyncExitStack() as request_stack:
|
|
359
|
+
scope["fastapi_inner_astack"] = request_stack
|
|
360
|
+
async with AsyncExitStack() as stack:
|
|
361
|
+
scope["fastapi_function_astack"] = stack
|
|
362
|
+
all_solved = await asyncio.gather(
|
|
363
|
+
*(
|
|
364
|
+
solve_dependencies(
|
|
365
|
+
request=request,
|
|
366
|
+
dependant=dependent,
|
|
367
|
+
async_exit_stack=stack,
|
|
368
|
+
embed_body_fields=False,
|
|
369
|
+
)
|
|
370
|
+
for dependent in dependents.values()
|
|
366
371
|
)
|
|
367
|
-
for dependent in dependents.values()
|
|
368
372
|
)
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
373
|
+
all_injected = await asyncio.gather(
|
|
374
|
+
*(
|
|
375
|
+
_run_async(dependent.call, solved.values, is_async)
|
|
376
|
+
for dependent, solved in zip(
|
|
377
|
+
dependents.values(), all_solved, strict=False
|
|
378
|
+
)
|
|
375
379
|
)
|
|
376
380
|
)
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
381
|
+
kwargs = {
|
|
382
|
+
name: value
|
|
383
|
+
for name, value in zip(
|
|
384
|
+
dependents.keys(), all_injected, strict=False
|
|
385
|
+
)
|
|
386
|
+
}
|
|
387
|
+
other_params = _extract_arguments_from_scope(
|
|
388
|
+
scope, _param_names, request=request
|
|
389
|
+
)
|
|
390
|
+
return await fn(**(kwargs | other_params))
|
|
386
391
|
|
|
387
392
|
return decorator
|
|
388
393
|
|
|
@@ -281,6 +281,9 @@ REDIS_URI = env("REDIS_URI", cast=str)
|
|
|
281
281
|
REDIS_CLUSTER = env("REDIS_CLUSTER", cast=bool, default=False)
|
|
282
282
|
REDIS_MAX_CONNECTIONS = env("REDIS_MAX_CONNECTIONS", cast=int, default=2000)
|
|
283
283
|
REDIS_CONNECT_TIMEOUT = env("REDIS_CONNECT_TIMEOUT", cast=float, default=10.0)
|
|
284
|
+
REDIS_HEALTH_CHECK_INTERVAL = env(
|
|
285
|
+
"REDIS_HEALTH_CHECK_INTERVAL", cast=float, default=10.0
|
|
286
|
+
)
|
|
284
287
|
REDIS_KEY_PREFIX = env("REDIS_KEY_PREFIX", cast=str, default="")
|
|
285
288
|
RUN_STATS_CACHE_SECONDS = env("RUN_STATS_CACHE_SECONDS", cast=int, default=60)
|
|
286
289
|
|
|
@@ -51,7 +51,7 @@ async def register_graph(
|
|
|
51
51
|
description: str | None = None,
|
|
52
52
|
) -> None:
|
|
53
53
|
"""Register a graph."""
|
|
54
|
-
from langgraph_api.
|
|
54
|
+
from langgraph_api.grpc.ops import Assistants as AssistantsGrpc
|
|
55
55
|
from langgraph_runtime.database import connect
|
|
56
56
|
from langgraph_runtime.ops import Assistants as AssistantsRuntime
|
|
57
57
|
|
|
@@ -8,7 +8,10 @@ from typing import Any, cast
|
|
|
8
8
|
import orjson
|
|
9
9
|
from langchain_core.runnables.config import RunnableConfig
|
|
10
10
|
|
|
11
|
-
from langgraph_api.
|
|
11
|
+
from langgraph_api.grpc.generated import (
|
|
12
|
+
engine_common_pb2,
|
|
13
|
+
enum_durability_pb2,
|
|
14
|
+
)
|
|
12
15
|
|
|
13
16
|
CONFIG_KEY_SEND = "__pregel_send"
|
|
14
17
|
CONFIG_KEY_READ = "__pregel_read"
|
|
@@ -25,27 +28,27 @@ CONFIG_KEY_GRAPH_ID = "graph_id"
|
|
|
25
28
|
|
|
26
29
|
def _durability_to_proto(
|
|
27
30
|
durability: str,
|
|
28
|
-
) ->
|
|
31
|
+
) -> enum_durability_pb2.Durability:
|
|
29
32
|
match durability:
|
|
30
33
|
case "async":
|
|
31
|
-
return
|
|
34
|
+
return enum_durability_pb2.Durability.ASYNC
|
|
32
35
|
case "sync":
|
|
33
|
-
return
|
|
36
|
+
return enum_durability_pb2.Durability.SYNC
|
|
34
37
|
case "exit":
|
|
35
|
-
return
|
|
38
|
+
return enum_durability_pb2.Durability.EXIT
|
|
36
39
|
case _:
|
|
37
40
|
raise ValueError(f"invalid durability: {durability}")
|
|
38
41
|
|
|
39
42
|
|
|
40
43
|
def _durability_from_proto(
|
|
41
|
-
durability:
|
|
44
|
+
durability: enum_durability_pb2.Durability,
|
|
42
45
|
) -> str:
|
|
43
46
|
match durability:
|
|
44
|
-
case
|
|
47
|
+
case enum_durability_pb2.Durability.ASYNC:
|
|
45
48
|
return "async"
|
|
46
|
-
case
|
|
49
|
+
case enum_durability_pb2.Durability.SYNC:
|
|
47
50
|
return "sync"
|
|
48
|
-
case
|
|
51
|
+
case enum_durability_pb2.Durability.EXIT:
|
|
49
52
|
return "exit"
|
|
50
53
|
case _:
|
|
51
54
|
raise ValueError(f"invalid durability: {durability}")
|