langgraph-api 0.18.0.dev1__tar.gz → 0.18.0.dev3__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.18.0.dev1 → langgraph_api-0.18.0.dev3}/Makefile +26 -20
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/PKG-INFO +1 -1
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/REPORTS.md +2 -2
- langgraph_api-0.18.0.dev3/langgraph_api/__init__.py +1 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/api/a2a.py +93 -10
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/api/event_streaming.py +10 -2
- langgraph_api-0.18.0.dev3/langgraph_api/api/mcp/_calls.py +29 -0
- langgraph_api-0.18.0.dev3/langgraph_api/api/mcp/_constants.py +28 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/api/mcp/_handlers.py +146 -196
- langgraph_api-0.18.0.dev3/langgraph_api/api/mcp/_outcome.py +43 -0
- langgraph_api-0.18.0.dev3/langgraph_api/api/mcp/_protocol.py +224 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/config/__init__.py +37 -1
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/cron_scheduler.py +2 -2
- langgraph_api-0.18.0.dev3/langgraph_api/drain.py +102 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/event_streaming/service.py +77 -26
- langgraph_api-0.18.0.dev3/langgraph_api/executor/__init__.py +9 -0
- langgraph_api-0.18.0.dev3/langgraph_api/executor/__main__.py +343 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/feature_flags.py +6 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/graph.py +12 -2
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/grpc/ops/runs.py +41 -5
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/metrics_otlp.py +8 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/models/run.py +4 -3
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/queue_entrypoint.py +13 -1
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/self_hosted_logs.py +3 -1
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/self_hosted_metrics.py +1 -1
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/stream.py +49 -3
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/timing/__init__.py +16 -0
- langgraph_api-0.18.0.dev3/langgraph_api/timing/startup.py +184 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/timing/timer.py +16 -2
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/utils/headers.py +15 -3
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/validation.py +6 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/worker.py +146 -13
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/worker_runtime.py +124 -4
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/__init__.py +4 -4
- langgraph_api-0.18.0.dev3/langgraph_grpc_common/proto/orchestrator_pb2.py +50 -0
- langgraph_api-0.18.0.dev1/langgraph_grpc_common/proto/runner_pb2.pyi → langgraph_api-0.18.0.dev3/langgraph_grpc_common/proto/orchestrator_pb2.pyi +4 -4
- langgraph_api-0.18.0.dev3/langgraph_grpc_common/proto/orchestrator_pb2_grpc.py +108 -0
- langgraph_api-0.18.0.dev3/langgraph_grpc_common/proto/orchestrator_pb2_grpc.pyi +82 -0
- langgraph_api-0.18.0.dev1/langgraph_api/__init__.py +0 -1
- langgraph_api-0.18.0.dev1/langgraph_api/api/mcp/_constants.py +0 -19
- langgraph_api-0.18.0.dev1/langgraph_api/runner/__init__.py +0 -10
- langgraph_api-0.18.0.dev1/langgraph_api/runner/__main__.py +0 -275
- langgraph_api-0.18.0.dev1/langgraph_grpc_common/proto/runner_pb2.py +0 -50
- langgraph_api-0.18.0.dev1/langgraph_grpc_common/proto/runner_pb2_grpc.py +0 -108
- langgraph_api-0.18.0.dev1/langgraph_grpc_common/proto/runner_pb2_grpc.pyi +0 -73
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/.gitignore +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/LICENSE +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/README.md +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/.gitignore +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/Makefile +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/README.md +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/benchmark-runners/assistant.ts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/benchmark-runners/benchmark-runner.ts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/benchmark-runners/benchmark_profiles.ts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/benchmark-runners/benchmarks.ts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/benchmark-runners/cancel_first_second_completes.ts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/benchmark-runners/classify-error.test.js +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/benchmark-runners/classify-error.ts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/benchmark-runners/delta-turns-lib.test.js +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/benchmark-runners/delta-turns-lib.ts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/benchmark-runners/delta_turns.ts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/benchmark-runners/enqueued_runs_order.ts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/benchmark-runners/interrupt_resume.ts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/benchmark-runners/log-failure.ts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/benchmark-runners/meta_workload.ts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/benchmark-runners/store.ts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/benchmark-runners/stream_write.ts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/benchmark-runners/thread.ts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/benchmark-runners/thread_runs_metadata_search.ts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/benchmark-runners/threads_search_metadata.ts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/benchmark-runners/types.ts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/benchmark-runners/wait_write.ts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/capacity-ci.js +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/capacity-ci.test.js +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/clean-cli.js +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/clean.js +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/continuous/README.md +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/continuous/pyproject.toml +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/continuous/runner.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/continuous/uv.lock +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/daily-report.js +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/daily-report.test.js +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/delta-report.js +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/delta-report.test.js +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/graphs.js +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/history.js +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/history.test.js +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/host-v2.js +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/host-v2.test.js +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/multer.test.js +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/package.json +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/ramp.js +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/reporting/dd_reporting.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/runner-descriptions.js +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/server-metrics.js +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/server-metrics.test.js +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/slack.js +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/staircase.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/staircase_step_k6.js +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/tsconfig.json +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/update-revision.js +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/weather.js +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/benchmark/yarn.lock +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/constraints.txt +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/custom_store.sql +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/forbidden.txt +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/hatch_build.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/healthcheck.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph-cloud-debugging-20260210132856.zip +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/_checkpointer/__init__.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/_checkpointer/_adapter.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/_checkpointer/protocol.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/_factory_utils.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/api/__init__.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/api/a2ui.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/api/a2ui_schemas/README.md +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/api/a2ui_schemas/client_capabilities.json +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/api/a2ui_schemas/client_data_model.json +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/api/a2ui_schemas/client_to_server.json +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/api/a2ui_schemas/server_to_client.json +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/api/assistants.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/api/mcp/__init__.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/api/mcp/_models.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/api/mcp/_routes.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/api/mcp/_sanitizers.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/api/meta.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/api/openapi.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/api/profile.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/api/runs.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/api/store.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/api/threads.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/api/ui.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/asgi_transport.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/asyncio.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/auth/__init__.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/auth/custom.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/auth/errors.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/auth/langsmith/__init__.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/auth/langsmith/backend.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/auth/langsmith/client.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/auth/middleware.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/auth/noop.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/auth/studio_user.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/beacon_data_plane_jwt_auth.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/cache.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/cli.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/command.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/config/_parse.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/config/schemas.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/encryption/__init__.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/encryption/aes_json.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/encryption/context.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/encryption/custom.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/encryption/middleware.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/encryption/shared.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/errors.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/event_streaming/__init__.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/event_streaming/capabilities.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/event_streaming/constants.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/event_streaming/event_normalizers.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/event_streaming/namespace.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/event_streaming/session.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/event_streaming/state_normalizers.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/event_streaming/types.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/grpc/__init__.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/grpc/client.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/grpc/generated/core_api_pb2.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/grpc/ops/__init__.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/grpc/ops/assistants.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/grpc/ops/cache.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/grpc/ops/crons.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/grpc/ops/threads.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/grpc/server.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/grpc/servicers/__init__.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/grpc/servicers/checkpointer.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/grpc/servicers/encryption.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/http.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/http_metrics.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/http_metrics_utils.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/js/.gitignore +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/js/.prettierrc +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/js/.yarnclean +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/js/__init__.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/js/base.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/js/build.mts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/js/client.http.mts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/js/client.mts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/js/errors.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/js/global.d.ts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/js/package.json +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/js/remote.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/js/schema.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/js/src/auth-mutations.mts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/js/src/graph.mts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/js/src/load.hooks.mjs +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/js/src/preload.mjs +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/js/src/utils/experiment-tracing.mts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/js/src/utils/files.mts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/js/src/utils/importMap.mts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/js/src/utils/serde.mts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/js/sse.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/js/traceblock.mts +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/js/tsconfig.json +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/js/ui.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/js/yarn.lock +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/lc_security/__init__.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/lc_security/exceptions.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/lc_security/policy.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/lc_security/transport.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/logging.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/metadata.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/metrics_collector.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/middleware/__init__.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/middleware/ensure_store.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/middleware/http_logger.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/middleware/private_network.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/middleware/request_id.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/models/__init__.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/otel_context.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/patch.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/release_tags.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/route.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/schema.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/serde.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/server.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/sse.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/state.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/store.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/stream_v2.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/timing/profiler.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/traceblock.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/tracing_session.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/tunneling/cloudflare.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/utils/__init__.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/utils/cache.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/utils/config.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/utils/errors.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/utils/extract.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/utils/future.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/utils/network.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/utils/retriable_client.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/utils/stream_codec.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/utils/uuids.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/webhook.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/__init__.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/checkpointer.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/conversion/__init__.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/conversion/_compat.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/conversion/checkpoint.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/conversion/config.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/conversion/durability.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/conversion/store.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/conversion/struct.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/conversion/value.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/checkpointer_pb2.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/checkpointer_pb2.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/core_api_pb2.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/core_api_pb2.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/core_api_pb2_grpc.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/core_api_pb2_grpc.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/encryption_pb2.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/encryption_pb2.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/encryption_pb2_grpc.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/encryption_pb2_grpc.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/engine_common_pb2.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/engine_common_pb2.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/engine_common_pb2_grpc.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/engine_common_pb2_grpc.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_control_signal_pb2.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_control_signal_pb2.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_durability_pb2.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_durability_pb2.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_run_status_pb2.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_run_status_pb2.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_stream_mode_pb2.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_stream_mode_pb2.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_thread_status_pb2.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_thread_status_pb2.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/errors_pb2.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/errors_pb2.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/errors_pb2_grpc.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/errors_pb2_grpc.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/store_pb2.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/store_pb2.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/store_pb2_grpc.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/proto/store_pb2_grpc.pyi +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/serde.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_grpc_common/store.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_license/__init__.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_license/validation.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_runtime/__init__.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_runtime/checkpoint.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_runtime/database.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_runtime/encryption.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_runtime/lifespan.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_runtime/metrics.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_runtime/ops.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_runtime/queue.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_runtime/retry.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_runtime/routes.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_runtime/store.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/logging.json +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/openapi.json +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/pyproject.toml +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/scripts/build_wheel.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/scripts/create_license.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/scripts/run_a2a_tck.py +0 -0
- {langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/uv.lock +0 -0
|
@@ -67,6 +67,7 @@ START_TARGET ?= start-license-oss
|
|
|
67
67
|
TEST_TARGET ?= test-license-oss
|
|
68
68
|
SERVER_HEALTH_URL ?= http://127.0.0.1:9123/ok
|
|
69
69
|
SERVER_START_TIMEOUT_SECS ?= 30
|
|
70
|
+
SERVER_STOP_TIMEOUT_SECS ?= 10
|
|
70
71
|
|
|
71
72
|
ifeq ($(LANGGRAPH_HTTP),fastapi)
|
|
72
73
|
HTTP_CONFIG := {"app": "./tests/graphs/my_router.py:app", "disable_mcp": false, "disable_a2a": false, "mount_prefix": "/my-cool/api"}
|
|
@@ -126,16 +127,25 @@ test-auth:
|
|
|
126
127
|
LANGGRAPH_RUNTIME_EDITION=inmem LANGGRAPH_AUTH='{"path": "./tests/graphs/fastapi_jwt_auth.py:auth"}' REDIS_URI=_FAKE DATABASE_URI=:memory: MIGRATIONS_PATH=__inmem__ uv run pytest -v $(PYTEST_ROOT_ARGS) $(XDIST_ARGS) $(AUTH_TEST)
|
|
127
128
|
|
|
128
129
|
test-with-server:
|
|
129
|
-
@bash -euo pipefail -c '
|
|
130
|
-
|
|
130
|
+
@bash -euo pipefail -c 'set -m; \
|
|
131
|
+
$(MAKE) $(START_TARGET) LANGGRAPH_HTTP='\''$(LANGGRAPH_HTTP)'\'' & \
|
|
132
|
+
server_pgid=$$!; \
|
|
133
|
+
set +m; \
|
|
131
134
|
cleanup() { \
|
|
132
|
-
if [ -r /proc/$$
|
|
133
|
-
taskkill //F //T //PID "$$(cat /proc/$$
|
|
134
|
-
|
|
135
|
-
kill $$pid >/dev/null 2>&1 || true; \
|
|
135
|
+
if [ -r /proc/$$server_pgid/winpid ]; then \
|
|
136
|
+
taskkill //F //T //PID "$$(cat /proc/$$server_pgid/winpid)" >/dev/null 2>&1 || true; \
|
|
137
|
+
return 0; \
|
|
136
138
|
fi; \
|
|
139
|
+
kill -- -$$server_pgid 2>/dev/null || return 0; \
|
|
140
|
+
for i in $$(seq 1 $(SERVER_STOP_TIMEOUT_SECS)); do \
|
|
141
|
+
kill -0 -- -$$server_pgid 2>/dev/null || return 0; \
|
|
142
|
+
sleep 1; \
|
|
143
|
+
done; \
|
|
144
|
+
kill -KILL -- -$$server_pgid 2>/dev/null || true; \
|
|
137
145
|
}; \
|
|
138
146
|
trap cleanup EXIT; \
|
|
147
|
+
trap "exit 130" INT; \
|
|
148
|
+
trap "exit 143" TERM; \
|
|
139
149
|
for i in $$(seq 1 $(SERVER_START_TIMEOUT_SECS)); do \
|
|
140
150
|
if curl -sf "$(SERVER_HEALTH_URL)" >/dev/null; then \
|
|
141
151
|
break; \
|
|
@@ -373,26 +383,22 @@ start-test-a2a-tck-watch:
|
|
|
373
383
|
"$(MAKE) start" \
|
|
374
384
|
"sleep $(TCK_STARTUP_DELAY) && npx nodemon --watch langgraph_api/api/a2a.py --ext py --exec '$(MAKE) test-a2a-tck-must'"
|
|
375
385
|
|
|
376
|
-
|
|
377
|
-
# Uses the official MCP conformance test suite (https://github.com/modelcontextprotocol/conformance)
|
|
378
|
-
# Requires a running server: make start (in another terminal)
|
|
379
|
-
|
|
386
|
+
MCP_CONFORMANCE := npx @modelcontextprotocol/conformance@0.2.0-alpha.12
|
|
380
387
|
MCP_CONFORMANCE_URL ?= http://localhost:9123/mcp
|
|
381
|
-
|
|
382
|
-
MCP_CONFORMANCE_BASELINE ?= ../mcp-conformance-baseline.yml
|
|
383
|
-
MCP_STARTUP_DELAY ?= 10
|
|
388
|
+
MCP_CONFORMANCE_REVISIONS := 2025-11-25 2026-07-28
|
|
384
389
|
|
|
385
390
|
test-mcp-conformance:
|
|
386
|
-
|
|
391
|
+
$(MAKE) -k $(addprefix test-mcp-conformance-,$(MCP_CONFORMANCE_REVISIONS))
|
|
392
|
+
|
|
393
|
+
test-mcp-conformance-%:
|
|
394
|
+
$(MCP_CONFORMANCE) server \
|
|
387
395
|
--url $(MCP_CONFORMANCE_URL) \
|
|
388
|
-
--
|
|
389
|
-
--expected-failures
|
|
396
|
+
--requirements $* \
|
|
397
|
+
--expected-failures ../mcp-conformance-baseline-$*.yml \
|
|
390
398
|
--verbose
|
|
391
399
|
|
|
392
400
|
start-test-mcp-conformance:
|
|
393
|
-
|
|
394
|
-
"$(MAKE) start" \
|
|
395
|
-
"sleep $(MCP_STARTUP_DELAY) && $(MAKE) test-mcp-conformance"
|
|
401
|
+
$(MAKE) test-with-server TEST_TARGET=test-mcp-conformance
|
|
396
402
|
|
|
397
403
|
list-mcp-scenarios:
|
|
398
|
-
|
|
404
|
+
$(MCP_CONFORMANCE) list --server
|
|
@@ -47,12 +47,12 @@ server version staging is on, which is the API version in the first line.
|
|
|
47
47
|
|---|---|---|---|
|
|
48
48
|
| `wait` | `wait_write` | start a run and wait for its result (`POST /runs/wait`): run execution and checkpointing | 1,000 |
|
|
49
49
|
| `stream` | `stream_write` | start a run and read its event stream to the end (`POST /runs/stream`) | 1,000 |
|
|
50
|
-
| `search` | `
|
|
50
|
+
| `search` | `threads_search_metadata` | create two threads, set their metadata, then search for them by it: database and metadata search | 300 |
|
|
51
51
|
|
|
52
52
|
Tables use the one-word row names so they fit a phone; the lines above the
|
|
53
53
|
table use the runner names.
|
|
54
54
|
|
|
55
|
-
`
|
|
55
|
+
`threads_search_metadata` does not delete the threads it creates; the deployment's
|
|
56
56
|
60-minute thread TTL removes them, so each night searches a table of about
|
|
57
57
|
that run's threads, not a growing history.
|
|
58
58
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.18.0.dev3"
|
|
@@ -2090,6 +2090,19 @@ async def handle_message_send(
|
|
|
2090
2090
|
"message": "Invalid params: 'configuration' must be an object",
|
|
2091
2091
|
}
|
|
2092
2092
|
}
|
|
2093
|
+
for field in ("returnImmediately", "blocking"):
|
|
2094
|
+
if configuration.get(field) is not None and not isinstance(
|
|
2095
|
+
configuration[field], bool
|
|
2096
|
+
):
|
|
2097
|
+
return {
|
|
2098
|
+
"error": {
|
|
2099
|
+
"code": ERROR_CODE_INVALID_PARAMS,
|
|
2100
|
+
"message": f"Invalid params: '{field}' must be a boolean",
|
|
2101
|
+
}
|
|
2102
|
+
}
|
|
2103
|
+
return_immediately = configuration.get("returnImmediately")
|
|
2104
|
+
if return_immediately is None:
|
|
2105
|
+
return_immediately = configuration.get("blocking") is False
|
|
2093
2106
|
history_length = configuration.get("historyLength")
|
|
2094
2107
|
if history_error := _validate_history_length(history_length):
|
|
2095
2108
|
return {
|
|
@@ -2308,6 +2321,36 @@ async def handle_message_send(
|
|
|
2308
2321
|
context_id = str(run["thread_id"])
|
|
2309
2322
|
if task_id is None:
|
|
2310
2323
|
task_id = _make_task_id(context_id, str(run["run_id"]))
|
|
2324
|
+
if return_immediately:
|
|
2325
|
+
immediate_task: dict[str, Any] = {
|
|
2326
|
+
"kind": "task",
|
|
2327
|
+
"id": task_id,
|
|
2328
|
+
"contextId": context_id,
|
|
2329
|
+
"status": {
|
|
2330
|
+
"state": _task_state_for_run(run),
|
|
2331
|
+
"timestamp": _run_timestamp(run),
|
|
2332
|
+
},
|
|
2333
|
+
}
|
|
2334
|
+
if history_length is not None and history_length != 0:
|
|
2335
|
+
run_messages = await _load_run_messages(
|
|
2336
|
+
context_id, str(run["run_id"]), request.headers
|
|
2337
|
+
)
|
|
2338
|
+
if not run_messages.messages:
|
|
2339
|
+
run_messages = RunMessages(input_content.get("messages", []), 0)
|
|
2340
|
+
if task_start_id:
|
|
2341
|
+
task_ids_by_start_id.setdefault(task_start_id, task_id)
|
|
2342
|
+
immediate_task["history"] = _convert_messages_to_a2a_format(
|
|
2343
|
+
run_messages.stamped(task_id),
|
|
2344
|
+
task_id,
|
|
2345
|
+
context_id,
|
|
2346
|
+
history_length=history_length,
|
|
2347
|
+
history_scope=history_scope,
|
|
2348
|
+
a2ui=a2ui,
|
|
2349
|
+
task_ids_by_start_id=task_ids_by_start_id,
|
|
2350
|
+
)
|
|
2351
|
+
return {"result": {"task": immediate_task}}
|
|
2352
|
+
|
|
2353
|
+
if existing_task_id is None:
|
|
2311
2354
|
try:
|
|
2312
2355
|
runs = await _list_context_runs(
|
|
2313
2356
|
client, context_id=context_id, headers=request.headers
|
|
@@ -2489,6 +2532,48 @@ async def handle_tasks_get(
|
|
|
2489
2532
|
lg_status = run_info.get("status", "unknown")
|
|
2490
2533
|
a2a_state = task.state
|
|
2491
2534
|
|
|
2535
|
+
if a2a_state in ("TASK_STATE_COMPLETED", "TASK_STATE_INPUT_REQUIRED"):
|
|
2536
|
+
states, before = await asyncio.gather(
|
|
2537
|
+
get_client().threads.get_history(
|
|
2538
|
+
context_id,
|
|
2539
|
+
limit=1,
|
|
2540
|
+
metadata={"run_id": str(run_info["run_id"])},
|
|
2541
|
+
headers=request.headers,
|
|
2542
|
+
),
|
|
2543
|
+
_latest_messages(
|
|
2544
|
+
context_id,
|
|
2545
|
+
{"run_id": str(run_info["run_id"]), "source": "input"},
|
|
2546
|
+
request.headers,
|
|
2547
|
+
),
|
|
2548
|
+
)
|
|
2549
|
+
result = dict(states[0]["values"]) if states else {}
|
|
2550
|
+
messages = result.get("messages", []) or []
|
|
2551
|
+
run_messages = (
|
|
2552
|
+
RunMessages.between(before, messages)
|
|
2553
|
+
if before is not None
|
|
2554
|
+
else RunMessages(messages, None)
|
|
2555
|
+
)
|
|
2556
|
+
if "messages" in result:
|
|
2557
|
+
result["messages"] = run_messages.stamped(task_id)
|
|
2558
|
+
if a2a_state == "TASK_STATE_INPUT_REQUIRED":
|
|
2559
|
+
result["__interrupt__"] = (
|
|
2560
|
+
states[0].get("interrupts", []) if states else []
|
|
2561
|
+
)
|
|
2562
|
+
response = await _create_task_response(
|
|
2563
|
+
task_id=task_id,
|
|
2564
|
+
context_id=context_id,
|
|
2565
|
+
result=result,
|
|
2566
|
+
assistant_id=assistant_id,
|
|
2567
|
+
a2ui=_a2ui_context_for_run(run_info),
|
|
2568
|
+
history_length=history_length,
|
|
2569
|
+
history_scope=history_scope,
|
|
2570
|
+
task_ids_by_start_id=task.task_ids_by_start_id,
|
|
2571
|
+
turn=run_messages.added,
|
|
2572
|
+
)
|
|
2573
|
+
task_response = response["result"]["task"]
|
|
2574
|
+
task_response["status"]["timestamp"] = task.status_timestamp
|
|
2575
|
+
return {"result": task_response}
|
|
2576
|
+
|
|
2492
2577
|
thread_history = []
|
|
2493
2578
|
if history_length != 0:
|
|
2494
2579
|
try:
|
|
@@ -2532,16 +2617,7 @@ async def handle_tasks_get(
|
|
|
2532
2617
|
if history_length != 0:
|
|
2533
2618
|
task_response["history"] = thread_history
|
|
2534
2619
|
|
|
2535
|
-
|
|
2536
|
-
if a2a_state == "TASK_STATE_COMPLETED":
|
|
2537
|
-
task_response["status"]["message"] = {
|
|
2538
|
-
"kind": "message",
|
|
2539
|
-
"role": "ROLE_AGENT",
|
|
2540
|
-
"parts": [{"kind": "text", "text": "Task completed successfully"}],
|
|
2541
|
-
"messageId": str(uuid.uuid4()),
|
|
2542
|
-
"taskId": task_id,
|
|
2543
|
-
}
|
|
2544
|
-
elif a2a_state == "TASK_STATE_FAILED":
|
|
2620
|
+
if a2a_state == "TASK_STATE_FAILED":
|
|
2545
2621
|
task_response["status"]["message"] = {
|
|
2546
2622
|
"kind": "message",
|
|
2547
2623
|
"role": "ROLE_AGENT",
|
|
@@ -2554,6 +2630,13 @@ async def handle_tasks_get(
|
|
|
2554
2630
|
|
|
2555
2631
|
return {"result": task_response}
|
|
2556
2632
|
|
|
2633
|
+
except InvalidAgentResponseError as e:
|
|
2634
|
+
return {
|
|
2635
|
+
"error": {
|
|
2636
|
+
"code": ERROR_CODE_INVALID_AGENT_RESPONSE,
|
|
2637
|
+
"message": str(e),
|
|
2638
|
+
}
|
|
2639
|
+
}
|
|
2557
2640
|
except Exception as e:
|
|
2558
2641
|
await logger.aexception(
|
|
2559
2642
|
f"Error in tasks/get for task {params.get('id')}: {e!s}", exc_info=True
|
{langgraph_api-0.18.0.dev1 → langgraph_api-0.18.0.dev3}/langgraph_api/api/event_streaming.py
RENAMED
|
@@ -40,6 +40,8 @@ from langgraph_api.serde import json_dumpb
|
|
|
40
40
|
from langgraph_api.sse import EventSourceResponse
|
|
41
41
|
|
|
42
42
|
if TYPE_CHECKING:
|
|
43
|
+
from collections.abc import Mapping
|
|
44
|
+
|
|
43
45
|
from starlette.requests import Request
|
|
44
46
|
from starlette.websockets import WebSocket
|
|
45
47
|
|
|
@@ -91,7 +93,12 @@ def _json_response(content: Any, *, status_code: int = 200) -> Response:
|
|
|
91
93
|
)
|
|
92
94
|
|
|
93
95
|
|
|
94
|
-
def _make_manager(
|
|
96
|
+
def _make_manager(
|
|
97
|
+
thread_id: str,
|
|
98
|
+
send_event: Any = None,
|
|
99
|
+
*,
|
|
100
|
+
headers: Mapping[str, str] | None = None,
|
|
101
|
+
) -> ThreadRunManager:
|
|
95
102
|
# Auth context is propagated via ``ApiRoute``'s ``with_user`` wrapper
|
|
96
103
|
# — ops reads it off the context var, so we don't thread it through
|
|
97
104
|
# the manager explicitly.
|
|
@@ -100,6 +107,7 @@ def _make_manager(thread_id: str, send_event: Any = None) -> ThreadRunManager:
|
|
|
100
107
|
runs=Runs,
|
|
101
108
|
threads=Threads,
|
|
102
109
|
send_event=send_event,
|
|
110
|
+
headers=headers,
|
|
103
111
|
)
|
|
104
112
|
|
|
105
113
|
|
|
@@ -353,7 +361,7 @@ async def _thread_command(request: Request) -> Response:
|
|
|
353
361
|
status_code=400,
|
|
354
362
|
)
|
|
355
363
|
|
|
356
|
-
manager = _make_manager(thread_id)
|
|
364
|
+
manager = _make_manager(thread_id, headers=request.headers)
|
|
357
365
|
try:
|
|
358
366
|
resp = await manager.handle_command(payload)
|
|
359
367
|
return _json_response(resp)
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from dataclasses import dataclass
|
|
4
|
+
from typing import TYPE_CHECKING, Any
|
|
5
|
+
|
|
6
|
+
from langgraph_api.api.mcp._protocol import ProtocolError
|
|
7
|
+
|
|
8
|
+
if TYPE_CHECKING:
|
|
9
|
+
from collections.abc import Mapping
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@dataclass(frozen=True, slots=True)
|
|
13
|
+
class ToolCall:
|
|
14
|
+
name: str
|
|
15
|
+
arguments: dict[str, Any]
|
|
16
|
+
context: dict[str, Any] | None
|
|
17
|
+
|
|
18
|
+
@classmethod
|
|
19
|
+
def of(cls, params: Mapping[str, Any]) -> ToolCall:
|
|
20
|
+
name = params.get("name")
|
|
21
|
+
arguments = params.get("arguments", {})
|
|
22
|
+
context = params.get("context")
|
|
23
|
+
if not isinstance(name, str) or not name:
|
|
24
|
+
raise ProtocolError(f"Unknown tool: {name}")
|
|
25
|
+
if not isinstance(arguments, dict) or (
|
|
26
|
+
context is not None and not isinstance(context, dict)
|
|
27
|
+
):
|
|
28
|
+
raise ProtocolError("arguments and context must be objects")
|
|
29
|
+
return cls(name, arguments, context)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
MAX_ASSISTANTS = 1000
|
|
2
|
+
DEFAULT_PAGE_SIZE = 100
|
|
3
|
+
MAX_PAGE_OFFSET = 2**63 - 1
|
|
4
|
+
MAX_CURSOR_LENGTH = len(str(MAX_PAGE_OFFSET))
|
|
5
|
+
|
|
6
|
+
ERROR_CODE_INVALID_REQUEST = -32600
|
|
7
|
+
ERROR_CODE_INVALID_PARAMS = -32602
|
|
8
|
+
ERROR_CODE_METHOD_NOT_FOUND = -32601
|
|
9
|
+
ERROR_CODE_HEADER_MISMATCH = -32020
|
|
10
|
+
ERROR_CODE_UNSUPPORTED_VERSION = -32022
|
|
11
|
+
|
|
12
|
+
LEGACY_PROTOCOL_VERSIONS = frozenset(
|
|
13
|
+
(
|
|
14
|
+
"2024-11-05",
|
|
15
|
+
"2025-03-26",
|
|
16
|
+
"2025-06-18",
|
|
17
|
+
"2025-11-25",
|
|
18
|
+
)
|
|
19
|
+
)
|
|
20
|
+
LATEST_LEGACY_PROTOCOL_VERSION = "2025-11-25"
|
|
21
|
+
PROTOCOL_VERSION = "2026-07-28"
|
|
22
|
+
SUPPORTED_PROTOCOL_VERSIONS = LEGACY_PROTOCOL_VERSIONS | {PROTOCOL_VERSION}
|
|
23
|
+
|
|
24
|
+
PAUSED_TOOL_MESSAGE = (
|
|
25
|
+
"This tool paused to ask for human input, and this client can't answer it."
|
|
26
|
+
)
|
|
27
|
+
RUN_FAILED_MESSAGE = "The tool's run failed."
|
|
28
|
+
INVALID_CURSOR_MESSAGE = "Invalid cursor"
|