langgraph-api 0.15.0.dev4__tar.gz → 0.15.0.dev5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/PKG-INFO +53 -3
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/README.md +51 -1
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/continuous/pyproject.toml +1 -1
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/continuous/uv.lock +4 -4
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/constraints.txt +1 -1
- langgraph_api-0.15.0.dev5/langgraph_api/__init__.py +1 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/api/a2a.py +127 -13
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/config/__init__.py +3 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/graph.py +9 -8
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/pyproject.toml +1 -1
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/uv.lock +4 -4
- langgraph_api-0.15.0.dev4/langgraph_api/__init__.py +0 -1
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/.gitignore +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/LICENSE +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/Makefile +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/.gitignore +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/Makefile +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/README.md +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/assistant.ts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/benchmark-runner.ts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/benchmark_profiles.ts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/benchmarks.ts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/cancel_first_second_completes.ts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/classify-error.test.js +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/classify-error.ts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/delta-turns-lib.test.js +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/delta-turns-lib.ts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/delta_turns.ts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/enqueued_runs_order.ts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/log-failure.ts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/meta_workload.ts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/store.ts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/stream_write.ts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/thread.ts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/thread_runs_metadata_search.ts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/threads_search_metadata.ts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/types.ts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/wait_write.ts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/capacity-ci.js +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/capacity-ci.test.js +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/clean-cli.js +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/clean.js +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/continuous/README.md +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/continuous/runner.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/daily-report.js +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/daily-report.test.js +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/graphs.js +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/host-v2.js +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/host-v2.test.js +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/package.json +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/ramp.js +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/reporting/dd_reporting.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/staircase.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/staircase_step_k6.js +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/tsconfig.json +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/update-revision.js +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/weather.js +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/yarn.lock +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/custom_store.sql +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/forbidden.txt +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/hatch_build.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/healthcheck.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph-cloud-debugging-20260210132856.zip +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/_checkpointer/__init__.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/_checkpointer/_adapter.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/_checkpointer/protocol.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/_factory_utils.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/api/__init__.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/api/a2ui.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/api/a2ui_schemas/README.md +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/api/a2ui_schemas/client_capabilities.json +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/api/a2ui_schemas/client_data_model.json +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/api/a2ui_schemas/client_to_server.json +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/api/a2ui_schemas/server_to_client.json +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/api/assistants.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/api/event_streaming.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/api/mcp/__init__.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/api/mcp/_constants.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/api/mcp/_handlers.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/api/mcp/_models.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/api/mcp/_routes.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/api/mcp/_sanitizers.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/api/meta.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/api/openapi.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/api/profile.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/api/runs.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/api/store.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/api/threads.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/api/ui.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/asgi_transport.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/asyncio.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/auth/__init__.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/auth/custom.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/auth/errors.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/auth/langsmith/__init__.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/auth/langsmith/backend.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/auth/langsmith/client.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/auth/middleware.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/auth/noop.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/auth/studio_user.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/beacon_data_plane_jwt_auth.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/cache.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/cli.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/command.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/config/_parse.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/config/schemas.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/cron_scheduler.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/encryption/__init__.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/encryption/aes_json.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/encryption/context.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/encryption/custom.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/encryption/middleware.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/encryption/shared.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/errors.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/event_streaming/__init__.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/event_streaming/capabilities.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/event_streaming/constants.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/event_streaming/event_normalizers.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/event_streaming/namespace.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/event_streaming/service.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/event_streaming/session.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/event_streaming/state_normalizers.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/event_streaming/types.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/feature_flags.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/grpc/__init__.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/grpc/client.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/grpc/generated/core_api_pb2.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/grpc/ops/__init__.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/grpc/ops/assistants.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/grpc/ops/cache.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/grpc/ops/crons.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/grpc/ops/runs.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/grpc/ops/threads.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/grpc/server.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/grpc/servicers/__init__.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/grpc/servicers/checkpointer.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/grpc/servicers/encryption.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/http.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/http_metrics.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/http_metrics_utils.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/js/.gitignore +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/js/.prettierrc +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/js/.yarnclean +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/js/__init__.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/js/base.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/js/build.mts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/js/client.http.mts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/js/client.mts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/js/errors.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/js/global.d.ts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/js/package.json +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/js/remote.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/js/schema.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/js/src/graph.mts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/js/src/load.hooks.mjs +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/js/src/preload.mjs +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/js/src/utils/experiment-tracing.mts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/js/src/utils/files.mts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/js/src/utils/importMap.mts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/js/src/utils/serde.mts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/js/sse.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/js/traceblock.mts +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/js/tsconfig.json +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/js/ui.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/js/yarn.lock +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/lc_security/__init__.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/lc_security/exceptions.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/lc_security/policy.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/lc_security/transport.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/logging.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/metadata.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/metrics_collector.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/metrics_otlp.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/middleware/__init__.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/middleware/ensure_store.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/middleware/http_logger.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/middleware/private_network.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/middleware/request_id.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/models/__init__.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/models/run.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/otel_context.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/patch.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/queue_entrypoint.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/release_tags.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/route.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/schema.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/self_hosted_logs.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/self_hosted_metrics.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/serde.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/server.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/sse.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/state.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/store.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/stream.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/stream_v2.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/timing/__init__.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/timing/profiler.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/timing/timer.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/traceblock.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/tracing_session.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/tunneling/cloudflare.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/utils/__init__.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/utils/cache.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/utils/config.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/utils/errors.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/utils/extract.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/utils/future.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/utils/headers.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/utils/network.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/utils/retriable_client.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/utils/stream_codec.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/utils/uuids.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/validation.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/webhook.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_api/worker.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/__init__.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/checkpointer.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/conversion/__init__.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/conversion/_compat.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/conversion/checkpoint.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/conversion/config.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/conversion/durability.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/conversion/store.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/conversion/struct.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/conversion/value.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/__init__.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/checkpointer_pb2.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/checkpointer_pb2.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/core_api_pb2.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/core_api_pb2.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/core_api_pb2_grpc.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/core_api_pb2_grpc.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/encryption_pb2.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/encryption_pb2.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/encryption_pb2_grpc.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/encryption_pb2_grpc.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/engine_common_pb2.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/engine_common_pb2.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/engine_common_pb2_grpc.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/engine_common_pb2_grpc.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_control_signal_pb2.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_control_signal_pb2.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_durability_pb2.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_durability_pb2.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_run_status_pb2.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_run_status_pb2.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_stream_mode_pb2.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_stream_mode_pb2.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_thread_status_pb2.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_thread_status_pb2.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/errors_pb2.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/errors_pb2.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/errors_pb2_grpc.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/errors_pb2_grpc.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/store_pb2.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/store_pb2.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/store_pb2_grpc.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/proto/store_pb2_grpc.pyi +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/serde.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_grpc_common/store.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_license/__init__.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_license/validation.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_runtime/__init__.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_runtime/checkpoint.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_runtime/database.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_runtime/lifespan.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_runtime/metrics.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_runtime/ops.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_runtime/queue.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_runtime/retry.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_runtime/routes.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/langgraph_runtime/store.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/logging.json +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/openapi.json +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/scripts/build_wheel.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/scripts/create_license.py +0 -0
- {langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/scripts/run_a2a_tck.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: langgraph-api
|
|
3
|
-
Version: 0.15.0.
|
|
3
|
+
Version: 0.15.0.dev5
|
|
4
4
|
Author-email: Will Fu-Hinthorn <will@langchain.dev>, Josh Rogers <josh@langchain.dev>, Parker Rule <parker@langchain.dev>
|
|
5
5
|
License: Elastic-2.0
|
|
6
6
|
License-File: LICENSE
|
|
@@ -17,7 +17,7 @@ Requires-Dist: langchain-core>=0.3.64
|
|
|
17
17
|
Requires-Dist: langchain-protocol<0.1,>=0.0.18
|
|
18
18
|
Requires-Dist: langgraph-checkpoint<5,>=3.0.1
|
|
19
19
|
Requires-Dist: langgraph-runtime-inmem<0.36.0.dev0,>=0.35.0.dev0
|
|
20
|
-
Requires-Dist: langgraph-sdk>=0.
|
|
20
|
+
Requires-Dist: langgraph-sdk>=0.4.4
|
|
21
21
|
Requires-Dist: langgraph<2,>=0.4.10
|
|
22
22
|
Requires-Dist: langsmith[otel]>=0.6.3
|
|
23
23
|
Requires-Dist: opentelemetry-api>=0.0.1
|
|
@@ -90,6 +90,56 @@ langgraph dev
|
|
|
90
90
|
|
|
91
91
|
Your agent's state (threads, runs, assistants) persists in memory while the server is running - perfect for development and testing. Each run's state is tracked and can be inspected, making it easy to debug and improve your agent's behavior.
|
|
92
92
|
|
|
93
|
+
## A2A task history scope
|
|
94
|
+
|
|
95
|
+
An A2A context can contain multiple tasks. By default, `SendMessage`, `GetTask`,
|
|
96
|
+
and `ListTasks` return the full context history. Set `historyScope` to `task` to
|
|
97
|
+
return only messages that belong to the requested task.
|
|
98
|
+
|
|
99
|
+
For `SendMessage`, set it in `configuration`:
|
|
100
|
+
|
|
101
|
+
```json
|
|
102
|
+
{
|
|
103
|
+
"jsonrpc": "2.0",
|
|
104
|
+
"id": "1",
|
|
105
|
+
"method": "SendMessage",
|
|
106
|
+
"params": {
|
|
107
|
+
"message": {
|
|
108
|
+
"role": "ROLE_USER",
|
|
109
|
+
"parts": [{"text": "Second request"}],
|
|
110
|
+
"messageId": "message-2",
|
|
111
|
+
"contextId": "8b1f0e5c-9a3d-4f27-b0c8-2e6a5d4c1b7a"
|
|
112
|
+
},
|
|
113
|
+
"configuration": {"historyScope": "task"}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
For `GetTask` and `ListTasks`, set it directly in `params`. If changing the
|
|
119
|
+
request body is not possible, send `LangGraph-A2A-History-Scope: task` instead.
|
|
120
|
+
An explicit request value takes precedence over the header.
|
|
121
|
+
|
|
122
|
+
```json
|
|
123
|
+
{
|
|
124
|
+
"jsonrpc": "2.0",
|
|
125
|
+
"id": "2",
|
|
126
|
+
"method": "GetTask",
|
|
127
|
+
"params": {"id": "<taskId>", "historyScope": "task"}
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
```json
|
|
132
|
+
{
|
|
133
|
+
"jsonrpc": "2.0",
|
|
134
|
+
"id": "3",
|
|
135
|
+
"method": "ListTasks",
|
|
136
|
+
"params": {"contextId": "<contextId>", "historyScope": "task"}
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
The agent card advertises support through the
|
|
141
|
+
`https://langchain.com/a2a/extensions/history-scope/v1` extension.
|
|
142
|
+
|
|
93
143
|
## How-To
|
|
94
144
|
|
|
95
145
|
#### Attaching a debugger
|
|
@@ -141,4 +191,4 @@ Options:
|
|
|
141
191
|
|
|
142
192
|
## License
|
|
143
193
|
|
|
144
|
-
This project is licensed under the Elastic License 2.0 - see the [LICENSE](./LICENSE) file for details.
|
|
194
|
+
This project is licensed under the Elastic License 2.0 - see the [LICENSE](./LICENSE) file for details.
|
|
@@ -47,6 +47,56 @@ langgraph dev
|
|
|
47
47
|
|
|
48
48
|
Your agent's state (threads, runs, assistants) persists in memory while the server is running - perfect for development and testing. Each run's state is tracked and can be inspected, making it easy to debug and improve your agent's behavior.
|
|
49
49
|
|
|
50
|
+
## A2A task history scope
|
|
51
|
+
|
|
52
|
+
An A2A context can contain multiple tasks. By default, `SendMessage`, `GetTask`,
|
|
53
|
+
and `ListTasks` return the full context history. Set `historyScope` to `task` to
|
|
54
|
+
return only messages that belong to the requested task.
|
|
55
|
+
|
|
56
|
+
For `SendMessage`, set it in `configuration`:
|
|
57
|
+
|
|
58
|
+
```json
|
|
59
|
+
{
|
|
60
|
+
"jsonrpc": "2.0",
|
|
61
|
+
"id": "1",
|
|
62
|
+
"method": "SendMessage",
|
|
63
|
+
"params": {
|
|
64
|
+
"message": {
|
|
65
|
+
"role": "ROLE_USER",
|
|
66
|
+
"parts": [{"text": "Second request"}],
|
|
67
|
+
"messageId": "message-2",
|
|
68
|
+
"contextId": "8b1f0e5c-9a3d-4f27-b0c8-2e6a5d4c1b7a"
|
|
69
|
+
},
|
|
70
|
+
"configuration": {"historyScope": "task"}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
For `GetTask` and `ListTasks`, set it directly in `params`. If changing the
|
|
76
|
+
request body is not possible, send `LangGraph-A2A-History-Scope: task` instead.
|
|
77
|
+
An explicit request value takes precedence over the header.
|
|
78
|
+
|
|
79
|
+
```json
|
|
80
|
+
{
|
|
81
|
+
"jsonrpc": "2.0",
|
|
82
|
+
"id": "2",
|
|
83
|
+
"method": "GetTask",
|
|
84
|
+
"params": {"id": "<taskId>", "historyScope": "task"}
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
```json
|
|
89
|
+
{
|
|
90
|
+
"jsonrpc": "2.0",
|
|
91
|
+
"id": "3",
|
|
92
|
+
"method": "ListTasks",
|
|
93
|
+
"params": {"contextId": "<contextId>", "historyScope": "task"}
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
The agent card advertises support through the
|
|
98
|
+
`https://langchain.com/a2a/extensions/history-scope/v1` extension.
|
|
99
|
+
|
|
50
100
|
## How-To
|
|
51
101
|
|
|
52
102
|
#### Attaching a debugger
|
|
@@ -98,4 +148,4 @@ Options:
|
|
|
98
148
|
|
|
99
149
|
## License
|
|
100
150
|
|
|
101
|
-
This project is licensed under the Elastic License 2.0 - see the [LICENSE](./LICENSE) file for details.
|
|
151
|
+
This project is licensed under the Elastic License 2.0 - see the [LICENSE](./LICENSE) file for details.
|
|
@@ -251,14 +251,14 @@ requires-dist = [
|
|
|
251
251
|
{ name = "click", specifier = ">=8.4.1" },
|
|
252
252
|
{ name = "datadog-api-client", specifier = ">=2.56.0" },
|
|
253
253
|
{ name = "httpx", specifier = ">=0.27.0" },
|
|
254
|
-
{ name = "langgraph-sdk", specifier = ">=0.4.
|
|
254
|
+
{ name = "langgraph-sdk", specifier = ">=0.4.4" },
|
|
255
255
|
{ name = "python-dateutil", specifier = ">=2.8.0" },
|
|
256
256
|
{ name = "structlog", specifier = ">=26.1.0" },
|
|
257
257
|
]
|
|
258
258
|
|
|
259
259
|
[[package]]
|
|
260
260
|
name = "langgraph-sdk"
|
|
261
|
-
version = "0.4.
|
|
261
|
+
version = "0.4.4"
|
|
262
262
|
source = { registry = "https://pypi.org/simple" }
|
|
263
263
|
dependencies = [
|
|
264
264
|
{ name = "httpx" },
|
|
@@ -267,9 +267,9 @@ dependencies = [
|
|
|
267
267
|
{ name = "orjson" },
|
|
268
268
|
{ name = "websockets" },
|
|
269
269
|
]
|
|
270
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
270
|
+
sdist = { url = "https://files.pythonhosted.org/packages/3f/ae/91446c1fffa04a2dc1f81afbfb5bfff3590452891a72bd9098a656ab2657/langgraph_sdk-0.4.4.tar.gz", hash = "sha256:4e651ffa09de695681579396375377bdde23bedbc8e35b070e615cbd5af7da8b", size = 345789, upload-time = "2026-08-27T21:25:22.593Z" }
|
|
271
271
|
wheels = [
|
|
272
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
272
|
+
{ url = "https://files.pythonhosted.org/packages/43/d5/2ad7f3a835c6fcebf58b6669552536ecd52d2dfe4cf49c6c36648fd83572/langgraph_sdk-0.4.4-py3-none-any.whl", hash = "sha256:39afe416c91742925e6f8a93715f566d499b36e1b636b804a4ffe3190e4f4e64", size = 162270, upload-time = "2026-08-27T21:25:21.072Z" },
|
|
273
273
|
]
|
|
274
274
|
|
|
275
275
|
[[package]]
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# https://github.com/langchain-ai/docs/blob/main/src/langsmith/setup-app-requirements-txt.mdx
|
|
3
3
|
# https://github.com/langchain-ai/docs/blob/main/src/langsmith/setup-pyproject.mdx
|
|
4
4
|
langgraph>=0.4.10,<2
|
|
5
|
-
langgraph-sdk>=0.
|
|
5
|
+
langgraph-sdk>=0.4.4
|
|
6
6
|
langgraph-checkpoint>=3.0.1,<5
|
|
7
7
|
langchain-core>=0.3.66
|
|
8
8
|
langsmith>=0.7.31
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.15.0.dev5"
|
|
@@ -53,6 +53,9 @@ _assistant_schemas_cache = LRUCache[dict[str, Any]](max_size=1000, ttl=60)
|
|
|
53
53
|
|
|
54
54
|
MAX_HISTORY_LENGTH_REQUESTED = 10
|
|
55
55
|
LANGGRAPH_HISTORY_QUERY_LIMIT = 500
|
|
56
|
+
HISTORY_SCOPE_EXTENSION_URI = "https://langchain.com/a2a/extensions/history-scope/v1"
|
|
57
|
+
HISTORY_SCOPE_HEADER = "LangGraph-A2A-History-Scope"
|
|
58
|
+
HistoryScope = Literal["context", "task"]
|
|
56
59
|
|
|
57
60
|
|
|
58
61
|
# ============================================================================
|
|
@@ -262,6 +265,17 @@ def _validate_history_length(history_length: Any) -> str | None:
|
|
|
262
265
|
return None
|
|
263
266
|
|
|
264
267
|
|
|
268
|
+
def _resolve_history_scope(
|
|
269
|
+
options: dict[str, Any], headers: Headers
|
|
270
|
+
) -> tuple[HistoryScope, str | None]:
|
|
271
|
+
history_scope = options.get("historyScope")
|
|
272
|
+
if history_scope is None:
|
|
273
|
+
history_scope = headers.get(HISTORY_SCOPE_HEADER, "context")
|
|
274
|
+
if history_scope not in ("context", "task"):
|
|
275
|
+
return "context", "historyScope must be 'context' or 'task'"
|
|
276
|
+
return cast("HistoryScope", history_scope), None
|
|
277
|
+
|
|
278
|
+
|
|
265
279
|
def _to_spec_format(data: Any) -> Any:
|
|
266
280
|
"""Recursively convert internal roles/states to A2A spec format.
|
|
267
281
|
|
|
@@ -1455,6 +1469,7 @@ def _convert_messages_to_a2a_format(
|
|
|
1455
1469
|
context_id: str,
|
|
1456
1470
|
*,
|
|
1457
1471
|
history_length: int | None = None,
|
|
1472
|
+
history_scope: HistoryScope = "context",
|
|
1458
1473
|
a2ui: A2UIContext,
|
|
1459
1474
|
task_ids_by_start_id: dict[str, str] | None = None,
|
|
1460
1475
|
) -> list[dict[str, Any]]:
|
|
@@ -1468,9 +1483,10 @@ def _convert_messages_to_a2a_format(
|
|
|
1468
1483
|
|
|
1469
1484
|
Args:
|
|
1470
1485
|
messages: List of LangChain messages
|
|
1471
|
-
task_id:
|
|
1486
|
+
task_id: Requested task ID and context-scope fallback for legacy messages
|
|
1472
1487
|
context_id: The context ID to assign to all messages
|
|
1473
1488
|
history_length: Maximum number of visible A2A messages to return.
|
|
1489
|
+
history_scope: Whether to return the whole context or only this task.
|
|
1474
1490
|
|
|
1475
1491
|
Returns:
|
|
1476
1492
|
List of A2A messages
|
|
@@ -1480,7 +1496,7 @@ def _convert_messages_to_a2a_format(
|
|
|
1480
1496
|
|
|
1481
1497
|
# A task-stamped user message starts a new provenance segment. Agent and
|
|
1482
1498
|
# tool messages that follow belong to that task until the next stamped turn.
|
|
1483
|
-
current_task_id: str | None = task_id
|
|
1499
|
+
current_task_id: str | None = None if history_scope == "task" else task_id
|
|
1484
1500
|
known_task_ids = (
|
|
1485
1501
|
set(task_ids_by_start_id.values()) if task_ids_by_start_id is not None else None
|
|
1486
1502
|
)
|
|
@@ -1498,16 +1514,24 @@ def _convert_messages_to_a2a_format(
|
|
|
1498
1514
|
stored_task_id = (
|
|
1499
1515
|
stored_a2a.get("task_id") if isinstance(stored_a2a, dict) else None
|
|
1500
1516
|
)
|
|
1517
|
+
stored_task_start_id = (
|
|
1518
|
+
stored_a2a.get("task_start_id")
|
|
1519
|
+
if isinstance(stored_a2a, dict)
|
|
1520
|
+
else None
|
|
1521
|
+
)
|
|
1501
1522
|
if isinstance(stored_task_id, str) and stored_task_id:
|
|
1502
1523
|
current_task_id = (
|
|
1503
1524
|
stored_task_id
|
|
1504
|
-
if known_task_ids is None
|
|
1525
|
+
if known_task_ids is None
|
|
1526
|
+
or stored_task_id == task_id
|
|
1527
|
+
or stored_task_id in known_task_ids
|
|
1505
1528
|
else None
|
|
1506
1529
|
)
|
|
1507
|
-
elif isinstance(
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1530
|
+
elif isinstance(stored_task_start_id, str) and stored_task_start_id:
|
|
1531
|
+
if task_ids_by_start_id is not None:
|
|
1532
|
+
current_task_id = task_ids_by_start_id.get(stored_task_start_id)
|
|
1533
|
+
elif history_scope == "task":
|
|
1534
|
+
current_task_id = None
|
|
1511
1535
|
|
|
1512
1536
|
if current_task_id is None:
|
|
1513
1537
|
continue
|
|
@@ -1543,6 +1567,10 @@ def _convert_messages_to_a2a_format(
|
|
|
1543
1567
|
}
|
|
1544
1568
|
a2a_messages.append(a2a_message)
|
|
1545
1569
|
|
|
1570
|
+
if history_scope == "task":
|
|
1571
|
+
a2a_messages = [
|
|
1572
|
+
message for message in a2a_messages if message["taskId"] == task_id
|
|
1573
|
+
]
|
|
1546
1574
|
if history_length is None:
|
|
1547
1575
|
return a2a_messages
|
|
1548
1576
|
if history_length == 0:
|
|
@@ -1557,6 +1585,7 @@ async def _create_task_response(
|
|
|
1557
1585
|
assistant_id: str,
|
|
1558
1586
|
a2ui: A2UIContext,
|
|
1559
1587
|
history_length: int | None = None,
|
|
1588
|
+
history_scope: HistoryScope = "context",
|
|
1560
1589
|
task_ids_by_start_id: dict[str, str] | None = None,
|
|
1561
1590
|
) -> dict[str, Any]:
|
|
1562
1591
|
"""Create A2A Task response structure for both success and failure cases.
|
|
@@ -1567,6 +1596,7 @@ async def _create_task_response(
|
|
|
1567
1596
|
result: LangGraph execution result
|
|
1568
1597
|
assistant_id: The assistant ID used
|
|
1569
1598
|
history_length: Maximum public history messages to include.
|
|
1599
|
+
history_scope: Whether to return the whole context or only this task.
|
|
1570
1600
|
|
|
1571
1601
|
Returns:
|
|
1572
1602
|
A2A Task response dictionary
|
|
@@ -1578,6 +1608,7 @@ async def _create_task_response(
|
|
|
1578
1608
|
task_id,
|
|
1579
1609
|
context_id,
|
|
1580
1610
|
history_length=history_length,
|
|
1611
|
+
history_scope=history_scope,
|
|
1581
1612
|
a2ui=a2ui,
|
|
1582
1613
|
task_ids_by_start_id=task_ids_by_start_id,
|
|
1583
1614
|
)
|
|
@@ -1975,6 +2006,16 @@ async def handle_message_send(
|
|
|
1975
2006
|
"message": history_error,
|
|
1976
2007
|
}
|
|
1977
2008
|
}
|
|
2009
|
+
history_scope, history_scope_error = _resolve_history_scope(
|
|
2010
|
+
configuration, request.headers
|
|
2011
|
+
)
|
|
2012
|
+
if history_scope_error:
|
|
2013
|
+
return {
|
|
2014
|
+
"error": {
|
|
2015
|
+
"code": ERROR_CODE_INVALID_PARAMS,
|
|
2016
|
+
"message": history_scope_error,
|
|
2017
|
+
}
|
|
2018
|
+
}
|
|
1978
2019
|
|
|
1979
2020
|
message = params.get("message")
|
|
1980
2021
|
if not message:
|
|
@@ -2189,6 +2230,18 @@ async def handle_message_send(
|
|
|
2189
2230
|
run_id=run["run_id"],
|
|
2190
2231
|
headers=request.headers,
|
|
2191
2232
|
)
|
|
2233
|
+
if (
|
|
2234
|
+
history_scope == "task"
|
|
2235
|
+
and history_length != 0
|
|
2236
|
+
and "messages" not in input_content
|
|
2237
|
+
):
|
|
2238
|
+
result = dict(result)
|
|
2239
|
+
result["messages"] = await _get_historical_messages_for_task(
|
|
2240
|
+
context_id,
|
|
2241
|
+
str(run["run_id"]),
|
|
2242
|
+
request.headers,
|
|
2243
|
+
task_id=task_id,
|
|
2244
|
+
)
|
|
2192
2245
|
|
|
2193
2246
|
return await _create_task_response(
|
|
2194
2247
|
task_id=task_id,
|
|
@@ -2196,6 +2249,7 @@ async def handle_message_send(
|
|
|
2196
2249
|
result=result,
|
|
2197
2250
|
assistant_id=assistant_id,
|
|
2198
2251
|
history_length=history_length,
|
|
2252
|
+
history_scope=history_scope,
|
|
2199
2253
|
a2ui=a2ui,
|
|
2200
2254
|
task_ids_by_start_id=task_ids_by_start_id,
|
|
2201
2255
|
)
|
|
@@ -2221,6 +2275,8 @@ async def _get_historical_messages_for_task(
|
|
|
2221
2275
|
context_id: str,
|
|
2222
2276
|
task_run_id: str,
|
|
2223
2277
|
request_headers: Headers,
|
|
2278
|
+
*,
|
|
2279
|
+
task_id: str,
|
|
2224
2280
|
) -> list[Any]:
|
|
2225
2281
|
"""Get historical messages for a specific task by matching run_id."""
|
|
2226
2282
|
history = await get_client().threads.get_history(
|
|
@@ -2235,8 +2291,34 @@ async def _get_historical_messages_for_task(
|
|
|
2235
2291
|
target_checkpoint = max(
|
|
2236
2292
|
history, key=lambda c: c.get("metadata", {}).get("step", 0)
|
|
2237
2293
|
)
|
|
2238
|
-
|
|
2239
|
-
|
|
2294
|
+
messages = target_checkpoint["values"].get("messages", []) or []
|
|
2295
|
+
input_checkpoint = min(
|
|
2296
|
+
history, key=lambda c: c.get("metadata", {}).get("step", 0)
|
|
2297
|
+
)
|
|
2298
|
+
input_messages = input_checkpoint["values"].get("messages", []) or []
|
|
2299
|
+
new_message_index = len(input_messages)
|
|
2300
|
+
if (
|
|
2301
|
+
new_message_index < len(messages)
|
|
2302
|
+
and messages[:new_message_index] == input_messages
|
|
2303
|
+
and isinstance(messages[new_message_index], dict)
|
|
2304
|
+
):
|
|
2305
|
+
message = messages[new_message_index]
|
|
2306
|
+
additional_kwargs = message.get("additional_kwargs")
|
|
2307
|
+
additional_kwargs = (
|
|
2308
|
+
dict(additional_kwargs) if isinstance(additional_kwargs, dict) else {}
|
|
2309
|
+
)
|
|
2310
|
+
stored_a2a = additional_kwargs.get("a2a")
|
|
2311
|
+
stored_a2a = dict(stored_a2a) if isinstance(stored_a2a, dict) else {}
|
|
2312
|
+
if not stored_a2a.get("task_id") and not stored_a2a.get("task_start_id"):
|
|
2313
|
+
messages = list(messages)
|
|
2314
|
+
messages[new_message_index] = {
|
|
2315
|
+
**message,
|
|
2316
|
+
"additional_kwargs": {
|
|
2317
|
+
**additional_kwargs,
|
|
2318
|
+
"a2a": {**stored_a2a, "task_id": task_id},
|
|
2319
|
+
},
|
|
2320
|
+
}
|
|
2321
|
+
return messages
|
|
2240
2322
|
else:
|
|
2241
2323
|
return []
|
|
2242
2324
|
|
|
@@ -2264,6 +2346,9 @@ async def handle_tasks_get(
|
|
|
2264
2346
|
task_id_raw = params.get("id")
|
|
2265
2347
|
context_id_param = params.get("contextId")
|
|
2266
2348
|
history_length = params.get("historyLength")
|
|
2349
|
+
history_scope, history_scope_error = _resolve_history_scope(
|
|
2350
|
+
params, request.headers
|
|
2351
|
+
)
|
|
2267
2352
|
|
|
2268
2353
|
if not task_id_raw:
|
|
2269
2354
|
return {
|
|
@@ -2310,6 +2395,13 @@ async def handle_tasks_get(
|
|
|
2310
2395
|
"message": history_error,
|
|
2311
2396
|
}
|
|
2312
2397
|
}
|
|
2398
|
+
if history_scope_error:
|
|
2399
|
+
return {
|
|
2400
|
+
"error": {
|
|
2401
|
+
"code": ERROR_CODE_INVALID_PARAMS,
|
|
2402
|
+
"message": history_scope_error,
|
|
2403
|
+
}
|
|
2404
|
+
}
|
|
2313
2405
|
|
|
2314
2406
|
assistant = await _get_assistant(assistant_id, request.headers)
|
|
2315
2407
|
|
|
@@ -2321,13 +2413,14 @@ async def handle_tasks_get(
|
|
|
2321
2413
|
try:
|
|
2322
2414
|
task_run_id = run_info.get("run_id")
|
|
2323
2415
|
messages = await _get_historical_messages_for_task(
|
|
2324
|
-
context_id, task_run_id, request.headers
|
|
2416
|
+
context_id, task_run_id, request.headers, task_id=task_id
|
|
2325
2417
|
)
|
|
2326
2418
|
thread_history = _convert_messages_to_a2a_format(
|
|
2327
2419
|
messages,
|
|
2328
2420
|
task_id,
|
|
2329
2421
|
context_id,
|
|
2330
2422
|
history_length=history_length,
|
|
2423
|
+
history_scope=history_scope,
|
|
2331
2424
|
a2ui=_a2ui_context_for_run(
|
|
2332
2425
|
run_info, enabled=_a2ui_enabled(assistant)
|
|
2333
2426
|
),
|
|
@@ -2599,6 +2692,14 @@ async def handle_list_tasks(
|
|
|
2599
2692
|
}
|
|
2600
2693
|
}
|
|
2601
2694
|
history_length: int | None = raw_history_length
|
|
2695
|
+
history_scope, history_scope_error = _resolve_history_scope(params, request.headers)
|
|
2696
|
+
if history_scope_error:
|
|
2697
|
+
return {
|
|
2698
|
+
"error": {
|
|
2699
|
+
"code": ERROR_CODE_INVALID_PARAMS,
|
|
2700
|
+
"message": history_scope_error,
|
|
2701
|
+
}
|
|
2702
|
+
}
|
|
2602
2703
|
|
|
2603
2704
|
valid_states = {
|
|
2604
2705
|
"TASK_STATE_SUBMITTED",
|
|
@@ -2781,12 +2882,14 @@ async def handle_list_tasks(
|
|
|
2781
2882
|
task["contextId"],
|
|
2782
2883
|
run_id_by_task_id[task["id"]],
|
|
2783
2884
|
request.headers,
|
|
2885
|
+
task_id=task["id"],
|
|
2784
2886
|
)
|
|
2785
2887
|
task["history"] = _convert_messages_to_a2a_format(
|
|
2786
2888
|
messages,
|
|
2787
2889
|
task["id"],
|
|
2788
2890
|
task["contextId"],
|
|
2789
2891
|
history_length=history_length,
|
|
2892
|
+
history_scope=history_scope,
|
|
2790
2893
|
a2ui=a2ui_by_task_id[task["id"]],
|
|
2791
2894
|
task_ids_by_start_id=task_ids_by_start_id_by_context.get(
|
|
2792
2895
|
task["contextId"]
|
|
@@ -2946,7 +3049,19 @@ async def generate_agent_card(request: ApiRequest, assistant_id: str) -> dict[st
|
|
|
2946
3049
|
assistant.get("description") or f"{assistant_name} assistant"
|
|
2947
3050
|
)
|
|
2948
3051
|
input_modes, output_modes = _resolve_agent_card_modes(assistant)
|
|
2949
|
-
extensions: list[dict[str, Any]] = [
|
|
3052
|
+
extensions: list[dict[str, Any]] = [
|
|
3053
|
+
{
|
|
3054
|
+
"uri": HISTORY_SCOPE_EXTENSION_URI,
|
|
3055
|
+
"description": "Choose task-only or full-context response history",
|
|
3056
|
+
"required": False,
|
|
3057
|
+
"params": {
|
|
3058
|
+
"header": HISTORY_SCOPE_HEADER,
|
|
3059
|
+
"values": ["context", "task"],
|
|
3060
|
+
"default": "context",
|
|
3061
|
+
"methods": ["SendMessage", "GetTask", "ListTasks"],
|
|
3062
|
+
},
|
|
3063
|
+
}
|
|
3064
|
+
]
|
|
2950
3065
|
if _a2ui_enabled(assistant):
|
|
2951
3066
|
if A2UI_MIME_TYPE not in input_modes:
|
|
2952
3067
|
input_modes.append(A2UI_MIME_TYPE)
|
|
@@ -3013,8 +3128,7 @@ async def generate_agent_card(request: ApiRequest, assistant_id: str) -> dict[st
|
|
|
3013
3128
|
"pushNotifications": False, # Not implemented yet
|
|
3014
3129
|
"stateTransitionHistory": False,
|
|
3015
3130
|
}
|
|
3016
|
-
|
|
3017
|
-
capabilities["extensions"] = extensions
|
|
3131
|
+
capabilities["extensions"] = extensions
|
|
3018
3132
|
|
|
3019
3133
|
return {
|
|
3020
3134
|
"name": assistant_name,
|
|
@@ -205,6 +205,9 @@ LSD_GRPC_SERVER_MAX_SEND_MSG_BYTES = env(
|
|
|
205
205
|
"LSD_GRPC_SERVER_MAX_SEND_MSG_BYTES", cast=int, default=300 * 1024 * 1024
|
|
206
206
|
)
|
|
207
207
|
LSD_PUBLISH_QUEUE_SIZE = env("LSD_PUBLISH_QUEUE_SIZE", cast=int, default=512)
|
|
208
|
+
LSD_CACHE_PACKAGES_DISTRIBUTIONS = env(
|
|
209
|
+
"LSD_CACHE_PACKAGES_DISTRIBUTIONS", cast=bool, default=True
|
|
210
|
+
)
|
|
208
211
|
# Per-run protocol v2 event buffer size. Each ``EventStreamingSession``
|
|
209
212
|
# retains at most this many normalized protocol events for
|
|
210
213
|
# reconnecting clients to replay via the body ``since`` cursor.
|
|
@@ -697,13 +697,14 @@ def patch_packages_distributions() -> None:
|
|
|
697
697
|
(once per google.cloud.* sub-package). With ddtrace's import hooks each
|
|
698
698
|
call takes ~13 s in production, totalling ~170 s.
|
|
699
699
|
|
|
700
|
-
|
|
701
|
-
|
|
700
|
+
Supported deployments fix their dependencies before startup and do not mutate
|
|
701
|
+
them at runtime, so one scan per process is enough. Late imports change
|
|
702
|
+
sys.modules rather than the installed distributions and do not invalidate it.
|
|
702
703
|
|
|
703
|
-
|
|
704
|
-
|
|
704
|
+
Each call returns its own dict, matching what the function being replaced does,
|
|
705
|
+
so a caller mutating the result cannot poison later callers.
|
|
705
706
|
"""
|
|
706
|
-
if
|
|
707
|
+
if not lg_api_config.LSD_CACHE_PACKAGES_DISTRIBUTIONS:
|
|
707
708
|
return
|
|
708
709
|
|
|
709
710
|
import importlib.metadata # noqa: PLC0415
|
|
@@ -714,13 +715,13 @@ def patch_packages_distributions() -> None:
|
|
|
714
715
|
logger.info("Caching importlib.metadata.packages_distributions()")
|
|
715
716
|
|
|
716
717
|
original = importlib.metadata.packages_distributions
|
|
717
|
-
cache: dict | None = None
|
|
718
|
+
cache: dict[str, list[str]] | None = None
|
|
718
719
|
|
|
719
|
-
def _cached():
|
|
720
|
+
def _cached() -> dict[str, list[str]]:
|
|
720
721
|
nonlocal cache
|
|
721
722
|
if cache is None:
|
|
722
723
|
cache = original()
|
|
723
|
-
return cache
|
|
724
|
+
return {name: list(distributions) for name, distributions in cache.items()}
|
|
724
725
|
|
|
725
726
|
_cached._cached = True
|
|
726
727
|
importlib.metadata.packages_distributions = _cached
|
|
@@ -776,7 +776,7 @@ requires-dist = [
|
|
|
776
776
|
{ name = "langgraph", specifier = ">=0.4.10,<2" },
|
|
777
777
|
{ name = "langgraph-checkpoint", specifier = ">=3.0.1,<5" },
|
|
778
778
|
{ name = "langgraph-runtime-inmem", editable = "../runtime_inmem" },
|
|
779
|
-
{ name = "langgraph-sdk", specifier = ">=0.
|
|
779
|
+
{ name = "langgraph-sdk", specifier = ">=0.4.4" },
|
|
780
780
|
{ name = "langsmith", extras = ["otel"], specifier = ">=0.6.3" },
|
|
781
781
|
{ name = "opentelemetry-api", specifier = ">=0.0.1" },
|
|
782
782
|
{ name = "opentelemetry-exporter-otlp-proto-http", specifier = ">=0.0.1" },
|
|
@@ -958,7 +958,7 @@ dev = [
|
|
|
958
958
|
|
|
959
959
|
[[package]]
|
|
960
960
|
name = "langgraph-sdk"
|
|
961
|
-
version = "0.4.
|
|
961
|
+
version = "0.4.4"
|
|
962
962
|
source = { registry = "https://pypi.org/simple" }
|
|
963
963
|
dependencies = [
|
|
964
964
|
{ name = "httpx" },
|
|
@@ -967,9 +967,9 @@ dependencies = [
|
|
|
967
967
|
{ name = "orjson" },
|
|
968
968
|
{ name = "websockets" },
|
|
969
969
|
]
|
|
970
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
970
|
+
sdist = { url = "https://files.pythonhosted.org/packages/3f/ae/91446c1fffa04a2dc1f81afbfb5bfff3590452891a72bd9098a656ab2657/langgraph_sdk-0.4.4.tar.gz", hash = "sha256:4e651ffa09de695681579396375377bdde23bedbc8e35b070e615cbd5af7da8b", size = 345789, upload-time = "2026-08-27T21:25:22.593Z" }
|
|
971
971
|
wheels = [
|
|
972
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
972
|
+
{ url = "https://files.pythonhosted.org/packages/43/d5/2ad7f3a835c6fcebf58b6669552536ecd52d2dfe4cf49c6c36648fd83572/langgraph_sdk-0.4.4-py3-none-any.whl", hash = "sha256:39afe416c91742925e6f8a93715f566d499b36e1b636b804a4ffe3190e4f4e64", size = 162270, upload-time = "2026-08-27T21:25:21.072Z" },
|
|
973
973
|
]
|
|
974
974
|
|
|
975
975
|
[[package]]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.15.0.dev4"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/assistant.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/benchmarks.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/delta_turns.ts
RENAMED
|
File without changes
|
|
File without changes
|
{langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/log-failure.ts
RENAMED
|
File without changes
|
{langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/meta_workload.ts
RENAMED
|
File without changes
|
{langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/store.ts
RENAMED
|
File without changes
|
{langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/stream_write.ts
RENAMED
|
File without changes
|
{langgraph_api-0.15.0.dev4 → langgraph_api-0.15.0.dev5}/benchmark/benchmark-runners/thread.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|