langgraph-api 0.8.5__tar.gz → 0.8.6__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.
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/Makefile +1 -1
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/PKG-INFO +6 -4
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/continuous/pyproject.toml +2 -2
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/continuous/uv.lock +8 -8
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/constraints.txt +3 -3
- langgraph_api-0.8.6/langgraph_api/__init__.py +1 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/__init__.py +4 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/a2a.py +31 -1
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/meta.py +31 -19
- langgraph_api-0.8.6/langgraph_api/api/protocol.py +376 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/auth/custom.py +19 -1
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/auth/middleware.py +1 -1
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/cli.py +6 -11
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/config/__init__.py +15 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/feature_flags.py +8 -3
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/graph.py +51 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/grpc/ops/threads.py +24 -1
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/http_metrics.py +5 -4
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/client.mts +15 -0
- langgraph_api-0.8.6/langgraph_api/js/src/utils/experiment-tracing.mts +51 -0
- langgraph_api-0.8.6/langgraph_api/js/yarn.lock +1321 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/metadata.py +1 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/metrics_datadog.py +19 -0
- langgraph_api-0.8.6/langgraph_api/protocol/__init__.py +1 -0
- langgraph_api-0.8.6/langgraph_api/protocol/capabilities.py +123 -0
- langgraph_api-0.8.6/langgraph_api/protocol/constants.py +43 -0
- langgraph_api-0.8.6/langgraph_api/protocol/event_normalizers.py +89 -0
- langgraph_api-0.8.6/langgraph_api/protocol/namespace.py +48 -0
- langgraph_api-0.8.6/langgraph_api/protocol/service.py +900 -0
- langgraph_api-0.8.6/langgraph_api/protocol/session.py +1764 -0
- langgraph_api-0.8.6/langgraph_api/protocol/state_normalizers.py +385 -0
- langgraph_api-0.8.6/langgraph_api/protocol/types.py +168 -0
- langgraph_api-0.8.6/langgraph_api/release_tags.py +206 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/route.py +34 -1
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/schema.py +2 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/stream.py +227 -10
- langgraph_api-0.8.6/langgraph_api/utils/messages.py +62 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.py +1 -1
- langgraph_api-0.8.6/langgraph_grpc_common/proto/core_api_pb2.py +272 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/core_api_pb2.pyi +127 -5
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/core_api_pb2_grpc.py +1 -1
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/encryption_pb2.pyi +13 -3
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/encryption_pb2_grpc.py +1 -1
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/engine_common_pb2.pyi +119 -3
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/engine_common_pb2_grpc.py +1 -1
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.py +1 -1
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.py +1 -1
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.py +1 -1
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.py +1 -1
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.py +1 -1
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.py +1 -1
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2_grpc.py +1 -1
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.py +1 -1
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.py +1 -1
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.py +1 -1
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/errors_pb2_grpc.py +1 -1
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/openapi.json +311 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/pyproject.toml +12 -6
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/uv.lock +482 -379
- langgraph_api-0.8.5/langgraph_api/__init__.py +0 -1
- langgraph_api-0.8.5/langgraph_api/js/yarn.lock +0 -1894
- langgraph_api-0.8.5/langgraph_grpc_common/proto/core_api_pb2.py +0 -272
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/.gitignore +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/LICENSE +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/README.md +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/.gitignore +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/Makefile +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/README.md +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/assistant.ts +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/benchmark-runner.ts +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/benchmark_profiles.ts +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/benchmarks.ts +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/cancel_first_second_completes.ts +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/enqueued_runs_order.ts +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/log-failure.ts +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/meta_workload.ts +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/stream_write.ts +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/thread.ts +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/thread_runs_metadata_search.ts +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/threads_search_metadata.ts +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/types.ts +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/wait_write.ts +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/capacity_dd_report.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/capacity_k6.js +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/capacity_runner.mjs +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/capacity_slack_report.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/capacity_urls.mjs +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/clean-cli.js +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/clean.js +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/continuous/README.md +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/continuous/runner.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/graphs.js +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/mixed_workload_k6.js +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/mixed_workload_runner.mjs +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/package.json +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/ramp.js +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/reporting/dd_reporting.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/reporting/slack_slowest_runs.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/reporting/slack_summary.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/run_local.sh +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/staircase.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/staircase_step_k6.js +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/tsconfig.json +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/update-revision.js +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/weather.js +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/custom_store.sql +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/forbidden.txt +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/hatch_build.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/healthcheck.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph-cloud-debugging-20260210132856.zip +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/_checkpointer/__init__.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/_checkpointer/_adapter.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/_checkpointer/protocol.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/_factory_utils.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/assistants.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/mcp/__init__.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/mcp/_constants.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/mcp/_handlers.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/mcp/_models.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/mcp/_routes.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/mcp/_sanitizers.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/openapi.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/profile.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/runs.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/store.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/threads.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/ui.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/asgi_transport.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/asyncio.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/auth/__init__.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/auth/errors.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/auth/langsmith/__init__.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/auth/langsmith/backend.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/auth/langsmith/client.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/auth/noop.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/auth/studio_user.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/cache.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/command.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/config/_parse.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/config/schemas.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/cron_scheduler.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/encryption/__init__.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/encryption/aes_json.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/encryption/context.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/encryption/custom.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/encryption/middleware.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/encryption/shared.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/errors.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/grpc/__init__.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/grpc/client.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/grpc/generated/core_api_pb2.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/grpc/ops/__init__.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/grpc/ops/assistants.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/grpc/ops/cache.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/grpc/ops/crons.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/grpc/ops/runs.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/grpc/server.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/grpc/servicers/__init__.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/grpc/servicers/checkpointer.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/grpc/servicers/encryption.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/http.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/http_metrics_utils.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/.gitignore +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/.prettierrc +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/__init__.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/base.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/build.mts +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/client.http.mts +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/errors.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/global.d.ts +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/package.json +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/remote.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/schema.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/src/graph.mts +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/src/load.hooks.mjs +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/src/preload.mjs +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/src/utils/files.mts +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/src/utils/importMap.mts +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/src/utils/serde.mts +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/sse.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/traceblock.mts +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/tsconfig.json +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/ui.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/lc_security/__init__.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/lc_security/exceptions.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/lc_security/policy.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/lc_security/transport.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/logging.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/middleware/__init__.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/middleware/ensure_store.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/middleware/http_logger.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/middleware/private_network.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/middleware/request_id.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/models/__init__.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/models/run.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/otel_context.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/patch.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/queue_entrypoint.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/self_hosted_logs.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/self_hosted_metrics.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/serde.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/server.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/sse.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/state.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/store.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/timing/__init__.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/timing/profiler.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/timing/timer.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/traceblock.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/tunneling/cloudflare.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/utils/__init__.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/utils/cache.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/utils/config.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/utils/errors.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/utils/extract.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/utils/future.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/utils/headers.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/utils/network.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/utils/retriable_client.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/utils/stream_codec.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/utils/uuids.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/validation.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/webhook.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/worker.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/__init__.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/checkpointer.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/conversion/__init__.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/conversion/_compat.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/conversion/checkpoint.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/conversion/config.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/conversion/durability.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/conversion/struct.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/conversion/value.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/__init__.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/checkpointer_pb2.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/checkpointer_pb2.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/core_api_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/encryption_pb2.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/encryption_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/engine_common_pb2.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/engine_common_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_control_signal_pb2.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_control_signal_pb2.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_durability_pb2.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_durability_pb2.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_run_status_pb2.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_run_status_pb2.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_stream_mode_pb2.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_stream_mode_pb2.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_thread_status_pb2.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_thread_status_pb2.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/errors_pb2.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/errors_pb2.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/errors_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/serde.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_license/__init__.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_license/validation.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_runtime/__init__.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_runtime/checkpoint.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_runtime/database.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_runtime/lifespan.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_runtime/metrics.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_runtime/ops.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_runtime/queue.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_runtime/retry.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_runtime/routes.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_runtime/store.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/logging.json +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/scripts/build_wheel.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/scripts/create_license.py +0 -0
- {langgraph_api-0.8.5 → langgraph_api-0.8.6}/scripts/run_a2a_tck.py +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
.PHONY: build release lint format test test_watch start start-inmem start-inmem-license-oss start start-js-server build-go-server start-go-server stop-go-server check-version check-base-imports test-a2a-tck test-a2a-tck-mandatory start-test-a2a-tck start-test-a2a-tck-mandatory start-test-a2a-tck-watch test-mcp-conformance start-test-mcp-conformance list-mcp-scenarios
|
|
2
2
|
|
|
3
3
|
# Environment variables
|
|
4
|
-
LANGSERVE_GRAPHS_ALL = '{"agent": {"path": "./tests/graphs/agent.py:graph", "description": "agent"}, "assistant_id_runtime": "./tests/graphs/assistant_id_runtime.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", "agent_parallel_interrupt": "./tests/graphs/agent_parallel_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", "max_concurrency_graph": "./tests/graphs/max_concurrency_graph.py:graph", "unserializable_subgraph": "./tests/graphs/unserializable_subgraph.py:graph", "agent_interrupt_text": "./tests/graphs/agent_interrupt_text.py:graph", "agent_echo_stream": "./tests/graphs/agent_echo_stream.py:graph", "runtime_graph": "./tests/graphs/runtime_graph.py:graph", "tool_call_chunk_stream": "./tests/graphs/tool_call_chunk_stream.py:graph", "ui_tool_call_stream": "./tests/graphs/ui_tool_call_stream.py:graph"}'
|
|
4
|
+
LANGSERVE_GRAPHS_ALL = '{"agent": {"path": "./tests/graphs/agent.py:graph", "description": "agent"}, "assistant_id_runtime": "./tests/graphs/assistant_id_runtime.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", "agent_parallel_interrupt": "./tests/graphs/agent_parallel_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", "max_concurrency_graph": "./tests/graphs/max_concurrency_graph.py:graph", "unserializable_subgraph": "./tests/graphs/unserializable_subgraph.py:graph", "agent_interrupt_text": "./tests/graphs/agent_interrupt_text.py:graph", "agent_echo_stream": "./tests/graphs/agent_echo_stream.py:graph", "agent_tool_stream": "./tests/graphs/agent_tool_stream.py:graph", "runtime_graph": "./tests/graphs/runtime_graph.py:graph", "tool_call_chunk_stream": "./tests/graphs/tool_call_chunk_stream.py:graph", "ui_tool_call_stream": "./tests/graphs/ui_tool_call_stream.py:graph", "agent_metrics_stream": "./tests/graphs/agent_metrics_stream.py:graph", "agent_multimodal_stream": "./tests/graphs/agent_multimodal_stream.py:graph", "agent_bedtime_story": "./tests/graphs/agent_bedtime_story.py:graph"}'
|
|
5
5
|
LANGSERVE_GRAPHS_AUTH = '{"agent": {"path": "./tests/graphs/agent.py:graph", "description": "agent"}, "assistant_id_runtime": "./tests/graphs/assistant_id_runtime.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_parallel_interrupt": "./tests/graphs/agent_parallel_interrupt.py:graph", "functional_fibonacci": "./tests/graphs/functional_fibonacci.py:fibonacci", "state_graph_fibonacci": "./tests/graphs/state_graph_fibonacci.py:fibonacci", "runtime_graph": "./tests/graphs/runtime_graph.py:graph"}'
|
|
6
6
|
|
|
7
7
|
# Go server management
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: langgraph-api
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.6
|
|
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
|
|
7
7
|
Requires-Python: >=3.11
|
|
8
8
|
Requires-Dist: cloudpickle>=3.0.0
|
|
9
9
|
Requires-Dist: cryptography<47.0,>=42.0.0
|
|
10
|
-
Requires-Dist: grpcio-health-checking<1.
|
|
11
|
-
Requires-Dist: grpcio-tools==1.
|
|
12
|
-
Requires-Dist: grpcio<1.
|
|
10
|
+
Requires-Dist: grpcio-health-checking<1.81.0,>=1.80.0
|
|
11
|
+
Requires-Dist: grpcio-tools==1.80.0
|
|
12
|
+
Requires-Dist: grpcio<1.81.0,>=1.80.0
|
|
13
13
|
Requires-Dist: httptools>=0.5.0; platform_system != 'Windows'
|
|
14
14
|
Requires-Dist: httpx>=0.25.0
|
|
15
15
|
Requires-Dist: jsonschema-rs<0.45,>=0.20.0
|
|
16
16
|
Requires-Dist: langchain-core>=0.3.64
|
|
17
|
+
Requires-Dist: langchain-protocol<0.1,>=0.0.15
|
|
17
18
|
Requires-Dist: langgraph-checkpoint<5,>=3.0.1
|
|
18
19
|
Requires-Dist: langgraph-runtime-inmem<0.29.0,>=0.28.0
|
|
19
20
|
Requires-Dist: langgraph-sdk>=0.3.5
|
|
@@ -34,6 +35,7 @@ Requires-Dist: uuid-utils>=0.12.0
|
|
|
34
35
|
Requires-Dist: uvicorn>=0.26.0
|
|
35
36
|
Requires-Dist: uvloop>=0.18.0; platform_system != 'Windows'
|
|
36
37
|
Requires-Dist: watchfiles>=0.13
|
|
38
|
+
Requires-Dist: websockets>=13.0
|
|
37
39
|
Requires-Dist: zstandard>=0.23.0
|
|
38
40
|
Description-Content-Type: text/markdown
|
|
39
41
|
|
|
@@ -4,8 +4,8 @@ version = "0.1.0"
|
|
|
4
4
|
description = "Continuous stress test for Agent Server"
|
|
5
5
|
requires-python = ">=3.13"
|
|
6
6
|
dependencies = [
|
|
7
|
-
"langgraph-sdk>=0.
|
|
8
|
-
"click>=8.3.
|
|
7
|
+
"langgraph-sdk>=0.3.13",
|
|
8
|
+
"click>=8.3.3",
|
|
9
9
|
"structlog>=24.1.0",
|
|
10
10
|
"datadog-api-client>=2.0.0",
|
|
11
11
|
"python-dateutil>=2.8.0",
|
|
@@ -25,14 +25,14 @@ wheels = [
|
|
|
25
25
|
|
|
26
26
|
[[package]]
|
|
27
27
|
name = "click"
|
|
28
|
-
version = "8.3.
|
|
28
|
+
version = "8.3.3"
|
|
29
29
|
source = { registry = "https://pypi.org/simple" }
|
|
30
30
|
dependencies = [
|
|
31
31
|
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
|
32
32
|
]
|
|
33
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
33
|
+
sdist = { url = "https://files.pythonhosted.org/packages/bb/63/f9e1ea081ce35720d8b92acde70daaedace594dc93b693c869e0d5910718/click-8.3.3.tar.gz", hash = "sha256:398329ad4837b2ff7cbe1dd166a4c0f8900c3ca3a218de04466f38f6497f18a2", size = 328061, upload-time = "2026-04-22T15:11:27.506Z" }
|
|
34
34
|
wheels = [
|
|
35
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
35
|
+
{ url = "https://files.pythonhosted.org/packages/ae/44/c1221527f6a71a01ec6fbad7fa78f1d50dfa02217385cf0fa3eec7087d59/click-8.3.3-py3-none-any.whl", hash = "sha256:a2bf429bb3033c89fa4936ffb35d5cb471e3719e1f3c8a7c3fff0b8314305613", size = 110502, upload-time = "2026-04-22T15:11:25.044Z" },
|
|
36
36
|
]
|
|
37
37
|
|
|
38
38
|
[[package]]
|
|
@@ -120,25 +120,25 @@ dependencies = [
|
|
|
120
120
|
|
|
121
121
|
[package.metadata]
|
|
122
122
|
requires-dist = [
|
|
123
|
-
{ name = "click", specifier = ">=8.3.
|
|
123
|
+
{ name = "click", specifier = ">=8.3.3" },
|
|
124
124
|
{ name = "datadog-api-client", specifier = ">=2.0.0" },
|
|
125
125
|
{ name = "httpx", specifier = ">=0.27.0" },
|
|
126
|
-
{ name = "langgraph-sdk", specifier = ">=0.
|
|
126
|
+
{ name = "langgraph-sdk", specifier = ">=0.3.13" },
|
|
127
127
|
{ name = "python-dateutil", specifier = ">=2.8.0" },
|
|
128
128
|
{ name = "structlog", specifier = ">=24.1.0" },
|
|
129
129
|
]
|
|
130
130
|
|
|
131
131
|
[[package]]
|
|
132
132
|
name = "langgraph-sdk"
|
|
133
|
-
version = "0.3.
|
|
133
|
+
version = "0.3.13"
|
|
134
134
|
source = { registry = "https://pypi.org/simple" }
|
|
135
135
|
dependencies = [
|
|
136
136
|
{ name = "httpx" },
|
|
137
137
|
{ name = "orjson" },
|
|
138
138
|
]
|
|
139
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
139
|
+
sdist = { url = "https://files.pythonhosted.org/packages/0e/db/77a45127dddcfea5e4256ba916182903e4c31dc4cfca305b8c386f0a9e53/langgraph_sdk-0.3.13.tar.gz", hash = "sha256:419ca5663eec3cec192ad194ac0647c0c826866b446073eb40f384f950986cd5", size = 196360, upload-time = "2026-04-07T20:34:18.766Z" }
|
|
140
140
|
wheels = [
|
|
141
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
141
|
+
{ url = "https://files.pythonhosted.org/packages/fe/ef/64d64e9f8eea47ce7b939aa6da6863b674c8d418647813c20111645fcc62/langgraph_sdk-0.3.13-py3-none-any.whl", hash = "sha256:aee09e345c90775f6de9d6f4c7b847cfc652e49055c27a2aed0d981af2af3bd0", size = 96668, upload-time = "2026-04-07T20:34:17.866Z" },
|
|
142
142
|
]
|
|
143
143
|
|
|
144
144
|
[[package]]
|
|
@@ -18,9 +18,9 @@ structlog>=24.1.0
|
|
|
18
18
|
cloudpickle>=3.0.0
|
|
19
19
|
truststore>=0.1
|
|
20
20
|
protobuf>=6.32.1,<7.0.0
|
|
21
|
-
grpcio>=1.
|
|
22
|
-
grpcio-tools>=1.
|
|
23
|
-
grpcio-health-checking>=1.
|
|
21
|
+
grpcio>=1.80.0,<1.81.0
|
|
22
|
+
grpcio-tools>=1.80.0,<1.81.0
|
|
23
|
+
grpcio-health-checking>=1.80.0,<1.81.0
|
|
24
24
|
opentelemetry-api>=0.0.1
|
|
25
25
|
opentelemetry-sdk>=0.0.1
|
|
26
26
|
opentelemetry-exporter-otlp-proto-http>=0.0.1
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.8.6"
|
|
@@ -19,6 +19,7 @@ from langgraph_api.api.mcp import mcp_routes
|
|
|
19
19
|
from langgraph_api.api.meta import meta_info, meta_metrics
|
|
20
20
|
from langgraph_api.api.openapi import get_openapi_spec
|
|
21
21
|
from langgraph_api.api.profile import profile_routes
|
|
22
|
+
from langgraph_api.api.protocol import protocol_routes
|
|
22
23
|
from langgraph_api.api.runs import runs_routes
|
|
23
24
|
from langgraph_api.api.store import store_routes
|
|
24
25
|
from langgraph_api.api.threads import threads_routes
|
|
@@ -131,6 +132,8 @@ if HTTP_CONFIG:
|
|
|
131
132
|
protected_routes.extend(mcp_routes)
|
|
132
133
|
if not HTTP_CONFIG.get("disable_a2a"):
|
|
133
134
|
protected_routes.extend(a2a_routes)
|
|
135
|
+
if not HTTP_CONFIG.get("disable_runs") and not HTTP_CONFIG.get("disable_protocol"):
|
|
136
|
+
protected_routes.extend(protocol_routes)
|
|
134
137
|
else:
|
|
135
138
|
protected_routes.extend(assistants_routes)
|
|
136
139
|
protected_routes.extend(runs_routes)
|
|
@@ -141,6 +144,7 @@ else:
|
|
|
141
144
|
protected_routes.extend(ui_routes)
|
|
142
145
|
protected_routes.extend(mcp_routes)
|
|
143
146
|
protected_routes.extend(a2a_routes)
|
|
147
|
+
protected_routes.extend(protocol_routes)
|
|
144
148
|
|
|
145
149
|
|
|
146
150
|
def _metadata_fn(app_import: str) -> dict[str, str]:
|
|
@@ -552,6 +552,22 @@ def _create_interrupt_artifact(interrupts: list[dict[str, Any]]) -> dict[str, An
|
|
|
552
552
|
}
|
|
553
553
|
|
|
554
554
|
|
|
555
|
+
def _tool_result_data(it: dict[str, Any]) -> dict[str, Any] | None:
|
|
556
|
+
tool_call_id = it.get("tool_call_id")
|
|
557
|
+
if not isinstance(tool_call_id, str) or not tool_call_id:
|
|
558
|
+
return None
|
|
559
|
+
|
|
560
|
+
result: dict[str, Any] = {"toolCallId": tool_call_id}
|
|
561
|
+
content = it.get("content")
|
|
562
|
+
if content not in (None, ""):
|
|
563
|
+
result["content"] = content
|
|
564
|
+
for key in ("name", "status"):
|
|
565
|
+
value = it.get(key)
|
|
566
|
+
if isinstance(value, str) and value:
|
|
567
|
+
result[key] = value
|
|
568
|
+
return result
|
|
569
|
+
|
|
570
|
+
|
|
555
571
|
def _lc_stream_items_to_a2a_message(
|
|
556
572
|
items: list[dict[str, Any]],
|
|
557
573
|
*,
|
|
@@ -604,6 +620,9 @@ def _lc_stream_items_to_a2a_message(
|
|
|
604
620
|
tc = it.get("tool_calls")
|
|
605
621
|
if isinstance(tc, list) and tc:
|
|
606
622
|
extra_data.setdefault("tool_calls", tc)
|
|
623
|
+
tool_result = _tool_result_data(it)
|
|
624
|
+
if tool_result is not None:
|
|
625
|
+
extra_data.setdefault("tool_results", []).append(tool_result)
|
|
607
626
|
|
|
608
627
|
parts: list[dict[str, Any]] = []
|
|
609
628
|
if text_parts:
|
|
@@ -809,10 +828,21 @@ def _convert_messages_to_a2a_format(
|
|
|
809
828
|
else "ROLE_AGENT"
|
|
810
829
|
)
|
|
811
830
|
|
|
831
|
+
parts: list[dict[str, Any]] = [{"kind": "text", "text": str(content)}]
|
|
832
|
+
extra_data: dict[str, Any] = {}
|
|
833
|
+
tc = msg.get("tool_calls")
|
|
834
|
+
if isinstance(tc, list) and tc:
|
|
835
|
+
extra_data["tool_calls"] = tc
|
|
836
|
+
tool_result = _tool_result_data(msg)
|
|
837
|
+
if tool_result is not None:
|
|
838
|
+
extra_data["tool_results"] = [tool_result]
|
|
839
|
+
if extra_data:
|
|
840
|
+
parts.append({"kind": "data", "data": extra_data})
|
|
841
|
+
|
|
812
842
|
a2a_message = {
|
|
813
843
|
"kind": "message",
|
|
814
844
|
"role": a2a_role,
|
|
815
|
-
"parts":
|
|
845
|
+
"parts": parts,
|
|
816
846
|
"messageId": id,
|
|
817
847
|
"taskId": task_id,
|
|
818
848
|
"contextId": context_id,
|
|
@@ -47,9 +47,13 @@ def _merge_pool_stats(local: PoolStats, remote: PoolStats) -> PoolStats:
|
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
def _pool_stats_to_prometheus_lines(
|
|
50
|
-
stats: PoolStats,
|
|
50
|
+
stats: PoolStats,
|
|
51
|
+
project_id: str | None,
|
|
52
|
+
revision_id: str | None,
|
|
53
|
+
deployment_type: str = "",
|
|
51
54
|
) -> list[str]:
|
|
52
55
|
"""Format merged pool stats as Prometheus text lines (same format as langgraph_runtime.database.pool_stats)."""
|
|
56
|
+
labels = f'project_id="{project_id}", revision_id="{revision_id}", deployment_type="{deployment_type}"'
|
|
53
57
|
lines = []
|
|
54
58
|
if "postgres" in stats:
|
|
55
59
|
pg = stats["postgres"]
|
|
@@ -57,19 +61,19 @@ def _pool_stats_to_prometheus_lines(
|
|
|
57
61
|
[
|
|
58
62
|
"# HELP lg_api_pg_pool_max The maximum size of the postgres connection pool.",
|
|
59
63
|
"# TYPE lg_api_pg_pool_max gauge",
|
|
60
|
-
f
|
|
64
|
+
f"lg_api_pg_pool_max{{{labels}}} {pg.get('pool_max', 0)}",
|
|
61
65
|
"# HELP lg_api_pg_pool_size Number of connections currently managed by the postgres connection pool (in the pool, given to clients, being prepared)",
|
|
62
66
|
"# TYPE lg_api_pg_pool_size gauge",
|
|
63
|
-
f
|
|
67
|
+
f"lg_api_pg_pool_size{{{labels}}} {pg.get('pool_size', 0)}",
|
|
64
68
|
"# HELP lg_api_pg_pool_available Number of connections currently idle in the postgres connection pool",
|
|
65
69
|
"# TYPE lg_api_pg_pool_available gauge",
|
|
66
|
-
f
|
|
70
|
+
f"lg_api_pg_pool_available{{{labels}}} {pg.get('pool_available', 0)}",
|
|
67
71
|
"# HELP lg_api_pg_pool_requests_queued Number of postgres connection requests queued because a postgres connection wasn't immediately available in the pool",
|
|
68
72
|
"# TYPE lg_api_pg_pool_requests_queued counter",
|
|
69
|
-
f
|
|
73
|
+
f"lg_api_pg_pool_requests_queued{{{labels}}} {pg.get('requests_queued', 0)}",
|
|
70
74
|
"# HELP lg_api_pg_pool_requests_errors Number of postgres connection requests resulting in an error (timeouts, queue full...)",
|
|
71
75
|
"# TYPE lg_api_pg_pool_requests_errors counter",
|
|
72
|
-
f
|
|
76
|
+
f"lg_api_pg_pool_requests_errors{{{labels}}} {pg.get('requests_errors', 0)}",
|
|
73
77
|
]
|
|
74
78
|
)
|
|
75
79
|
if "redis" in stats:
|
|
@@ -78,13 +82,13 @@ def _pool_stats_to_prometheus_lines(
|
|
|
78
82
|
[
|
|
79
83
|
"# HELP lg_api_redis_pool_available Number of connections currently idle in the redis connection pool",
|
|
80
84
|
"# TYPE lg_api_redis_pool_available gauge",
|
|
81
|
-
f
|
|
85
|
+
f"lg_api_redis_pool_available{{{labels}}} {rd.get('idle_connections', 0)}",
|
|
82
86
|
"# HELP lg_api_redis_pool_size Number of connections currently in use in the redis connection pool",
|
|
83
87
|
"# TYPE lg_api_redis_pool_size gauge",
|
|
84
|
-
f
|
|
88
|
+
f"lg_api_redis_pool_size{{{labels}}} {rd.get('in_use_connections', 0)}",
|
|
85
89
|
"# HELP lg_api_redis_pool_max The maximum size of the redis connection pool.",
|
|
86
90
|
"# TYPE lg_api_redis_pool_max gauge",
|
|
87
|
-
f
|
|
91
|
+
f"lg_api_redis_pool_max{{{labels}}} {rd.get('max_connections', 0)}",
|
|
88
92
|
]
|
|
89
93
|
)
|
|
90
94
|
return lines
|
|
@@ -111,7 +115,10 @@ async def meta_pool_stats(metrics_format: str) -> PoolStats | list[str]:
|
|
|
111
115
|
merged_pool_stats = _merge_pool_stats(local_pool_stats, grpc_pool_stats)
|
|
112
116
|
if metrics_format == "prometheus":
|
|
113
117
|
return _pool_stats_to_prometheus_lines(
|
|
114
|
-
merged_pool_stats,
|
|
118
|
+
merged_pool_stats,
|
|
119
|
+
metadata.PROJECT_ID,
|
|
120
|
+
metadata.HOST_REVISION_ID,
|
|
121
|
+
metadata.DEPLOYMENT_TYPE,
|
|
115
122
|
)
|
|
116
123
|
else:
|
|
117
124
|
return merged_pool_stats
|
|
@@ -154,7 +161,10 @@ async def meta_metrics(request: ApiRequest):
|
|
|
154
161
|
workers_available = worker_metrics["available"]
|
|
155
162
|
|
|
156
163
|
http_metrics = HTTP_METRICS_COLLECTOR.get_metrics(
|
|
157
|
-
metadata.PROJECT_ID,
|
|
164
|
+
metadata.PROJECT_ID,
|
|
165
|
+
metadata.HOST_REVISION_ID,
|
|
166
|
+
metrics_format,
|
|
167
|
+
metadata.DEPLOYMENT_TYPE,
|
|
158
168
|
)
|
|
159
169
|
|
|
160
170
|
merged_pool_stats = await meta_pool_stats(metrics_format)
|
|
@@ -175,23 +185,24 @@ async def meta_metrics(request: ApiRequest):
|
|
|
175
185
|
async with connect() as conn:
|
|
176
186
|
queue_stats = await Runs.stats(conn)
|
|
177
187
|
|
|
188
|
+
labels = f'project_id="{metadata.PROJECT_ID}", revision_id="{metadata.HOST_REVISION_ID}", deployment_type="{metadata.DEPLOYMENT_TYPE}"'
|
|
178
189
|
metrics.extend(
|
|
179
190
|
[
|
|
180
191
|
"# HELP lg_api_num_pending_runs The number of runs currently pending.",
|
|
181
192
|
"# TYPE lg_api_num_pending_runs gauge",
|
|
182
|
-
f
|
|
193
|
+
f"lg_api_num_pending_runs{{{labels}}} {queue_stats['n_pending']}",
|
|
183
194
|
"# HELP lg_api_num_running_runs The number of runs currently running.",
|
|
184
195
|
"# TYPE lg_api_num_running_runs gauge",
|
|
185
|
-
f
|
|
196
|
+
f"lg_api_num_running_runs{{{labels}}} {queue_stats['n_running']}",
|
|
186
197
|
"# HELP lg_api_pending_runs_wait_time_max The maximum time a run has been pending, in seconds.",
|
|
187
198
|
"# TYPE lg_api_pending_runs_wait_time_max gauge",
|
|
188
|
-
f
|
|
199
|
+
f"lg_api_pending_runs_wait_time_max{{{labels}}} {queue_stats.get('pending_runs_wait_time_max_secs') or 0}",
|
|
189
200
|
"# HELP lg_api_pending_runs_wait_time_med The median pending wait time across runs, in seconds.",
|
|
190
201
|
"# TYPE lg_api_pending_runs_wait_time_med gauge",
|
|
191
|
-
f
|
|
202
|
+
f"lg_api_pending_runs_wait_time_med{{{labels}}} {queue_stats.get('pending_runs_wait_time_med_secs') or 0}",
|
|
192
203
|
"# HELP lg_api_pending_unblocked_runs_wait_time_max The maximum time a run has been pending excluding runs blocked by another run on the same thread, in seconds.",
|
|
193
204
|
"# TYPE lg_api_pending_unblocked_runs_wait_time_max gauge",
|
|
194
|
-
f
|
|
205
|
+
f"lg_api_pending_unblocked_runs_wait_time_max{{{labels}}} {queue_stats.get('pending_unblocked_runs_wait_time_max_secs') or 0}",
|
|
195
206
|
]
|
|
196
207
|
)
|
|
197
208
|
except Exception as e:
|
|
@@ -200,17 +211,18 @@ async def meta_metrics(request: ApiRequest):
|
|
|
200
211
|
)
|
|
201
212
|
|
|
202
213
|
if config.N_JOBS_PER_WORKER > 0:
|
|
214
|
+
worker_labels = f'project_id="{metadata.PROJECT_ID}", revision_id="{metadata.HOST_REVISION_ID}", deployment_type="{metadata.DEPLOYMENT_TYPE}"'
|
|
203
215
|
metrics.extend(
|
|
204
216
|
[
|
|
205
217
|
"# HELP lg_api_workers_max The maximum number of workers available.",
|
|
206
218
|
"# TYPE lg_api_workers_max gauge",
|
|
207
|
-
f
|
|
219
|
+
f"lg_api_workers_max{{{worker_labels}}} {workers_max}",
|
|
208
220
|
"# HELP lg_api_workers_active The number of currently active workers.",
|
|
209
221
|
"# TYPE lg_api_workers_active gauge",
|
|
210
|
-
f
|
|
222
|
+
f"lg_api_workers_active{{{worker_labels}}} {workers_active}",
|
|
211
223
|
"# HELP lg_api_workers_available The number of available (idle) workers.",
|
|
212
224
|
"# TYPE lg_api_workers_available gauge",
|
|
213
|
-
f
|
|
225
|
+
f"lg_api_workers_available{{{worker_labels}}} {workers_available}",
|
|
214
226
|
]
|
|
215
227
|
)
|
|
216
228
|
|