langgraph-api 0.11.0.dev5__tar.gz → 0.11.0.dev7__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.11.0.dev5 → langgraph_api-0.11.0.dev7}/PKG-INFO +2 -2
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/continuous/pyproject.toml +3 -3
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/continuous/uv.lock +12 -12
- langgraph_api-0.11.0.dev7/langgraph_api/__init__.py +1 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/event_streaming/session.py +43 -8
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/grpc/ops/runs.py +2 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/js/client.mts +76 -4
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/js/package.json +2 -2
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/js/remote.py +30 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/js/yarn.lock +8 -32
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/stream.py +53 -2
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/stream_v2.py +61 -33
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_stream_mode_pb2.py +2 -2
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_stream_mode_pb2.pyi +8 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/pyproject.toml +1 -1
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/uv.lock +22 -22
- langgraph_api-0.11.0.dev5/langgraph_api/__init__.py +0 -1
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/.gitignore +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/LICENSE +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/Makefile +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/README.md +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/.gitignore +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/Makefile +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/README.md +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/benchmark-runners/assistant.ts +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/benchmark-runners/benchmark-runner.ts +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/benchmark-runners/benchmark_profiles.ts +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/benchmark-runners/benchmarks.ts +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/benchmark-runners/cancel_first_second_completes.ts +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/benchmark-runners/enqueued_runs_order.ts +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/benchmark-runners/log-failure.ts +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/benchmark-runners/meta_workload.ts +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/benchmark-runners/stream_write.ts +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/benchmark-runners/thread.ts +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/benchmark-runners/thread_runs_metadata_search.ts +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/benchmark-runners/threads_search_metadata.ts +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/benchmark-runners/types.ts +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/benchmark-runners/wait_write.ts +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/capacity_dd_report.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/capacity_k6.js +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/capacity_runner.mjs +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/capacity_slack_report.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/capacity_urls.mjs +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/clean-cli.js +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/clean.js +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/continuous/README.md +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/continuous/runner.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/graphs.js +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/mixed_workload_k6.js +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/mixed_workload_runner.mjs +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/package.json +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/ramp.js +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/reporting/dd_reporting.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/reporting/slack_slowest_runs.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/reporting/slack_summary.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/run_local.sh +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/staircase.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/staircase_step_k6.js +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/tsconfig.json +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/update-revision.js +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/benchmark/weather.js +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/constraints.txt +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/custom_store.sql +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/forbidden.txt +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/hatch_build.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/healthcheck.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph-cloud-debugging-20260210132856.zip +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/_checkpointer/__init__.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/_checkpointer/_adapter.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/_checkpointer/protocol.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/_factory_utils.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/api/__init__.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/api/a2a.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/api/assistants.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/api/event_streaming.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/api/mcp/__init__.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/api/mcp/_constants.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/api/mcp/_handlers.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/api/mcp/_models.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/api/mcp/_routes.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/api/mcp/_sanitizers.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/api/meta.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/api/openapi.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/api/profile.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/api/runs.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/api/store.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/api/threads.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/api/ui.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/asgi_transport.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/asyncio.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/auth/__init__.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/auth/custom.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/auth/errors.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/auth/langsmith/__init__.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/auth/langsmith/backend.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/auth/langsmith/client.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/auth/middleware.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/auth/noop.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/auth/studio_user.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/cache.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/cli.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/command.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/config/__init__.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/config/_parse.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/config/schemas.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/cron_scheduler.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/encryption/__init__.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/encryption/aes_json.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/encryption/context.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/encryption/custom.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/encryption/middleware.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/encryption/shared.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/errors.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/event_streaming/__init__.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/event_streaming/capabilities.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/event_streaming/constants.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/event_streaming/event_normalizers.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/event_streaming/namespace.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/event_streaming/service.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/event_streaming/state_normalizers.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/event_streaming/types.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/feature_flags.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/graph.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/grpc/__init__.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/grpc/client.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/grpc/generated/core_api_pb2.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/grpc/ops/__init__.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/grpc/ops/assistants.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/grpc/ops/cache.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/grpc/ops/crons.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/grpc/ops/threads.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/grpc/server.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/grpc/servicers/__init__.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/grpc/servicers/checkpointer.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/grpc/servicers/encryption.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/http.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/http_metrics.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/http_metrics_utils.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/js/.gitignore +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/js/.prettierrc +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/js/__init__.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/js/base.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/js/build.mts +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/js/client.http.mts +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/js/errors.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/js/global.d.ts +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/js/schema.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/js/src/graph.mts +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/js/src/load.hooks.mjs +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/js/src/preload.mjs +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/js/src/utils/experiment-tracing.mts +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/js/src/utils/files.mts +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/js/src/utils/importMap.mts +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/js/src/utils/serde.mts +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/js/sse.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/js/traceblock.mts +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/js/tsconfig.json +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/js/ui.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/lc_security/__init__.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/lc_security/exceptions.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/lc_security/policy.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/lc_security/transport.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/logging.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/metadata.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/metrics_otlp.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/middleware/__init__.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/middleware/ensure_store.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/middleware/http_logger.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/middleware/private_network.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/middleware/request_id.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/models/__init__.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/models/run.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/otel_context.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/patch.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/queue_entrypoint.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/release_tags.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/route.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/schema.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/self_hosted_logs.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/self_hosted_metrics.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/serde.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/server.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/sse.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/state.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/store.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/timing/__init__.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/timing/profiler.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/timing/timer.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/traceblock.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/tunneling/cloudflare.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/utils/__init__.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/utils/cache.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/utils/config.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/utils/errors.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/utils/extract.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/utils/future.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/utils/headers.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/utils/network.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/utils/retriable_client.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/utils/stream_codec.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/utils/uuids.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/validation.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/webhook.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/worker.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/__init__.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/checkpointer.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/conversion/__init__.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/conversion/_compat.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/conversion/checkpoint.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/conversion/config.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/conversion/durability.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/conversion/struct.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/conversion/value.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/__init__.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/checkpointer_pb2.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/checkpointer_pb2.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/core_api_pb2.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/core_api_pb2.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/core_api_pb2_grpc.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/core_api_pb2_grpc.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/encryption_pb2.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/encryption_pb2.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/encryption_pb2_grpc.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/encryption_pb2_grpc.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/engine_common_pb2.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/engine_common_pb2.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/engine_common_pb2_grpc.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/engine_common_pb2_grpc.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_control_signal_pb2.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_control_signal_pb2.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_durability_pb2.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_durability_pb2.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_run_status_pb2.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_run_status_pb2.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_thread_status_pb2.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_thread_status_pb2.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/errors_pb2.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/errors_pb2.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/errors_pb2_grpc.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/proto/errors_pb2_grpc.pyi +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_grpc_common/serde.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_license/__init__.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_license/validation.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_runtime/__init__.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_runtime/checkpoint.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_runtime/database.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_runtime/lifespan.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_runtime/metrics.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_runtime/ops.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_runtime/queue.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_runtime/retry.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_runtime/routes.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_runtime/store.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/logging.json +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/openapi.json +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/scripts/build_wheel.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/scripts/create_license.py +0 -0
- {langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/scripts/run_a2a_tck.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: langgraph-api
|
|
3
|
-
Version: 0.11.0.
|
|
3
|
+
Version: 0.11.0.dev7
|
|
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
|
|
@@ -22,7 +22,7 @@ Requires-Dist: langgraph<2,>=0.4.10
|
|
|
22
22
|
Requires-Dist: langsmith[otel]>=0.6.3
|
|
23
23
|
Requires-Dist: opentelemetry-api>=0.0.1
|
|
24
24
|
Requires-Dist: opentelemetry-exporter-otlp-proto-http>=0.0.1
|
|
25
|
-
Requires-Dist: opentelemetry-exporter-prometheus
|
|
25
|
+
Requires-Dist: opentelemetry-exporter-prometheus<0.59,>=0.58b0
|
|
26
26
|
Requires-Dist: opentelemetry-sdk>=0.0.1
|
|
27
27
|
Requires-Dist: orjson>=3.9.7
|
|
28
28
|
Requires-Dist: prometheus-client>=0.0.1
|
|
@@ -4,10 +4,10 @@ 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.3.
|
|
8
|
-
"click>=8.
|
|
7
|
+
"langgraph-sdk>=0.3.15",
|
|
8
|
+
"click>=8.4.1",
|
|
9
9
|
"structlog>=24.1.0",
|
|
10
|
-
"datadog-api-client>=2.
|
|
10
|
+
"datadog-api-client>=2.55.0",
|
|
11
11
|
"python-dateutil>=2.8.0",
|
|
12
12
|
"httpx>=0.27.0",
|
|
13
13
|
]
|
|
@@ -25,14 +25,14 @@ wheels = [
|
|
|
25
25
|
|
|
26
26
|
[[package]]
|
|
27
27
|
name = "click"
|
|
28
|
-
version = "8.
|
|
28
|
+
version = "8.4.1"
|
|
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/9b/98/518d8e5081007684232226f475082b30087d0f585e8457db087298259f49/click-8.4.1.tar.gz", hash = "sha256:918b5633eddf6b41c32d4f454bf0de810065c74e3f7dbf8ee5452f8be88d3e96", size = 353007, upload-time = "2026-05-22T04:08:37.769Z" }
|
|
34
34
|
wheels = [
|
|
35
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
35
|
+
{ url = "https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl", hash = "sha256:482be17c6991b8c19c5429a1e995d9b0efdbb63172824c41f99965dc0ade8ec2", size = 116639, upload-time = "2026-05-22T04:08:35.26Z" },
|
|
36
36
|
]
|
|
37
37
|
|
|
38
38
|
[[package]]
|
|
@@ -46,7 +46,7 @@ wheels = [
|
|
|
46
46
|
|
|
47
47
|
[[package]]
|
|
48
48
|
name = "datadog-api-client"
|
|
49
|
-
version = "2.
|
|
49
|
+
version = "2.55.0"
|
|
50
50
|
source = { registry = "https://pypi.org/simple" }
|
|
51
51
|
dependencies = [
|
|
52
52
|
{ name = "certifi" },
|
|
@@ -54,9 +54,9 @@ dependencies = [
|
|
|
54
54
|
{ name = "typing-extensions" },
|
|
55
55
|
{ name = "urllib3" },
|
|
56
56
|
]
|
|
57
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
57
|
+
sdist = { url = "https://files.pythonhosted.org/packages/ee/8d/6f7ddd04cc701cc590eab111a45e54c92158eddbff943ad4a1dbb5925b21/datadog_api_client-2.55.0.tar.gz", hash = "sha256:c56767c867a15b928da08d5c6077a7ac466e029a10a5045e80d79d76e92afaa3", size = 4994403, upload-time = "2026-05-15T17:20:06.825Z" }
|
|
58
58
|
wheels = [
|
|
59
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
59
|
+
{ url = "https://files.pythonhosted.org/packages/c7/28/9af04e1cccb57bc9754a5d4cd2fc5a006183e95b234336e9115fe95e5f12/datadog_api_client-2.55.0-py3-none-any.whl", hash = "sha256:fef8dcadbdcd1f7fbe89d97825cfc06c9a1e3577b61f04834b8d250c881d59a7", size = 6644614, upload-time = "2026-05-15T17:20:03.927Z" },
|
|
60
60
|
]
|
|
61
61
|
|
|
62
62
|
[[package]]
|
|
@@ -120,25 +120,25 @@ dependencies = [
|
|
|
120
120
|
|
|
121
121
|
[package.metadata]
|
|
122
122
|
requires-dist = [
|
|
123
|
-
{ name = "click", specifier = ">=8.
|
|
124
|
-
{ name = "datadog-api-client", specifier = ">=2.
|
|
123
|
+
{ name = "click", specifier = ">=8.4.1" },
|
|
124
|
+
{ name = "datadog-api-client", specifier = ">=2.55.0" },
|
|
125
125
|
{ name = "httpx", specifier = ">=0.27.0" },
|
|
126
|
-
{ name = "langgraph-sdk", specifier = ">=0.3.
|
|
126
|
+
{ name = "langgraph-sdk", specifier = ">=0.3.15" },
|
|
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.15"
|
|
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/66/af/cdd4d6f3c05b3c1112ed3f12ef830faf15951b21d22cbc622a4becbbe25c/langgraph_sdk-0.3.15.tar.gz", hash = "sha256:29e805003d2c6e296823dd71992610976fd0428cefaa8b3304fd91f2247037de", size = 201924, upload-time = "2026-05-22T16:54:27.678Z" }
|
|
140
140
|
wheels = [
|
|
141
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
141
|
+
{ url = "https://files.pythonhosted.org/packages/be/a5/0196d9c05749c25bc198e4909d68c998bc3120297e14944921baf2f4c384/langgraph_sdk-0.3.15-py3-none-any.whl", hash = "sha256:3838773acf7456d158165385d49f48f1e856f28b56ccd99ea139a8f27004815d", size = 98166, upload-time = "2026-05-22T16:54:26.013Z" },
|
|
142
142
|
]
|
|
143
143
|
|
|
144
144
|
[[package]]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.11.0.dev7"
|
{langgraph_api-0.11.0.dev5 → langgraph_api-0.11.0.dev7}/langgraph_api/event_streaming/session.py
RENAMED
|
@@ -698,25 +698,60 @@ class EventStreamingSession:
|
|
|
698
698
|
if namespace:
|
|
699
699
|
self._register_namespaces(namespace)
|
|
700
700
|
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
#
|
|
704
|
-
#
|
|
705
|
-
#
|
|
706
|
-
#
|
|
707
|
-
|
|
701
|
+
data = params.get("data")
|
|
702
|
+
|
|
703
|
+
# Surface pending interrupts on the ``input`` channel. This branch
|
|
704
|
+
# exists for the JS sidecar (hybrid Python API + JS graph) path:
|
|
705
|
+
# the sidecar's v3 stream emits already-normalized ProtocolEvents
|
|
706
|
+
# that reach this handler, and it carries tool-raised interrupts
|
|
707
|
+
# (headless tools, human-in-the-loop) inline on ``updates`` /
|
|
708
|
+
# ``values`` events rather than on a dedicated channel. Without
|
|
709
|
+
# converting them into an ``input`` event here, the SDK renders the
|
|
710
|
+
# interrupting tool call but never learns the interrupt id, so it
|
|
711
|
+
# can't execute or resume the run. The carrier shape varies, so we
|
|
712
|
+
# accept all of them:
|
|
713
|
+
# * ``params.interrupts`` — native ValuesTransformer convention.
|
|
714
|
+
# * an ``updates`` event with ``node == "__interrupt__"`` whose
|
|
715
|
+
# ``data.values`` is the interrupt array — the JS sidecar shape.
|
|
716
|
+
# * the ``__interrupt__`` key on a ``values`` snapshot payload.
|
|
717
|
+
# ``_emit_input_requested_events`` dedupes by interrupt id, so
|
|
718
|
+
# overlapping shapes for one interrupt collapse to a single event.
|
|
719
|
+
if method == "updates":
|
|
720
|
+
update_node = params.get("node")
|
|
721
|
+
if not isinstance(update_node, str) and _is_record(data):
|
|
722
|
+
candidate = data.get("node")
|
|
723
|
+
update_node = candidate if isinstance(candidate, str) else None
|
|
724
|
+
if update_node == "__interrupt__":
|
|
725
|
+
interrupt_array = data.get("values") if _is_record(data) else None
|
|
726
|
+
await self._emit_input_requested_events(
|
|
727
|
+
namespace, normalize_input_requested_data(interrupt_array)
|
|
728
|
+
)
|
|
729
|
+
# The ``__interrupt__`` update is purely the interrupt
|
|
730
|
+
# signal, not real state — it's consumed by the ``input``
|
|
731
|
+
# channel above and must not also be forwarded as a plain
|
|
732
|
+
# ``updates`` event.
|
|
733
|
+
return
|
|
734
|
+
elif method == "values":
|
|
735
|
+
# Always strip ``__interrupt__`` from the payload so it never
|
|
736
|
+
# leaks into the forwarded ``values`` event, regardless of
|
|
737
|
+
# which carrier the interrupt also rode in on. Surface
|
|
738
|
+
# interrupts from both carriers — ``_emit_input_requested_events``
|
|
739
|
+
# dedupes by interrupt id, so a single interrupt arriving on
|
|
740
|
+
# both collapses to one event.
|
|
741
|
+
input_requests, data = strip_interrupts_from_values(data)
|
|
708
742
|
interrupts = params.get("interrupts")
|
|
709
743
|
if isinstance(interrupts, (list, tuple)) and interrupts:
|
|
710
744
|
await self._emit_input_requested_events(
|
|
711
745
|
namespace, _coerce_interrupt_requests(interrupts)
|
|
712
746
|
)
|
|
747
|
+
if input_requests:
|
|
748
|
+
await self._emit_input_requested_events(namespace, input_requests)
|
|
713
749
|
|
|
714
750
|
# Delegate envelope construction to the shared primitive. This
|
|
715
751
|
# is the unified wire-shaping step; any envelope change lives
|
|
716
752
|
# in ``_create_event`` and both paths follow.
|
|
717
753
|
raw_timestamp = params.get("timestamp")
|
|
718
754
|
timestamp = raw_timestamp if isinstance(raw_timestamp, int) else None
|
|
719
|
-
data = params.get("data")
|
|
720
755
|
|
|
721
756
|
# Forward the producing graph node on the wire envelope to keep
|
|
722
757
|
# Path 2 at parity with Path 1 (:meth:`_handle_source_event`).
|
|
@@ -130,6 +130,8 @@ STREAM_MODE_TO_PB = {
|
|
|
130
130
|
"custom": enum_stream_mode.custom,
|
|
131
131
|
"events": enum_stream_mode.events,
|
|
132
132
|
"messages-tuple": enum_stream_mode.messages_tuple,
|
|
133
|
+
"tools": enum_stream_mode.tools,
|
|
134
|
+
"lifecycle": enum_stream_mode.lifecycle,
|
|
133
135
|
}
|
|
134
136
|
|
|
135
137
|
STREAM_MODE_FROM_PB = {
|
|
@@ -383,9 +383,29 @@ const handleStream = <T extends z.ZodType<any>>(
|
|
|
383
383
|
};
|
|
384
384
|
};
|
|
385
385
|
|
|
386
|
+
// Runtime-only callbacks must never cross the checkpoint boundary. The v3
|
|
387
|
+
// stream injects a ``StreamProtocolMessagesHandler`` into ``config.callbacks``;
|
|
388
|
+
// when that config is handed to the checkpointer it is sent to Python,
|
|
389
|
+
// echoed back on the returned tuple's ``config`` / ``parent_config``, and
|
|
390
|
+
// then fails ``load()`` because the handler serializes as a
|
|
391
|
+
// ``not_implemented`` object (breaking branch / regenerate). The checkpointer
|
|
392
|
+
// only needs ``configurable`` ids, so drop ``callbacks`` before sending.
|
|
393
|
+
function stripConfigCallbacks(
|
|
394
|
+
config: RunnableConfig | undefined,
|
|
395
|
+
): RunnableConfig | undefined {
|
|
396
|
+
if (config == null || typeof config !== "object" || !("callbacks" in config))
|
|
397
|
+
return config;
|
|
398
|
+
const { callbacks: _callbacks, ...rest } = config as RunnableConfig & {
|
|
399
|
+
callbacks?: unknown;
|
|
400
|
+
};
|
|
401
|
+
return rest;
|
|
402
|
+
}
|
|
403
|
+
|
|
386
404
|
class RemoteCheckpointer extends BaseCheckpointSaver<number | string> {
|
|
387
405
|
async getTuple(config: RunnableConfig): Promise<CheckpointTuple | undefined> {
|
|
388
|
-
const result = await sendRecv("checkpointer_get_tuple", {
|
|
406
|
+
const result = await sendRecv("checkpointer_get_tuple", {
|
|
407
|
+
config: stripConfigCallbacks(config),
|
|
408
|
+
});
|
|
389
409
|
|
|
390
410
|
if (!result) return undefined;
|
|
391
411
|
return {
|
|
@@ -405,7 +425,13 @@ class RemoteCheckpointer extends BaseCheckpointSaver<number | string> {
|
|
|
405
425
|
filter?: Record<string, any>;
|
|
406
426
|
},
|
|
407
427
|
): AsyncGenerator<CheckpointTuple> {
|
|
408
|
-
const result = await sendRecv("checkpointer_list", {
|
|
428
|
+
const result = await sendRecv("checkpointer_list", {
|
|
429
|
+
config: stripConfigCallbacks(config),
|
|
430
|
+
...options,
|
|
431
|
+
...(options?.before
|
|
432
|
+
? { before: stripConfigCallbacks(options.before) }
|
|
433
|
+
: {}),
|
|
434
|
+
});
|
|
409
435
|
|
|
410
436
|
for (const item of result) {
|
|
411
437
|
yield {
|
|
@@ -425,7 +451,7 @@ class RemoteCheckpointer extends BaseCheckpointSaver<number | string> {
|
|
|
425
451
|
newVersions: ChannelVersions,
|
|
426
452
|
): Promise<RunnableConfig> {
|
|
427
453
|
return await sendRecv<RunnableConfig>("checkpointer_put", {
|
|
428
|
-
config,
|
|
454
|
+
config: stripConfigCallbacks(config),
|
|
429
455
|
checkpoint,
|
|
430
456
|
metadata,
|
|
431
457
|
new_versions: newVersions,
|
|
@@ -437,7 +463,11 @@ class RemoteCheckpointer extends BaseCheckpointSaver<number | string> {
|
|
|
437
463
|
writes: [string, unknown][],
|
|
438
464
|
taskId: string,
|
|
439
465
|
): Promise<void> {
|
|
440
|
-
await sendRecv("checkpointer_put_writes", {
|
|
466
|
+
await sendRecv("checkpointer_put_writes", {
|
|
467
|
+
config: stripConfigCallbacks(config),
|
|
468
|
+
writes,
|
|
469
|
+
taskId,
|
|
470
|
+
});
|
|
441
471
|
}
|
|
442
472
|
|
|
443
473
|
getNextVersion(
|
|
@@ -617,6 +647,12 @@ const StreamEventsPayload = z.object({
|
|
|
617
647
|
interrupt_before: z.union([z.array(z.string()), z.literal("*")]).nullish(),
|
|
618
648
|
interrupt_after: z.union([z.array(z.string()), z.literal("*")]).nullish(),
|
|
619
649
|
subgraphs: z.boolean().optional(),
|
|
650
|
+
// Selects the wire shape the worker expects back. ``"v3"`` is only sent
|
|
651
|
+
// by the Protocol v2 event-streaming endpoints and switches this handler
|
|
652
|
+
// onto LangGraphJS's native v3 stream (ProtocolEvents). Absent / ``"v2"``
|
|
653
|
+
// keeps the legacy ``on_chain_stream`` behavior used by the older
|
|
654
|
+
// streaming endpoints.
|
|
655
|
+
stream_protocol: z.enum(["v2", "v3"]).nullish(),
|
|
620
656
|
});
|
|
621
657
|
|
|
622
658
|
function reviveCommand(
|
|
@@ -713,6 +749,42 @@ async function* streamEventsRequest(
|
|
|
713
749
|
? [new LangChainTracer({ replicas })]
|
|
714
750
|
: undefined;
|
|
715
751
|
|
|
752
|
+
// Protocol v2 event-streaming runs request ``stream_protocol: "v3"``.
|
|
753
|
+
// Drive the run through LangGraphJS's native v3 stream so its
|
|
754
|
+
// StreamMux / transformer pipeline emits protocol-aligned ProtocolEvents
|
|
755
|
+
// (messages content blocks, tools, custom:* channels, checkpoints)
|
|
756
|
+
// directly. The worker forwards these straight into
|
|
757
|
+
// ``EventStreamingSession`` — none of the legacy ``on_chain_stream``
|
|
758
|
+
// reconstruction below runs. The graph's own ``streamTransformers`` are
|
|
759
|
+
// merged in automatically by ``#streamEventsV3``, so custom channels work
|
|
760
|
+
// without any per-channel patching here. Legacy endpoints fall through to
|
|
761
|
+
// the unchanged ``version: "v2"`` path so their behavior is preserved.
|
|
762
|
+
if (payload.stream_protocol === "v3") {
|
|
763
|
+
// The v3 overload forces ``streamMode``/``subgraphs`` internally and
|
|
764
|
+
// returns an awaitable ``GraphRunStream`` of ProtocolEvents. Cast away
|
|
765
|
+
// the pinned ``CompiledGraph`` typing, which may predate the v3
|
|
766
|
+
// overload depending on the installed ``@langchain/langgraph``.
|
|
767
|
+
const protocolStream = await (
|
|
768
|
+
graph as unknown as {
|
|
769
|
+
streamEvents: (
|
|
770
|
+
input: unknown,
|
|
771
|
+
options: Record<string, unknown>,
|
|
772
|
+
) => Promise<AsyncIterable<unknown>>;
|
|
773
|
+
}
|
|
774
|
+
).streamEvents(input, {
|
|
775
|
+
...config,
|
|
776
|
+
version: "v3",
|
|
777
|
+
interruptBefore,
|
|
778
|
+
interruptAfter,
|
|
779
|
+
...(callbacks ? { callbacks } : {}),
|
|
780
|
+
});
|
|
781
|
+
|
|
782
|
+
for await (const event of protocolStream) {
|
|
783
|
+
yield event;
|
|
784
|
+
}
|
|
785
|
+
return;
|
|
786
|
+
}
|
|
787
|
+
|
|
716
788
|
for await (const data of graph.streamEvents(input, {
|
|
717
789
|
...config,
|
|
718
790
|
version: "v2",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"@hono/node-server": "^1.19.13",
|
|
11
11
|
"@hono/zod-validator": "^0.7.6",
|
|
12
|
-
"@langchain/core": "^1.1.
|
|
12
|
+
"@langchain/core": "^1.1.48",
|
|
13
13
|
"@langchain/langgraph": "^1.2.6",
|
|
14
14
|
"@langchain/langgraph-api": "^1.0.3",
|
|
15
15
|
"@langchain/langgraph-checkpoint": "^1.0.0",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"dedent": "^1.7.2",
|
|
20
20
|
"esbuild": "^0.28.0",
|
|
21
21
|
"exit-hook": "^5.1.0",
|
|
22
|
-
"hono": "^4.12.
|
|
22
|
+
"hono": "^4.12.21",
|
|
23
23
|
"p-queue": "^9.0.1",
|
|
24
24
|
"p-retry": "^7.1.1",
|
|
25
25
|
"tsx": "^4.21.0",
|
|
@@ -226,6 +226,36 @@ class RemotePregel(BaseRemotePregel):
|
|
|
226
226
|
else:
|
|
227
227
|
yield StandardStreamEvent(**event)
|
|
228
228
|
|
|
229
|
+
async def astream_protocol_events(
|
|
230
|
+
self,
|
|
231
|
+
input: Any,
|
|
232
|
+
config: RunnableConfig | None = None,
|
|
233
|
+
**kwargs: Any,
|
|
234
|
+
) -> AsyncIterator[dict[str, Any]]:
|
|
235
|
+
"""Stream native Protocol v2 (``ProtocolEvent``) frames from the sidecar.
|
|
236
|
+
|
|
237
|
+
Used only for Protocol v2 event-streaming runs. Requests
|
|
238
|
+
``stream_protocol: "v3"`` so the sidecar drives the graph through
|
|
239
|
+
LangGraphJS's native v3 stream and forwards protocol-aligned events
|
|
240
|
+
(``{"type": "event", "method", "params"}``) instead of legacy
|
|
241
|
+
``on_chain_stream`` chunks. The worker feeds these straight into
|
|
242
|
+
``EventStreamingSession`` via ``normalize_protocol_event``, matching
|
|
243
|
+
the native-graph v3 path. Legacy runs keep using
|
|
244
|
+
:meth:`astream_events` (``version="v2"``).
|
|
245
|
+
"""
|
|
246
|
+
data = {
|
|
247
|
+
"graph_id": self.graph_id,
|
|
248
|
+
"graph_config": self.config,
|
|
249
|
+
"graph_name": self.name,
|
|
250
|
+
"command" if isinstance(input, Command) else "input": input,
|
|
251
|
+
"config": config,
|
|
252
|
+
"stream_protocol": "v3",
|
|
253
|
+
**kwargs,
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
async for event in _client_stream("streamEvents", data):
|
|
257
|
+
yield event
|
|
258
|
+
|
|
229
259
|
async def fetch_state_schema(self):
|
|
230
260
|
return await _client_invoke("getSchema", {"graph_id": self.graph_id})
|
|
231
261
|
|
|
@@ -241,21 +241,17 @@
|
|
|
241
241
|
"@jridgewell/resolve-uri" "^3.1.0"
|
|
242
242
|
"@jridgewell/sourcemap-codec" "^1.4.14"
|
|
243
243
|
|
|
244
|
-
"@langchain/core@^1.1.
|
|
245
|
-
version "1.1.
|
|
246
|
-
resolved "https://registry.
|
|
247
|
-
integrity sha512-
|
|
244
|
+
"@langchain/core@^1.1.48":
|
|
245
|
+
version "1.1.48"
|
|
246
|
+
resolved "https://registry.yarnpkg.com/@langchain/core/-/core-1.1.48.tgz#dfe7f6a64b0e3e79e5357ed4b402c021ee315a7f"
|
|
247
|
+
integrity sha512-fQU6Guyb1pwc2fEplmA8FPbKfOMAofjnyJzExevro0FxEiuGHE18Ov/ZHmT9trWCDTZRI9eW1VIc6aChxV8pAQ==
|
|
248
248
|
dependencies:
|
|
249
249
|
"@cfworker/json-schema" "^4.0.2"
|
|
250
250
|
"@standard-schema/spec" "^1.1.0"
|
|
251
|
-
ansi-styles "^5.0.0"
|
|
252
|
-
camelcase "6"
|
|
253
|
-
decamelize "1.2.0"
|
|
254
251
|
js-tiktoken "^1.0.12"
|
|
255
252
|
langsmith ">=0.5.0 <1.0.0"
|
|
256
253
|
mustache "^4.2.0"
|
|
257
254
|
p-queue "^6.6.2"
|
|
258
|
-
uuid "^11.1.0"
|
|
259
255
|
zod "^3.25.76 || ^4"
|
|
260
256
|
|
|
261
257
|
"@langchain/langgraph-api@^1.0.3":
|
|
@@ -833,11 +829,6 @@
|
|
|
833
829
|
convert-source-map "^2.0.0"
|
|
834
830
|
tinyrainbow "^3.1.0"
|
|
835
831
|
|
|
836
|
-
ansi-styles@^5.0.0:
|
|
837
|
-
version "5.2.0"
|
|
838
|
-
resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz"
|
|
839
|
-
integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==
|
|
840
|
-
|
|
841
832
|
assertion-error@^2.0.1:
|
|
842
833
|
version "2.0.1"
|
|
843
834
|
resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz"
|
|
@@ -887,11 +878,6 @@ bundle-name@^4.1.0:
|
|
|
887
878
|
dependencies:
|
|
888
879
|
run-applescript "^7.0.0"
|
|
889
880
|
|
|
890
|
-
camelcase@6:
|
|
891
|
-
version "6.3.0"
|
|
892
|
-
resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz"
|
|
893
|
-
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
|
|
894
|
-
|
|
895
881
|
caniuse-lite@^1.0.30001759, caniuse-lite@^1.0.30001766:
|
|
896
882
|
version "1.0.30001770"
|
|
897
883
|
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001770.tgz"
|
|
@@ -968,11 +954,6 @@ debug@^4.4.3:
|
|
|
968
954
|
dependencies:
|
|
969
955
|
ms "^2.1.3"
|
|
970
956
|
|
|
971
|
-
decamelize@1.2.0:
|
|
972
|
-
version "1.2.0"
|
|
973
|
-
resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz"
|
|
974
|
-
integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==
|
|
975
|
-
|
|
976
957
|
dedent@^1.5.3, dedent@^1.7.2:
|
|
977
958
|
version "1.7.2"
|
|
978
959
|
resolved "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz"
|
|
@@ -1152,10 +1133,10 @@ graceful-fs@^4.2.4:
|
|
|
1152
1133
|
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz"
|
|
1153
1134
|
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
|
|
1154
1135
|
|
|
1155
|
-
hono@^4.12.
|
|
1156
|
-
version "4.12.
|
|
1157
|
-
resolved "https://registry.yarnpkg.com/hono/-/hono-4.12.
|
|
1158
|
-
integrity sha512-
|
|
1136
|
+
hono@^4.12.21, hono@^4.5.4:
|
|
1137
|
+
version "4.12.21"
|
|
1138
|
+
resolved "https://registry.yarnpkg.com/hono/-/hono-4.12.21.tgz#f11846462095d365b9a8b4859b37c02cb0981df3"
|
|
1139
|
+
integrity sha512-uV63apnb0kyPtAUwoWgaGh9HyIFcv8lgmzPZSiTBQAFOFGIzka5EZ1dZocmGnn0XdX0+XTqJ6Tqv7selMuGLRQ==
|
|
1159
1140
|
|
|
1160
1141
|
icss-utils@^5.0.0, icss-utils@^5.1.0:
|
|
1161
1142
|
version "5.1.0"
|
|
@@ -1776,11 +1757,6 @@ uuid@^10.0.0:
|
|
|
1776
1757
|
resolved "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz"
|
|
1777
1758
|
integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==
|
|
1778
1759
|
|
|
1779
|
-
uuid@^11.1.0:
|
|
1780
|
-
version "11.1.0"
|
|
1781
|
-
resolved "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz"
|
|
1782
|
-
integrity sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==
|
|
1783
|
-
|
|
1784
1760
|
uuid@^13.0.0:
|
|
1785
1761
|
version "13.0.0"
|
|
1786
1762
|
resolved "https://registry.npmjs.org/uuid/-/uuid-13.0.0.tgz"
|
|
@@ -53,7 +53,11 @@ from langgraph_api.metrics_otlp import (
|
|
|
53
53
|
)
|
|
54
54
|
from langgraph_api.schema import Run, StreamMode
|
|
55
55
|
from langgraph_api.serde import json_dumpb
|
|
56
|
-
from langgraph_api.stream_v2 import
|
|
56
|
+
from langgraph_api.stream_v2 import (
|
|
57
|
+
astream_state_v2,
|
|
58
|
+
is_v2_messages_chunk,
|
|
59
|
+
normalize_protocol_event,
|
|
60
|
+
)
|
|
57
61
|
from langgraph_api.utils.config import run_in_executor
|
|
58
62
|
|
|
59
63
|
if TYPE_CHECKING:
|
|
@@ -200,6 +204,9 @@ async def astream_state(
|
|
|
200
204
|
if cmd := kwargs.pop("command"):
|
|
201
205
|
input = map_cmd(cmd)
|
|
202
206
|
stream_mode: list[StreamMode] = kwargs.pop("stream_mode")
|
|
207
|
+
# Go maps unrecognized ``StreamMode`` enum values to ``unknown``; the
|
|
208
|
+
# round-trip converts those to ``None``.
|
|
209
|
+
stream_mode = [mode for mode in stream_mode if mode is not None]
|
|
203
210
|
feedback_keys = kwargs.pop("feedback_keys", None)
|
|
204
211
|
stream_modes_set: set[StreamMode] = set(stream_mode) - {"events"}
|
|
205
212
|
# This code path runs for every run, legacy and v2. The per-run
|
|
@@ -254,7 +261,20 @@ async def astream_state(
|
|
|
254
261
|
# set up state
|
|
255
262
|
checkpoint: CheckpointPayload | None = None
|
|
256
263
|
messages: dict[str, BaseMessageChunk] = {}
|
|
257
|
-
|
|
264
|
+
# Protocol v2 runs against a remote (JS sidecar) graph drive the sidecar
|
|
265
|
+
# through LangGraphJS's native v3 stream (``stream_protocol: "v3"``) so
|
|
266
|
+
# protocol-aligned events (messages content blocks, tools, custom:*,
|
|
267
|
+
# checkpoints) arrive ready to forward — no legacy ``on_chain_stream``
|
|
268
|
+
# reconstruction. ``hasattr`` keeps any other ``BaseRemotePregel`` impl on
|
|
269
|
+
# the legacy path. Legacy stream endpoints keep ``version="v2"``.
|
|
270
|
+
use_remote_v3 = (
|
|
271
|
+
event_streaming_v2_run
|
|
272
|
+
and is_remote_pregel
|
|
273
|
+
and hasattr(graph, "astream_protocol_events")
|
|
274
|
+
)
|
|
275
|
+
use_astream_events = (
|
|
276
|
+
"events" in stream_mode or is_remote_pregel
|
|
277
|
+
) and not use_remote_v3
|
|
258
278
|
use_stream_events_v3 = (
|
|
259
279
|
event_streaming_v2_run and not use_astream_events and not is_remote_pregel
|
|
260
280
|
)
|
|
@@ -429,6 +449,37 @@ async def astream_state(
|
|
|
429
449
|
on_task_result=on_task_result,
|
|
430
450
|
):
|
|
431
451
|
yield ev
|
|
452
|
+
elif use_remote_v3:
|
|
453
|
+
# Remote (JS) graph under Protocol v2: consume native v3
|
|
454
|
+
# ProtocolEvents from the sidecar and forward them exactly like the
|
|
455
|
+
# native-graph v3 path (``astream_state_v2``) does, so the
|
|
456
|
+
# ``EventStreamingSession`` normalization is identical regardless of
|
|
457
|
+
# graph language.
|
|
458
|
+
if USE_RUNTIME_CONTEXT_API:
|
|
459
|
+
kwargs["context"] = context
|
|
460
|
+
async with (
|
|
461
|
+
stack,
|
|
462
|
+
aclosing(
|
|
463
|
+
graph.astream_protocol_events(
|
|
464
|
+
input,
|
|
465
|
+
config,
|
|
466
|
+
stream_mode=list(stream_modes_set),
|
|
467
|
+
**kwargs,
|
|
468
|
+
)
|
|
469
|
+
) as stream,
|
|
470
|
+
):
|
|
471
|
+
sentinel = object()
|
|
472
|
+
while True:
|
|
473
|
+
event = await wait_if_not_done(anext(stream, sentinel), done)
|
|
474
|
+
if event is sentinel:
|
|
475
|
+
break
|
|
476
|
+
normalized = normalize_protocol_event(
|
|
477
|
+
cast("dict", event),
|
|
478
|
+
on_checkpoint=on_checkpoint,
|
|
479
|
+
on_task_result=on_task_result,
|
|
480
|
+
)
|
|
481
|
+
if normalized is not None:
|
|
482
|
+
yield normalized
|
|
432
483
|
else:
|
|
433
484
|
output_keys = kwargs.pop("output_keys", graph.output_channels)
|
|
434
485
|
if USE_RUNTIME_CONTEXT_API:
|
|
@@ -87,6 +87,59 @@ def coerce_stream_transformer_factory(
|
|
|
87
87
|
)
|
|
88
88
|
|
|
89
89
|
|
|
90
|
+
def normalize_protocol_event(
|
|
91
|
+
event: Any,
|
|
92
|
+
*,
|
|
93
|
+
on_checkpoint: Callable[[CheckpointPayload | None], None],
|
|
94
|
+
on_task_result: Callable[[TaskResultPayload], None],
|
|
95
|
+
) -> tuple[str, dict] | None:
|
|
96
|
+
"""Convert one native v3 ``ProtocolEvent`` into a ``(name, event)`` pair.
|
|
97
|
+
|
|
98
|
+
Shared by the native-graph path (``astream_state_v2``) and the remote
|
|
99
|
+
(JS sidecar) path in :mod:`langgraph_api.stream`. Both receive the same
|
|
100
|
+
``{"type": "event", "method", "params"}`` ProtocolEvent shape — for
|
|
101
|
+
native graphs from ``langgraph``'s v3 stream, for remote graphs from the
|
|
102
|
+
sidecar's ``streamEvents`` v3 mode — so the per-event handling lives in
|
|
103
|
+
one place.
|
|
104
|
+
|
|
105
|
+
Returns ``None`` when the event should be dropped (e.g. a legacy
|
|
106
|
+
``messages`` shape that Protocol v2 does not reconstruct). Side effects:
|
|
107
|
+
feeds checkpoint / task_result frames into ``on_checkpoint`` /
|
|
108
|
+
``on_task_result`` so retention + persistence hooks still fire under v2.
|
|
109
|
+
"""
|
|
110
|
+
# Local import to avoid a circular ``stream <-> stream_v2`` cycle.
|
|
111
|
+
from langgraph_api.stream import _preprocess_debug_checkpoint # noqa: PLC0415
|
|
112
|
+
|
|
113
|
+
event = cast("dict", event)
|
|
114
|
+
method = event.get("method", "")
|
|
115
|
+
params = event.get("params") or {}
|
|
116
|
+
namespace = params.get("namespace") or []
|
|
117
|
+
if method == "debug":
|
|
118
|
+
chunk = params.get("data") or {}
|
|
119
|
+
if isinstance(chunk, dict):
|
|
120
|
+
if chunk.get("type") == "checkpoint":
|
|
121
|
+
checkpoint = _preprocess_debug_checkpoint(chunk.get("payload"))
|
|
122
|
+
chunk["payload"] = checkpoint
|
|
123
|
+
on_checkpoint(checkpoint)
|
|
124
|
+
elif chunk.get("type") == "task_result":
|
|
125
|
+
on_task_result(chunk.get("payload"))
|
|
126
|
+
# Protocol v2 only forwards native content-block-shaped messages;
|
|
127
|
+
# legacy whole-message/chunk tuples are for the old endpoints and are
|
|
128
|
+
# intentionally ignored here.
|
|
129
|
+
if method == "messages":
|
|
130
|
+
raw_data = params.get("data")
|
|
131
|
+
payload = normalize_v2_messages_data(raw_data)
|
|
132
|
+
if payload is None:
|
|
133
|
+
return None
|
|
134
|
+
if payload is not raw_data:
|
|
135
|
+
params = {**params, "data": payload}
|
|
136
|
+
event = {**event, "params": params}
|
|
137
|
+
# Carry the namespace in the stream event name so ``parse_event_name``
|
|
138
|
+
# in ``session.py`` can recover it, matching the raw ``astream`` path.
|
|
139
|
+
ns_suffix = f"|{'|'.join(namespace)}" if namespace else ""
|
|
140
|
+
return f"{method}{ns_suffix}", event
|
|
141
|
+
|
|
142
|
+
|
|
90
143
|
def is_v2_messages_chunk(chunk: Any) -> bool:
|
|
91
144
|
"""Heuristically detect a ``StreamMessagesHandlerV2`` chunk.
|
|
92
145
|
|
|
@@ -131,10 +184,9 @@ async def astream_state_v2(
|
|
|
131
184
|
StreamTransformer,
|
|
132
185
|
)
|
|
133
186
|
|
|
134
|
-
# Local
|
|
187
|
+
# Local import to avoid a circular ``stream <-> stream_v2`` cycle and
|
|
135
188
|
# keep this module's import graph small.
|
|
136
189
|
from langgraph_api.graph import GRAPH_STREAM_TRANSFORMERS # noqa: PLC0415
|
|
137
|
-
from langgraph_api.stream import _preprocess_debug_checkpoint # noqa: PLC0415
|
|
138
190
|
|
|
139
191
|
user_transformers: list[Any] | None = None
|
|
140
192
|
factory = GRAPH_STREAM_TRANSFORMERS.get(configurable.get("graph_id"))
|
|
@@ -191,34 +243,10 @@ async def astream_state_v2(
|
|
|
191
243
|
event = await wait_if_not_done(anext(iterator, sentinel), done)
|
|
192
244
|
if event is sentinel:
|
|
193
245
|
break
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
chunk = params.get("data") or {}
|
|
202
|
-
if isinstance(chunk, dict):
|
|
203
|
-
if chunk.get("type") == "checkpoint":
|
|
204
|
-
checkpoint = _preprocess_debug_checkpoint(chunk.get("payload"))
|
|
205
|
-
chunk["payload"] = checkpoint
|
|
206
|
-
on_checkpoint(checkpoint)
|
|
207
|
-
elif chunk.get("type") == "task_result":
|
|
208
|
-
on_task_result(chunk.get("payload"))
|
|
209
|
-
# Protocol v2 only forwards native content-block-shaped
|
|
210
|
-
# messages; legacy whole-message/chunk tuples are for the
|
|
211
|
-
# old endpoints and are intentionally ignored here.
|
|
212
|
-
if method == "messages":
|
|
213
|
-
raw_data = params.get("data")
|
|
214
|
-
payload = normalize_v2_messages_data(raw_data)
|
|
215
|
-
if payload is None:
|
|
216
|
-
continue
|
|
217
|
-
if payload is not raw_data:
|
|
218
|
-
params = {**params, "data": payload}
|
|
219
|
-
event = {**event, "params": params}
|
|
220
|
-
# Carry the namespace in the stream event name so
|
|
221
|
-
# ``parse_event_name`` in ``session.py`` can recover it,
|
|
222
|
-
# matching the raw ``astream`` path.
|
|
223
|
-
ns_suffix = f"|{'|'.join(namespace)}" if namespace else ""
|
|
224
|
-
yield f"{method}{ns_suffix}", event
|
|
246
|
+
normalized = normalize_protocol_event(
|
|
247
|
+
event,
|
|
248
|
+
on_checkpoint=on_checkpoint,
|
|
249
|
+
on_task_result=on_task_result,
|
|
250
|
+
)
|
|
251
|
+
if normalized is not None:
|
|
252
|
+
yield normalized
|