langgraph-api 0.9.0.dev3__tar.gz → 0.9.0.dev5__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.9.0.dev3 → langgraph_api-0.9.0.dev5}/Makefile +18 -3
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/PKG-INFO +1 -1
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/continuous/uv.lock +3 -3
- langgraph_api-0.9.0.dev5/langgraph_api/__init__.py +1 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/config/schemas.py +26 -2
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/grpc/ops/crons.py +5 -1
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/grpc/ops/runs.py +4 -3
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/webhook.py +25 -3
- langgraph_api-0.9.0.dev3/langgraph_api/__init__.py +0 -1
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/.gitignore +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/LICENSE +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/README.md +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/.gitignore +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/Makefile +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/README.md +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/benchmark-runners/assistant.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/benchmark-runners/benchmark-runner.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/benchmark-runners/benchmark_profiles.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/benchmark-runners/benchmarks.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/benchmark-runners/cancel_first_second_completes.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/benchmark-runners/enqueued_runs_order.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/benchmark-runners/log-failure.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/benchmark-runners/meta_workload.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/benchmark-runners/stream_write.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/benchmark-runners/thread.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/benchmark-runners/thread_runs_metadata_search.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/benchmark-runners/threads_search_metadata.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/benchmark-runners/types.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/benchmark-runners/wait_write.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/capacity_dd_report.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/capacity_k6.js +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/capacity_runner.mjs +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/capacity_slack_report.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/capacity_urls.mjs +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/clean-cli.js +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/clean.js +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/continuous/README.md +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/continuous/pyproject.toml +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/continuous/runner.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/graphs.js +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/mixed_workload_k6.js +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/mixed_workload_runner.mjs +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/package.json +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/ramp.js +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/reporting/dd_reporting.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/reporting/slack_slowest_runs.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/reporting/slack_summary.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/run_local.sh +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/staircase.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/staircase_step_k6.js +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/tsconfig.json +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/update-revision.js +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/weather.js +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/constraints.txt +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/custom_store.sql +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/forbidden.txt +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/hatch_build.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/healthcheck.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph-cloud-debugging-20260210132856.zip +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/_checkpointer/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/_checkpointer/_adapter.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/_checkpointer/protocol.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/_factory_utils.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/api/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/api/a2a.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/api/assistants.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/api/event_streaming.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/api/mcp/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/api/mcp/_constants.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/api/mcp/_handlers.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/api/mcp/_models.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/api/mcp/_routes.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/api/mcp/_sanitizers.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/api/meta.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/api/openapi.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/api/profile.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/api/runs.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/api/store.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/api/threads.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/api/ui.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/asgi_transport.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/asyncio.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/auth/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/auth/custom.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/auth/errors.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/auth/langsmith/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/auth/langsmith/backend.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/auth/langsmith/client.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/auth/middleware.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/auth/noop.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/auth/studio_user.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/cache.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/cli.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/command.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/config/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/config/_parse.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/cron_scheduler.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/encryption/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/encryption/aes_json.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/encryption/context.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/encryption/custom.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/encryption/middleware.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/encryption/shared.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/errors.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/event_streaming/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/event_streaming/capabilities.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/event_streaming/constants.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/event_streaming/event_normalizers.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/event_streaming/namespace.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/event_streaming/service.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/event_streaming/session.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/event_streaming/state_normalizers.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/event_streaming/types.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/feature_flags.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/graph.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/grpc/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/grpc/client.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/grpc/generated/core_api_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/grpc/ops/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/grpc/ops/assistants.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/grpc/ops/cache.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/grpc/ops/threads.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/grpc/server.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/grpc/servicers/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/grpc/servicers/checkpointer.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/grpc/servicers/encryption.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/http.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/http_metrics.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/http_metrics_utils.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/js/.gitignore +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/js/.prettierrc +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/js/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/js/base.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/js/build.mts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/js/client.http.mts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/js/client.mts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/js/errors.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/js/global.d.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/js/package.json +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/js/remote.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/js/schema.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/js/src/graph.mts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/js/src/load.hooks.mjs +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/js/src/preload.mjs +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/js/src/utils/experiment-tracing.mts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/js/src/utils/files.mts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/js/src/utils/importMap.mts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/js/src/utils/serde.mts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/js/sse.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/js/traceblock.mts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/js/tsconfig.json +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/js/ui.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/js/yarn.lock +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/lc_security/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/lc_security/exceptions.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/lc_security/policy.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/lc_security/transport.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/logging.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/metadata.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/metrics_datadog.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/middleware/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/middleware/ensure_store.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/middleware/http_logger.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/middleware/private_network.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/middleware/request_id.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/models/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/models/run.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/otel_context.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/patch.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/queue_entrypoint.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/release_tags.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/route.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/schema.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/self_hosted_logs.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/self_hosted_metrics.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/serde.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/server.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/sse.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/state.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/store.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/stream.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/stream_v2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/timing/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/timing/profiler.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/timing/timer.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/traceblock.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/tunneling/cloudflare.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/utils/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/utils/cache.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/utils/config.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/utils/errors.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/utils/extract.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/utils/future.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/utils/headers.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/utils/network.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/utils/retriable_client.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/utils/stream_codec.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/utils/uuids.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/validation.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/worker.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/checkpointer.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/conversion/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/conversion/_compat.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/conversion/checkpoint.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/conversion/config.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/conversion/durability.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/conversion/struct.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/conversion/value.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/checkpointer_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/checkpointer_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/core_api_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/core_api_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/core_api_pb2_grpc.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/core_api_pb2_grpc.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/encryption_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/encryption_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/encryption_pb2_grpc.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/encryption_pb2_grpc.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/engine_common_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/engine_common_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/engine_common_pb2_grpc.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/engine_common_pb2_grpc.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_control_signal_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_control_signal_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_durability_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_durability_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_run_status_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_run_status_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_stream_mode_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_stream_mode_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_thread_status_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_thread_status_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/errors_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/errors_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/errors_pb2_grpc.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/proto/errors_pb2_grpc.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_grpc_common/serde.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_license/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_license/validation.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_runtime/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_runtime/checkpoint.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_runtime/database.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_runtime/lifespan.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_runtime/metrics.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_runtime/ops.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_runtime/queue.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_runtime/retry.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_runtime/routes.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_runtime/store.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/logging.json +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/openapi.json +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/pyproject.toml +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/scripts/build_wheel.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/scripts/create_license.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/scripts/run_a2a_tck.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/uv.lock +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
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
|
|
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 test-auth-read-only-assistant
|
|
2
2
|
|
|
3
3
|
# Environment variables
|
|
4
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", "delta_channel": "./tests/graphs/delta_channel.py:graph", "delta_channel_freq": "./tests/graphs/delta_channel_freq.py:graph", "delta_channel_files": "./tests/graphs/delta_channel_files.py:graph", "delta_channel_files_freq": "./tests/graphs/delta_channel_files_freq.py:graph", "delta_channel_legacy": "./tests/graphs/delta_channel_migration.py:graph_legacy", "delta_channel_delta": "./tests/graphs/delta_channel_migration.py:graph_delta", "delta_channel_messages_freq": "./tests/graphs/delta_channel_messages.py:graph_freq", "delta_channel_messages": "./tests/graphs/delta_channel_messages.py:graph", "delta_channel_messages_legacy": "./tests/graphs/delta_channel_messages.py:graph_legacy", "delta_channel_messages_remove": "./tests/graphs/delta_channel_messages.py:graph_remove", "delta_channel_messages_update": "./tests/graphs/delta_channel_messages.py:graph_update", "delta_channel_messages_delta": "./tests/graphs/delta_channel_messages.py:graph_delta"}'
|
|
@@ -71,6 +71,19 @@ else
|
|
|
71
71
|
HTTP_CONFIG := $(LANGGRAPH_HTTP)
|
|
72
72
|
endif
|
|
73
73
|
|
|
74
|
+
# Dev/test default: opt in to loopback + http webhooks.
|
|
75
|
+
# ``test_custom_route`` etc use relative URLs to dispatch to my_router.py;
|
|
76
|
+
# ``test_join_*`` / ``test_webhook_payload_on_timeouts`` / ``test_cron_*``
|
|
77
|
+
# and the shutdown suite use ``http://localhost:{port}/webhook`` to a
|
|
78
|
+
# pytest httpserver fixture — all of these are blocked by the secure
|
|
79
|
+
# ``disable_loopback`` default (GHSA-q3v5-r5ch-p57j), and
|
|
80
|
+
# ``require_https`` defaults to true once any webhooks.url block is
|
|
81
|
+
# present, so explicitly disable it for the http httpserver fixture.
|
|
82
|
+
# Production deployers don't use these Makefiles. Override with
|
|
83
|
+
# ``LANGGRAPH_WEBHOOKS=...`` on the command line to exercise the secure
|
|
84
|
+
# default during local development.
|
|
85
|
+
LANGGRAPH_WEBHOOKS ?= {"url": {"disable_loopback": false, "require_https": false}}
|
|
86
|
+
|
|
74
87
|
LANGGRAPH_STORE ?= ""
|
|
75
88
|
ifeq ($(LANGGRAPH_STORE),custom)
|
|
76
89
|
STORE_CONFIG := {"path": "./tests/graphs/custom_store.py:generate_store"}
|
|
@@ -93,10 +106,10 @@ REVISION ?= $(shell git rev-parse --short HEAD)
|
|
|
93
106
|
LANGGRAPH_ENCRYPTION ?=
|
|
94
107
|
|
|
95
108
|
test-license-oss:
|
|
96
|
-
LANGGRAPH_RUNTIME_EDITION=inmem LANGGRAPH_HTTP='$(HTTP_CONFIG)' LANGGRAPH_STORE='$(STORE_CONFIG)' LANGGRAPH_CHECKPOINTER='$(CHECKPOINTER_CONFIG)' LANGGRAPH_ENCRYPTION='$(LANGGRAPH_ENCRYPTION)' REDIS_URI=_FAKE DATABASE_URI=:memory: MIGRATIONS_PATH=__inmem__ uv run pytest -v $(XDIST_ARGS) $(TEST)
|
|
109
|
+
LANGGRAPH_RUNTIME_EDITION=inmem LANGGRAPH_WEBHOOKS='$(LANGGRAPH_WEBHOOKS)' LANGGRAPH_HTTP='$(HTTP_CONFIG)' LANGGRAPH_STORE='$(STORE_CONFIG)' LANGGRAPH_CHECKPOINTER='$(CHECKPOINTER_CONFIG)' LANGGRAPH_ENCRYPTION='$(LANGGRAPH_ENCRYPTION)' REDIS_URI=_FAKE DATABASE_URI=:memory: MIGRATIONS_PATH=__inmem__ uv run pytest -v $(XDIST_ARGS) $(TEST)
|
|
97
110
|
|
|
98
111
|
test-watch-oss:
|
|
99
|
-
LANGGRAPH_RUNTIME_EDITION=inmem LANGGRAPH_HTTP='$(HTTP_CONFIG)' LANGGRAPH_ENCRYPTION='$(LANGGRAPH_ENCRYPTION)' REDIS_URI=_FAKE DATABASE_URI=:memory: MIGRATIONS_PATH=__inmem__ uv run --no-sync ptw . -- -x -vv --ff --capture=no $(TEST)
|
|
112
|
+
LANGGRAPH_RUNTIME_EDITION=inmem LANGGRAPH_WEBHOOKS='$(LANGGRAPH_WEBHOOKS)' LANGGRAPH_HTTP='$(HTTP_CONFIG)' LANGGRAPH_ENCRYPTION='$(LANGGRAPH_ENCRYPTION)' REDIS_URI=_FAKE DATABASE_URI=:memory: MIGRATIONS_PATH=__inmem__ uv run --no-sync ptw . -- -x -vv --ff --capture=no $(TEST)
|
|
100
113
|
|
|
101
114
|
test: test-license-oss
|
|
102
115
|
test-watch: test-watch-oss
|
|
@@ -159,6 +172,7 @@ LANGSMITH_TRACING ?= false
|
|
|
159
172
|
|
|
160
173
|
start:
|
|
161
174
|
LANGGRAPH_DISABLE_FILE_PERSISTENCE=$(LANGGRAPH_DISABLE_FILE_PERSISTENCE) \
|
|
175
|
+
LANGGRAPH_WEBHOOKS='$(LANGGRAPH_WEBHOOKS)' \
|
|
162
176
|
LANGGRAPH_HTTP='$(HTTP_CONFIG)' \
|
|
163
177
|
LANGGRAPH_RUNTIME_EDITION=inmem \
|
|
164
178
|
LANGGRAPH_AES_KEY='$(LANGGRAPH_AES_KEY)' \
|
|
@@ -186,6 +200,7 @@ start:
|
|
|
186
200
|
start-license-oss: start
|
|
187
201
|
|
|
188
202
|
start-encrypt:
|
|
203
|
+
LANGGRAPH_WEBHOOKS='$(LANGGRAPH_WEBHOOKS)' \
|
|
189
204
|
LANGGRAPH_HTTP='$(HTTP_CONFIG)' \
|
|
190
205
|
LANGGRAPH_RUNTIME_EDITION=inmem \
|
|
191
206
|
LANGGRAPH_AES_KEY='$(LANGGRAPH_AES_KEY)' \
|
|
@@ -98,11 +98,11 @@ wheels = [
|
|
|
98
98
|
|
|
99
99
|
[[package]]
|
|
100
100
|
name = "idna"
|
|
101
|
-
version = "3.
|
|
101
|
+
version = "3.15"
|
|
102
102
|
source = { registry = "https://pypi.org/simple" }
|
|
103
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
103
|
+
sdist = { url = "https://files.pythonhosted.org/packages/82/77/7b3966d0b9d1d31a36ddf1746926a11dface89a83409bf1483f0237aa758/idna-3.15.tar.gz", hash = "sha256:ca962446ea538f7092a95e057da437618e886f4d349216d2b1e294abfdb65fdc", size = 199245, upload-time = "2026-05-12T22:45:57.011Z" }
|
|
104
104
|
wheels = [
|
|
105
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
105
|
+
{ url = "https://files.pythonhosted.org/packages/d2/23/408243171aa9aaba178d3e2559159c24c1171a641aa83b67bdd3394ead8e/idna-3.15-py3-none-any.whl", hash = "sha256:048adeaf8c2d788c40fee287673ccaa74c24ffd8dcf09ffa555a2fbb59f10ac8", size = 72340, upload-time = "2026-05-12T22:45:55.733Z" },
|
|
106
106
|
]
|
|
107
107
|
|
|
108
108
|
[[package]]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.9.0.dev5"
|
|
@@ -386,7 +386,26 @@ class WebhookUrlPolicy(TypedDict, total=False):
|
|
|
386
386
|
max_url_length: int
|
|
387
387
|
"""Maximum permitted URL length in characters; longer inputs are rejected early."""
|
|
388
388
|
disable_loopback: bool
|
|
389
|
-
"""Disallow
|
|
389
|
+
"""Disallow loopback-flavored webhook targets when true. Defaults to true.
|
|
390
|
+
|
|
391
|
+
Covers all of:
|
|
392
|
+
- Relative URLs (e.g. ``/internal/hook``) that would dispatch via the
|
|
393
|
+
in-process ASGI loopback transport at ``root_path="/noauth"``. These
|
|
394
|
+
bypass authentication and were the auth-bypass primitive behind
|
|
395
|
+
GHSA-q3v5-r5ch-p57j.
|
|
396
|
+
- Absolute URLs whose hostname is ``localhost`` / ``localhost.localdomain``
|
|
397
|
+
/ ``host.docker.internal``.
|
|
398
|
+
- Absolute URLs that DNS-resolve into the IPv4 loopback range
|
|
399
|
+
(``127.0.0.0/8``) or IPv6 loopback (``::1/128``) — including
|
|
400
|
+
DNS-rebinding-style attacks where an arbitrary hostname resolves to
|
|
401
|
+
a loopback IP.
|
|
402
|
+
|
|
403
|
+
Operators who intentionally route webhooks to in-process routes
|
|
404
|
+
(e.g. for local development with ``langgraph dev``, or single-host
|
|
405
|
+
docker-compose setups dispatching to ``host.docker.internal``) can
|
|
406
|
+
set this to ``false`` to restore the pre-GHSA behavior. Only do this
|
|
407
|
+
when you control all routes that loopback webhooks can reach.
|
|
408
|
+
"""
|
|
390
409
|
disable_private_ips: bool
|
|
391
410
|
"""Block RFC 1918 / CGN private IP ranges as webhook targets when true.
|
|
392
411
|
|
|
@@ -426,7 +445,12 @@ def _validate_url_policy(
|
|
|
426
445
|
if "max_url_length" not in policy:
|
|
427
446
|
policy["max_url_length"] = 2048
|
|
428
447
|
if "disable_loopback" not in policy:
|
|
429
|
-
|
|
448
|
+
# Secure default — covers GHSA-q3v5-r5ch-p57j (relative-URL ASGI
|
|
449
|
+
# loopback auth bypass) and the broader SSRF surface that the same
|
|
450
|
+
# flag governs via SSRFPolicy.block_localhost. Mirrored at the
|
|
451
|
+
# webhook.py read site so deployments without any webhooks block
|
|
452
|
+
# also get the safe default.
|
|
453
|
+
policy["disable_loopback"] = True
|
|
430
454
|
if "disable_private_ips" not in policy:
|
|
431
455
|
policy["disable_private_ips"] = False
|
|
432
456
|
return policy
|
|
@@ -230,10 +230,14 @@ class Crons(Authenticated):
|
|
|
230
230
|
|
|
231
231
|
assistant_filters: list[Any] = []
|
|
232
232
|
if payload["assistant_id"] not in SYSTEM_ASSISTANT_IDS:
|
|
233
|
+
# Do not populate `metadata` on the AssistantsRead request value:
|
|
234
|
+
# client-supplied cron metadata must not influence the auth
|
|
235
|
+
# decision (defense vs. forged payloads), mirroring Runs.put.
|
|
236
|
+
# The handler is expected to return a filter that is matched
|
|
237
|
+
# against the persisted assistant metadata server-side.
|
|
233
238
|
assistant_request_data = Auth.types.AssistantsRead(
|
|
234
239
|
assistant_id=str(payload["assistant_id"])
|
|
235
240
|
)
|
|
236
|
-
assistant_request_data["metadata"] = metadata
|
|
237
241
|
assistant_filters = await Assistants.handle_event(
|
|
238
242
|
ctx, "read", assistant_request_data
|
|
239
243
|
)
|
|
@@ -610,18 +610,19 @@ class Runs(Authenticated):
|
|
|
610
610
|
create_run_value,
|
|
611
611
|
)
|
|
612
612
|
# Automatically enforce assistant ownership for non-system assistants
|
|
613
|
-
# by calling the user's assistant
|
|
613
|
+
# by calling the user's assistant read auth handler.
|
|
614
614
|
assistant_auth_filters: list[pb.AuthFilter] = []
|
|
615
615
|
if str(assistant_id) not in SYSTEM_ASSISTANT_IDS:
|
|
616
616
|
ctx_ = ctx or get_auth_ctx()
|
|
617
617
|
if ctx_ is not None:
|
|
618
618
|
auth_ctx = Auth.types.AuthContext(
|
|
619
619
|
resource="assistants",
|
|
620
|
-
action="
|
|
620
|
+
action="read",
|
|
621
621
|
user=ctx_.user,
|
|
622
622
|
permissions=ctx_.permissions,
|
|
623
623
|
)
|
|
624
|
-
|
|
624
|
+
read_value = Auth.types.AssistantsRead(assistant_id=str(assistant_id))
|
|
625
|
+
raw = await auth_handle_event(auth_ctx, read_value)
|
|
625
626
|
if raw:
|
|
626
627
|
assistant_auth_filters = _filters_to_proto(raw)
|
|
627
628
|
|
|
@@ -79,7 +79,14 @@ def _get_webhook_config() -> _WebhookConfig:
|
|
|
79
79
|
exact_allowed = frozenset(exact_hosts)
|
|
80
80
|
|
|
81
81
|
disable_private_ips = bool(policy_cfg.get("disable_private_ips", False))
|
|
82
|
-
|
|
82
|
+
# Loopback webhooks are denied by default (covers relative URLs that
|
|
83
|
+
# would dispatch through the in-process ASGI client at root_path=/noauth,
|
|
84
|
+
# plus localhost / 127.x / ::1 / host.docker.internal absolute URLs,
|
|
85
|
+
# plus any hostname that DNS-resolves into the loopback range). This is
|
|
86
|
+
# the fix for GHSA-q3v5-r5ch-p57j: relative-URL webhooks were the auth
|
|
87
|
+
# bypass primitive, and the localhost/loopback IP variants are the
|
|
88
|
+
# broader SSRF surface that the same flag governs via SSRFPolicy.
|
|
89
|
+
disable_loopback = bool(policy_cfg.get("disable_loopback", True))
|
|
83
90
|
|
|
84
91
|
return _WebhookConfig(
|
|
85
92
|
allowed_domains=allowed_domains,
|
|
@@ -111,11 +118,26 @@ async def validate_webhook_url_or_raise(url: str) -> None:
|
|
|
111
118
|
if len(url) > wh.max_url_length:
|
|
112
119
|
raise HTTPException(status_code=422, detail="Webhook URL too long")
|
|
113
120
|
|
|
114
|
-
# Relative loopback URL (internal route) —
|
|
121
|
+
# Relative loopback URL (internal route) — dispatched via an in-process
|
|
122
|
+
# ASGI client that mounts under root_path="/noauth", which the auth
|
|
123
|
+
# middleware treats as an auth-bypass marker. Denied by default so a
|
|
124
|
+
# user-supplied webhook URL cannot be turned into an unauthenticated
|
|
125
|
+
# call against the server's own routes (GHSA-q3v5-r5ch-p57j). Operators
|
|
126
|
+
# who intentionally route webhooks to in-process routes can opt back in
|
|
127
|
+
# by setting webhooks.url.disable_loopback to false.
|
|
115
128
|
if url.startswith("/"):
|
|
116
129
|
if wh.disable_loopback:
|
|
117
130
|
raise HTTPException(
|
|
118
|
-
status_code=422,
|
|
131
|
+
status_code=422,
|
|
132
|
+
detail=(
|
|
133
|
+
"Loopback webhooks (relative URLs and localhost) are "
|
|
134
|
+
"disabled by default. They bypass authentication via the "
|
|
135
|
+
"in-process ASGI transport and can be abused to invoke "
|
|
136
|
+
"internal routes as an unauthenticated caller. Set "
|
|
137
|
+
"webhooks.url.disable_loopback to false (in langgraph.json "
|
|
138
|
+
"or via LANGGRAPH_WEBHOOKS) to opt back in — only do so "
|
|
139
|
+
"when you control the mounted routes."
|
|
140
|
+
),
|
|
119
141
|
)
|
|
120
142
|
return
|
|
121
143
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.9.0.dev3"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/benchmark-runners/assistant.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/benchmark-runners/benchmarks.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/benchmark-runners/log-failure.ts
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/benchmark-runners/meta_workload.ts
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/benchmark-runners/stream_write.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/benchmark-runners/wait_write.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/benchmark/reporting/slack_slowest_runs.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph-cloud-debugging-20260210132856.zip
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/_checkpointer/__init__.py
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/_checkpointer/_adapter.py
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/_checkpointer/protocol.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/auth/langsmith/__init__.py
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/auth/langsmith/backend.py
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/auth/langsmith/client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/encryption/middleware.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/event_streaming/__init__.py
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/event_streaming/capabilities.py
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/event_streaming/constants.py
RENAMED
|
File without changes
|
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/event_streaming/namespace.py
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/event_streaming/service.py
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/event_streaming/session.py
RENAMED
|
File without changes
|
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/event_streaming/types.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/grpc/generated/core_api_pb2.pyi
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/grpc/servicers/__init__.py
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/grpc/servicers/checkpointer.py
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/grpc/servicers/encryption.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/js/src/utils/importMap.mts
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev5}/langgraph_api/js/src/utils/pythonSchemas.mts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|