langgraph-api 0.8.4__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.4 → langgraph_api-0.8.6}/Makefile +1 -2
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/PKG-INFO +6 -4
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/continuous/pyproject.toml +2 -2
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/continuous/uv.lock +8 -8
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/constraints.txt +3 -3
- langgraph_api-0.8.6/langgraph_api/__init__.py +1 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/api/__init__.py +4 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/api/a2a.py +31 -1
- {langgraph_api-0.8.4 → 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.4 → langgraph_api-0.8.6}/langgraph_api/auth/custom.py +19 -1
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/auth/middleware.py +1 -1
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/cli.py +39 -68
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/config/__init__.py +15 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/feature_flags.py +8 -3
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/graph.py +51 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/grpc/ops/threads.py +24 -1
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/http_metrics.py +5 -4
- {langgraph_api-0.8.4 → 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.4 → langgraph_api-0.8.6}/langgraph_api/metadata.py +1 -0
- {langgraph_api-0.8.4 → 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.4 → langgraph_api-0.8.6}/langgraph_api/queue_entrypoint.py +1 -4
- langgraph_api-0.8.6/langgraph_api/release_tags.py +206 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/route.py +34 -1
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/schema.py +2 -0
- {langgraph_api-0.8.4 → 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.6/langgraph_grpc_common/conversion/__init__.py +15 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/conversion/value.py +1 -17
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/__init__.py +0 -8
- {langgraph_api-0.8.4 → 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.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/core_api_pb2.pyi +127 -5
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/core_api_pb2_grpc.py +1 -1
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/encryption_pb2.pyi +13 -3
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/encryption_pb2_grpc.py +1 -1
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/engine_common_pb2.pyi +119 -3
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/engine_common_pb2_grpc.py +1 -1
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.py +1 -1
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.py +1 -1
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.py +1 -1
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.py +1 -1
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.py +1 -1
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.py +1 -1
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2_grpc.py +1 -1
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.py +1 -1
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.py +1 -1
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.py +1 -1
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/errors_pb2_grpc.py +1 -1
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/openapi.json +311 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/pyproject.toml +12 -6
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/uv.lock +482 -379
- langgraph_api-0.8.4/langgraph_api/__init__.py +0 -1
- langgraph_api-0.8.4/langgraph_api/executor_entrypoint.py +0 -31
- langgraph_api-0.8.4/langgraph_api/js/yarn.lock +0 -1894
- langgraph_api-0.8.4/langgraph_grpc_common/conversion/__init__.py +0 -33
- langgraph_api-0.8.4/langgraph_grpc_common/conversion/channel.py +0 -159
- langgraph_api-0.8.4/langgraph_grpc_common/conversion/exception.py +0 -95
- langgraph_api-0.8.4/langgraph_grpc_common/conversion/graph.py +0 -154
- langgraph_api-0.8.4/langgraph_grpc_common/conversion/interrupt.py +0 -34
- langgraph_api-0.8.4/langgraph_grpc_common/conversion/messages.py +0 -405
- langgraph_api-0.8.4/langgraph_grpc_common/conversion/orchestrator_response.py +0 -418
- langgraph_api-0.8.4/langgraph_grpc_common/conversion/runopts.py +0 -95
- langgraph_api-0.8.4/langgraph_grpc_common/conversion/stream_mode.py +0 -55
- langgraph_api-0.8.4/langgraph_grpc_common/conversion/task.py +0 -349
- langgraph_api-0.8.4/langgraph_grpc_common/proto/core_api_pb2.py +0 -272
- langgraph_api-0.8.4/langgraph_grpc_common/proto/engine_api_pb2.py +0 -88
- langgraph_api-0.8.4/langgraph_grpc_common/proto/engine_api_pb2.pyi +0 -818
- langgraph_api-0.8.4/langgraph_grpc_common/proto/engine_api_pb2_grpc.py +0 -375
- langgraph_api-0.8.4/langgraph_grpc_common/proto/engine_api_pb2_grpc.pyi +0 -175
- langgraph_api-0.8.4/langgraph_grpc_common/proto/executor_api_pb2.py +0 -114
- langgraph_api-0.8.4/langgraph_grpc_common/proto/executor_api_pb2.pyi +0 -930
- langgraph_api-0.8.4/langgraph_grpc_common/proto/executor_api_pb2_grpc.py +0 -278
- langgraph_api-0.8.4/langgraph_grpc_common/proto/executor_api_pb2_grpc.pyi +0 -107
- langgraph_api-0.8.4/langgraph_grpc_common/sanitize.py +0 -15
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/.gitignore +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/LICENSE +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/README.md +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/.gitignore +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/Makefile +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/README.md +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/benchmark-runners/assistant.ts +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/benchmark-runners/benchmark-runner.ts +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/benchmark-runners/benchmark_profiles.ts +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/benchmark-runners/benchmarks.ts +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/benchmark-runners/cancel_first_second_completes.ts +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/benchmark-runners/enqueued_runs_order.ts +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/benchmark-runners/log-failure.ts +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/benchmark-runners/meta_workload.ts +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/benchmark-runners/stream_write.ts +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/benchmark-runners/thread.ts +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/benchmark-runners/thread_runs_metadata_search.ts +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/benchmark-runners/threads_search_metadata.ts +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/benchmark-runners/types.ts +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/benchmark-runners/wait_write.ts +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/capacity_dd_report.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/capacity_k6.js +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/capacity_runner.mjs +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/capacity_slack_report.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/capacity_urls.mjs +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/clean-cli.js +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/clean.js +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/continuous/README.md +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/continuous/runner.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/graphs.js +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/mixed_workload_k6.js +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/mixed_workload_runner.mjs +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/package.json +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/ramp.js +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/reporting/dd_reporting.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/reporting/slack_slowest_runs.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/reporting/slack_summary.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/run_local.sh +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/staircase.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/staircase_step_k6.js +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/tsconfig.json +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/update-revision.js +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/benchmark/weather.js +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/custom_store.sql +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/forbidden.txt +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/hatch_build.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/healthcheck.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph-cloud-debugging-20260210132856.zip +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/_checkpointer/__init__.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/_checkpointer/_adapter.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/_checkpointer/protocol.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/_factory_utils.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/api/assistants.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/api/mcp/__init__.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/api/mcp/_constants.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/api/mcp/_handlers.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/api/mcp/_models.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/api/mcp/_routes.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/api/mcp/_sanitizers.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/api/openapi.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/api/profile.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/api/runs.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/api/store.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/api/threads.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/api/ui.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/asgi_transport.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/asyncio.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/auth/__init__.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/auth/errors.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/auth/langsmith/__init__.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/auth/langsmith/backend.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/auth/langsmith/client.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/auth/noop.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/auth/studio_user.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/cache.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/command.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/config/_parse.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/config/schemas.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/cron_scheduler.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/encryption/__init__.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/encryption/aes_json.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/encryption/context.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/encryption/custom.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/encryption/middleware.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/encryption/shared.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/errors.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/grpc/__init__.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/grpc/client.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/grpc/generated/core_api_pb2.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/grpc/ops/__init__.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/grpc/ops/assistants.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/grpc/ops/cache.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/grpc/ops/crons.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/grpc/ops/runs.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/grpc/server.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/grpc/servicers/__init__.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/grpc/servicers/checkpointer.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/grpc/servicers/encryption.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/http.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/http_metrics_utils.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/js/.gitignore +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/js/.prettierrc +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/js/__init__.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/js/base.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/js/build.mts +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/js/client.http.mts +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/js/errors.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/js/global.d.ts +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/js/package.json +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/js/remote.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/js/schema.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/js/src/graph.mts +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/js/src/load.hooks.mjs +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/js/src/preload.mjs +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/js/src/utils/files.mts +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/js/src/utils/importMap.mts +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/js/src/utils/serde.mts +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/js/sse.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/js/traceblock.mts +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/js/tsconfig.json +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/js/ui.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/lc_security/__init__.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/lc_security/exceptions.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/lc_security/policy.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/lc_security/transport.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/logging.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/middleware/__init__.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/middleware/ensure_store.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/middleware/http_logger.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/middleware/private_network.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/middleware/request_id.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/models/__init__.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/models/run.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/otel_context.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/patch.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/self_hosted_logs.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/self_hosted_metrics.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/serde.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/server.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/sse.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/state.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/store.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/timing/__init__.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/timing/profiler.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/timing/timer.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/traceblock.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/tunneling/cloudflare.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/utils/__init__.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/utils/cache.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/utils/config.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/utils/errors.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/utils/extract.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/utils/future.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/utils/headers.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/utils/network.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/utils/retriable_client.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/utils/stream_codec.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/utils/uuids.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/validation.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/webhook.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_api/worker.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/__init__.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/checkpointer.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/conversion/_compat.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/conversion/checkpoint.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/conversion/config.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/conversion/durability.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/conversion/struct.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/checkpointer_pb2.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/checkpointer_pb2.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/core_api_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/encryption_pb2.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/encryption_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/engine_common_pb2.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/engine_common_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_control_signal_pb2.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_control_signal_pb2.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_durability_pb2.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_durability_pb2.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_run_status_pb2.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_run_status_pb2.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_stream_mode_pb2.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_stream_mode_pb2.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_thread_status_pb2.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_thread_status_pb2.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/errors_pb2.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/errors_pb2.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/errors_pb2_grpc.pyi +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_grpc_common/serde.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_license/__init__.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_license/validation.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_runtime/__init__.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_runtime/checkpoint.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_runtime/database.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_runtime/lifespan.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_runtime/metrics.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_runtime/ops.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_runtime/queue.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_runtime/retry.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_runtime/routes.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/langgraph_runtime/store.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/logging.json +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/scripts/build_wheel.py +0 -0
- {langgraph_api-0.8.4 → langgraph_api-0.8.6}/scripts/create_license.py +0 -0
- {langgraph_api-0.8.4 → 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
|
|
@@ -16,7 +16,6 @@ start-go-server: # NOTE: core server will start with sqlite if no DATABASE_URI i
|
|
|
16
16
|
DATABASE_URI= \
|
|
17
17
|
REDIS_URI= \
|
|
18
18
|
./bin/core-server \
|
|
19
|
-
-service core-api \
|
|
20
19
|
-apply-db-schema &
|
|
21
20
|
@sleep 2
|
|
22
21
|
|
|
@@ -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
|
|