langgraph-api 0.9.0.dev3__tar.gz → 0.9.0.dev4__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.dev4}/Makefile +17 -2
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/PKG-INFO +1 -1
- langgraph_api-0.9.0.dev4/langgraph_api/__init__.py +1 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/config/schemas.py +26 -2
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/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.dev4}/.gitignore +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/LICENSE +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/README.md +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/.gitignore +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/Makefile +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/README.md +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/benchmark-runners/assistant.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/benchmark-runners/benchmark-runner.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/benchmark-runners/benchmark_profiles.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/benchmark-runners/benchmarks.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/benchmark-runners/cancel_first_second_completes.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/benchmark-runners/enqueued_runs_order.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/benchmark-runners/log-failure.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/benchmark-runners/meta_workload.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/benchmark-runners/stream_write.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/benchmark-runners/thread.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/benchmark-runners/thread_runs_metadata_search.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/benchmark-runners/threads_search_metadata.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/benchmark-runners/types.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/benchmark-runners/wait_write.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/capacity_dd_report.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/capacity_k6.js +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/capacity_runner.mjs +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/capacity_slack_report.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/capacity_urls.mjs +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/clean-cli.js +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/clean.js +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/continuous/README.md +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/continuous/pyproject.toml +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/continuous/runner.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/continuous/uv.lock +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/graphs.js +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/mixed_workload_k6.js +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/mixed_workload_runner.mjs +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/package.json +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/ramp.js +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/reporting/dd_reporting.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/reporting/slack_slowest_runs.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/reporting/slack_summary.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/run_local.sh +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/staircase.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/staircase_step_k6.js +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/tsconfig.json +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/update-revision.js +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/weather.js +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/constraints.txt +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/custom_store.sql +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/forbidden.txt +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/hatch_build.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/healthcheck.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph-cloud-debugging-20260210132856.zip +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/_checkpointer/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/_checkpointer/_adapter.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/_checkpointer/protocol.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/_factory_utils.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/api/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/api/a2a.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/api/assistants.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/api/event_streaming.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/api/mcp/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/api/mcp/_constants.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/api/mcp/_handlers.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/api/mcp/_models.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/api/mcp/_routes.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/api/mcp/_sanitizers.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/api/meta.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/api/openapi.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/api/profile.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/api/runs.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/api/store.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/api/threads.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/api/ui.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/asgi_transport.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/asyncio.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/auth/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/auth/custom.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/auth/errors.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/auth/langsmith/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/auth/langsmith/backend.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/auth/langsmith/client.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/auth/middleware.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/auth/noop.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/auth/studio_user.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/cache.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/cli.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/command.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/config/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/config/_parse.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/cron_scheduler.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/encryption/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/encryption/aes_json.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/encryption/context.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/encryption/custom.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/encryption/middleware.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/encryption/shared.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/errors.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/event_streaming/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/event_streaming/capabilities.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/event_streaming/constants.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/event_streaming/event_normalizers.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/event_streaming/namespace.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/event_streaming/service.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/event_streaming/session.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/event_streaming/state_normalizers.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/event_streaming/types.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/feature_flags.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/graph.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/grpc/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/grpc/client.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/grpc/generated/core_api_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/grpc/ops/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/grpc/ops/assistants.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/grpc/ops/cache.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/grpc/ops/crons.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/grpc/ops/runs.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/grpc/ops/threads.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/grpc/server.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/grpc/servicers/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/grpc/servicers/checkpointer.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/grpc/servicers/encryption.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/http.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/http_metrics.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/http_metrics_utils.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/js/.gitignore +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/js/.prettierrc +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/js/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/js/base.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/js/build.mts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/js/client.http.mts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/js/client.mts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/js/errors.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/js/global.d.ts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/js/package.json +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/js/remote.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/js/schema.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/js/src/graph.mts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/js/src/load.hooks.mjs +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/js/src/preload.mjs +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/js/src/utils/experiment-tracing.mts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/js/src/utils/files.mts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/js/src/utils/importMap.mts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/js/src/utils/serde.mts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/js/sse.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/js/traceblock.mts +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/js/tsconfig.json +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/js/ui.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/js/yarn.lock +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/lc_security/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/lc_security/exceptions.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/lc_security/policy.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/lc_security/transport.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/logging.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/metadata.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/metrics_datadog.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/middleware/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/middleware/ensure_store.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/middleware/http_logger.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/middleware/private_network.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/middleware/request_id.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/models/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/models/run.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/otel_context.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/patch.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/queue_entrypoint.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/release_tags.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/route.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/schema.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/self_hosted_logs.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/self_hosted_metrics.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/serde.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/server.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/sse.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/state.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/store.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/stream.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/stream_v2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/timing/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/timing/profiler.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/timing/timer.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/traceblock.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/tunneling/cloudflare.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/utils/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/utils/cache.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/utils/config.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/utils/errors.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/utils/extract.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/utils/future.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/utils/headers.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/utils/network.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/utils/retriable_client.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/utils/stream_codec.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/utils/uuids.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/validation.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/worker.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/checkpointer.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/conversion/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/conversion/_compat.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/conversion/checkpoint.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/conversion/config.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/conversion/durability.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/conversion/struct.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/conversion/value.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/checkpointer_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/checkpointer_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/core_api_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/core_api_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/core_api_pb2_grpc.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/core_api_pb2_grpc.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/encryption_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/encryption_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/encryption_pb2_grpc.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/encryption_pb2_grpc.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/engine_common_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/engine_common_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/engine_common_pb2_grpc.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/engine_common_pb2_grpc.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_control_signal_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_control_signal_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/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.dev4}/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.dev4}/langgraph_grpc_common/proto/enum_durability_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_durability_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_run_status_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_run_status_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_stream_mode_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_stream_mode_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_thread_status_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_thread_status_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/errors_pb2.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/errors_pb2.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/errors_pb2_grpc.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/proto/errors_pb2_grpc.pyi +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_grpc_common/serde.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_license/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_license/validation.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_runtime/__init__.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_runtime/checkpoint.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_runtime/database.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_runtime/lifespan.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_runtime/metrics.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_runtime/ops.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_runtime/queue.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_runtime/retry.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_runtime/routes.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_runtime/store.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/logging.json +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/openapi.json +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/pyproject.toml +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/scripts/build_wheel.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/scripts/create_license.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/scripts/run_a2a_tck.py +0 -0
- {langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/uv.lock +0 -0
|
@@ -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)' \
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.9.0.dev4"
|
|
@@ -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
|
|
@@ -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.dev4}/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.dev4}/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.dev4}/benchmark/benchmark-runners/log-failure.ts
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/benchmark/benchmark-runners/meta_workload.ts
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/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.dev4}/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
|
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/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.dev4}/langgraph-cloud-debugging-20260210132856.zip
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/_checkpointer/__init__.py
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/_checkpointer/_adapter.py
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/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.dev4}/langgraph_api/auth/langsmith/__init__.py
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/auth/langsmith/backend.py
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/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.dev4}/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.dev4}/langgraph_api/event_streaming/__init__.py
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/event_streaming/capabilities.py
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/event_streaming/constants.py
RENAMED
|
File without changes
|
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/event_streaming/namespace.py
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/event_streaming/service.py
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/event_streaming/session.py
RENAMED
|
File without changes
|
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/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.dev4}/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
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/grpc/servicers/__init__.py
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/grpc/servicers/checkpointer.py
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/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.dev4}/langgraph_api/js/src/utils/importMap.mts
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/js/src/utils/pythonSchemas.mts
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
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/lc_security/exceptions.py
RENAMED
|
File without changes
|
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/lc_security/transport.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.dev4}/langgraph_api/middleware/ensure_store.py
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/middleware/http_logger.py
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/middleware/private_network.py
RENAMED
|
File without changes
|
{langgraph_api-0.9.0.dev3 → langgraph_api-0.9.0.dev4}/langgraph_api/middleware/request_id.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
|