langgraph-api 0.16.0.dev8__tar.gz → 0.16.0.dev10__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.16.0.dev8 → langgraph_api-0.16.0.dev10}/Makefile +4 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/PKG-INFO +1 -1
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/README.md +17 -4
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/benchmark-runners/delta_turns.ts +31 -5
- langgraph_api-0.16.0.dev10/benchmark/delta-report.js +580 -0
- langgraph_api-0.16.0.dev10/benchmark/delta-report.test.js +174 -0
- langgraph_api-0.16.0.dev10/langgraph_api/__init__.py +1 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/api/__init__.py +53 -8
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/api/runs.py +73 -43
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/api/store.py +40 -14
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/js/client.mts +8 -1
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/js/remote.py +95 -10
- langgraph_api-0.16.0.dev10/langgraph_api/js/src/auth-mutations.mts +71 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/lc_security/transport.py +1 -1
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/schema.py +2 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/stream.py +9 -10
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/worker.py +14 -0
- langgraph_api-0.16.0.dev8/langgraph_api/__init__.py +0 -1
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/.gitignore +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/LICENSE +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/README.md +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/.gitignore +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/Makefile +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/benchmark-runners/assistant.ts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/benchmark-runners/benchmark-runner.ts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/benchmark-runners/benchmark_profiles.ts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/benchmark-runners/benchmarks.ts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/benchmark-runners/cancel_first_second_completes.ts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/benchmark-runners/classify-error.test.js +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/benchmark-runners/classify-error.ts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/benchmark-runners/delta-turns-lib.test.js +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/benchmark-runners/delta-turns-lib.ts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/benchmark-runners/enqueued_runs_order.ts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/benchmark-runners/interrupt_resume.ts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/benchmark-runners/log-failure.ts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/benchmark-runners/meta_workload.ts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/benchmark-runners/store.ts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/benchmark-runners/stream_write.ts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/benchmark-runners/thread.ts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/benchmark-runners/thread_runs_metadata_search.ts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/benchmark-runners/threads_search_metadata.ts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/benchmark-runners/types.ts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/benchmark-runners/wait_write.ts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/capacity-ci.js +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/capacity-ci.test.js +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/clean-cli.js +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/clean.js +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/continuous/README.md +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/continuous/pyproject.toml +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/continuous/runner.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/continuous/uv.lock +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/daily-report.js +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/daily-report.test.js +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/graphs.js +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/history.js +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/history.test.js +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/host-v2.js +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/host-v2.test.js +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/multer.test.js +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/package.json +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/ramp.js +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/reporting/dd_reporting.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/runner-descriptions.js +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/server-metrics.js +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/server-metrics.test.js +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/slack.js +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/staircase.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/staircase_step_k6.js +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/tsconfig.json +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/update-revision.js +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/weather.js +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/yarn.lock +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/constraints.txt +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/custom_store.sql +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/forbidden.txt +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/hatch_build.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/healthcheck.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph-cloud-debugging-20260210132856.zip +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/_checkpointer/__init__.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/_checkpointer/_adapter.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/_checkpointer/protocol.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/_factory_utils.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/api/a2a.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/api/a2ui.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/api/a2ui_schemas/README.md +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/api/a2ui_schemas/client_capabilities.json +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/api/a2ui_schemas/client_data_model.json +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/api/a2ui_schemas/client_to_server.json +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/api/a2ui_schemas/server_to_client.json +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/api/assistants.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/api/event_streaming.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/api/mcp/__init__.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/api/mcp/_constants.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/api/mcp/_handlers.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/api/mcp/_models.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/api/mcp/_routes.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/api/mcp/_sanitizers.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/api/meta.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/api/openapi.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/api/profile.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/api/threads.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/api/ui.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/asgi_transport.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/asyncio.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/auth/__init__.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/auth/custom.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/auth/errors.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/auth/langsmith/__init__.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/auth/langsmith/backend.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/auth/langsmith/client.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/auth/middleware.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/auth/noop.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/auth/studio_user.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/beacon_data_plane_jwt_auth.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/cache.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/cli.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/command.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/config/__init__.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/config/_parse.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/config/schemas.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/cron_scheduler.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/encryption/__init__.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/encryption/aes_json.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/encryption/context.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/encryption/custom.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/encryption/middleware.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/encryption/shared.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/errors.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/event_streaming/__init__.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/event_streaming/capabilities.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/event_streaming/constants.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/event_streaming/event_normalizers.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/event_streaming/namespace.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/event_streaming/service.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/event_streaming/session.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/event_streaming/state_normalizers.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/event_streaming/types.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/feature_flags.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/graph.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/grpc/__init__.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/grpc/client.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/grpc/generated/core_api_pb2.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/grpc/ops/__init__.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/grpc/ops/assistants.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/grpc/ops/cache.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/grpc/ops/crons.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/grpc/ops/runs.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/grpc/ops/threads.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/grpc/server.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/grpc/servicers/__init__.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/grpc/servicers/checkpointer.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/grpc/servicers/encryption.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/http.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/http_metrics.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/http_metrics_utils.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/js/.gitignore +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/js/.prettierrc +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/js/.yarnclean +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/js/__init__.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/js/base.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/js/build.mts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/js/client.http.mts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/js/errors.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/js/global.d.ts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/js/package.json +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/js/schema.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/js/src/graph.mts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/js/src/load.hooks.mjs +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/js/src/preload.mjs +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/js/src/utils/experiment-tracing.mts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/js/src/utils/files.mts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/js/src/utils/importMap.mts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/js/src/utils/serde.mts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/js/sse.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/js/traceblock.mts +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/js/tsconfig.json +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/js/ui.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/js/yarn.lock +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/lc_security/__init__.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/lc_security/exceptions.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/lc_security/policy.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/logging.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/metadata.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/metrics_collector.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/metrics_otlp.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/middleware/__init__.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/middleware/ensure_store.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/middleware/http_logger.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/middleware/private_network.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/middleware/request_id.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/models/__init__.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/models/run.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/otel_context.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/patch.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/queue_entrypoint.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/release_tags.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/route.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/runner/__init__.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/runner/__main__.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/self_hosted_logs.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/self_hosted_metrics.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/serde.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/server.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/sse.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/state.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/store.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/stream_v2.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/timing/__init__.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/timing/profiler.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/timing/timer.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/traceblock.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/tracing_session.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/tunneling/cloudflare.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/utils/__init__.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/utils/cache.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/utils/config.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/utils/errors.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/utils/extract.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/utils/future.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/utils/headers.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/utils/network.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/utils/retriable_client.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/utils/stream_codec.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/utils/uuids.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/validation.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/webhook.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_api/worker_runtime.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/__init__.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/checkpointer.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/conversion/__init__.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/conversion/_compat.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/conversion/checkpoint.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/conversion/config.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/conversion/durability.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/conversion/store.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/conversion/struct.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/conversion/value.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/__init__.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/checkpointer_pb2.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/checkpointer_pb2.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/core_api_pb2.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/core_api_pb2.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/core_api_pb2_grpc.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/core_api_pb2_grpc.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/encryption_pb2.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/encryption_pb2.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/encryption_pb2_grpc.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/encryption_pb2_grpc.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/engine_common_pb2.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/engine_common_pb2.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/engine_common_pb2_grpc.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/engine_common_pb2_grpc.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_control_signal_pb2.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_control_signal_pb2.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_durability_pb2.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_durability_pb2.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_run_status_pb2.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_run_status_pb2.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_stream_mode_pb2.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_stream_mode_pb2.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_thread_status_pb2.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_thread_status_pb2.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/errors_pb2.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/errors_pb2.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/errors_pb2_grpc.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/errors_pb2_grpc.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/runner_pb2.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/runner_pb2.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/runner_pb2_grpc.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/runner_pb2_grpc.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/store_pb2.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/store_pb2.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/store_pb2_grpc.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/proto/store_pb2_grpc.pyi +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/serde.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_grpc_common/store.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_license/__init__.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_license/validation.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_runtime/__init__.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_runtime/checkpoint.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_runtime/database.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_runtime/lifespan.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_runtime/metrics.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_runtime/ops.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_runtime/queue.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_runtime/retry.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_runtime/routes.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/langgraph_runtime/store.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/logging.json +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/openapi.json +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/pyproject.toml +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/scripts/build_wheel.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/scripts/create_license.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/scripts/run_a2a_tck.py +0 -0
- {langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/uv.lock +0 -0
|
@@ -313,6 +313,10 @@ VERSION_KIND ?= patch
|
|
|
313
313
|
bump-version:
|
|
314
314
|
uv run --with hatch hatch version $(VERSION_KIND)
|
|
315
315
|
|
|
316
|
+
sync-runtime-inmem-dep:
|
|
317
|
+
@python3 -c 'import pathlib,re; v=pathlib.Path("../runtime_inmem/langgraph_runtime_inmem/__init__.py").read_text(); m=re.search(r"__version__\s*=\s*\"(\d+)\.(\d+)", v); major,minor=map(int,m.groups()); p=pathlib.Path("pyproject.toml"); text,n=re.subn(r"\"langgraph-runtime-inmem>=[^\"]+\",", f"\"langgraph-runtime-inmem>={major}.{minor}.0.dev0,<{major}.{minor + 1}.0.dev0\",", p.read_text(), count=1); \
|
|
318
|
+
assert n==1, "langgraph-runtime-inmem dep not found in pyproject.toml"; p.write_text(text)'
|
|
319
|
+
|
|
316
320
|
# A2A TCK (Test Compatibility Kit) targets
|
|
317
321
|
# Requires a running server: make start (in another terminal)
|
|
318
322
|
|
|
@@ -129,7 +129,11 @@ by replaying them. That moves cost from write to read, and the read cost grows w
|
|
|
129
129
|
thread depth. `delta_turns` measures it: one thread per VU, one turn per iteration,
|
|
130
130
|
`turn_duration` tagged by depth bucket.
|
|
131
131
|
|
|
132
|
-
|
|
132
|
+
`benchmark-delta.yml` runs four cells nightly, 20 users for 25 minutes each, 1 KB appended per turn (`CHECKPOINT_SIZE`): plain channel, then
|
|
133
|
+
delta snapshotting every 50 (`benchmark_delta_freq`, the deepagents setting), 500
|
|
134
|
+
(`benchmark_delta_500`) and 1000 (`benchmark_delta`, the library default). `delta-report.js` posts
|
|
135
|
+
a headline table (non-delta vs delta at 50: read, write, storage by depth) and one table per metric
|
|
136
|
+
across the three frequencies. The messages and migration cells stay manual. Run the cells one at a time and compare `turn_duration` by depth. Both sides get slower
|
|
133
137
|
with depth for different reasons, the control by re-writing a growing value and delta by
|
|
134
138
|
replaying more writes, so the deliverable is which curve is worse and where they cross.
|
|
135
139
|
|
|
@@ -138,6 +142,7 @@ replaying more writes, so the deliverable is which curve is worse and where they
|
|
|
138
142
|
| control | `GRAPH_ID=benchmark EXPECT_DELTA=false` |
|
|
139
143
|
| delta, snapshot every 1000 | `GRAPH_ID=benchmark_delta` |
|
|
140
144
|
| delta, snapshot every 50 | `GRAPH_ID=benchmark_delta_freq` |
|
|
145
|
+
| delta, snapshot every 500 | `GRAPH_ID=benchmark_delta_500` |
|
|
141
146
|
| delta on a message list | `GRAPH_ID=benchmark_delta_messages PAYLOAD=messages` |
|
|
142
147
|
| migration | `GRAPH_ID=benchmark_delta MIGRATE_FROM_GRAPH_ID=benchmark MIGRATE_AFTER=200` |
|
|
143
148
|
|
|
@@ -154,7 +159,7 @@ Knobs beyond the common ones:
|
|
|
154
159
|
- `MIGRATE_FROM_GRAPH_ID` / `MIGRATE_AFTER` - run the first N turns on another graph, then
|
|
155
160
|
switch on the same thread.
|
|
156
161
|
- `VERIFY_EVERY` - cold re-read cadence in turns. Default 50, `0` disables.
|
|
157
|
-
- `DEPTH_BUCKET` - width of a depth bucket.
|
|
162
|
+
- `DEPTH_BUCKET` - width of a depth bucket. Defaults to `VERIFY_EVERY`, so each bucket holds one cold read per thread.
|
|
158
163
|
|
|
159
164
|
Two things to know before reading any result:
|
|
160
165
|
|
|
@@ -166,7 +171,9 @@ Two things to know before reading any result:
|
|
|
166
171
|
|
|
167
172
|
The runner fails a turn rather than reporting a false pass when delta is not actually on:
|
|
168
173
|
the `DeltaChannel` import is version-guarded, and its stub degrades to a plain channel.
|
|
169
|
-
At every `VERIFY_EVERY` turn it also
|
|
174
|
+
At every `VERIFY_EVERY` turn it also times the cold `GET /threads/{thread_id}/state` as
|
|
175
|
+
`state_read_duration` (the read path alone; a turn is one save plus the read before it), and
|
|
176
|
+
reads `GET /threads/{thread_id}/storage` and records
|
|
170
177
|
`thread_storage_bytes` tagged by depth bucket and graph, so the control and delta cells can
|
|
171
178
|
be compared on the bytes they occupy, which is what the feature exists to reduce.
|
|
172
179
|
|
|
@@ -185,6 +192,12 @@ be compared on the bytes they occupy, which is what the feature exists to reduce
|
|
|
185
192
|
|
|
186
193
|
- Daily ramp benchmark: `.github/workflows/benchmark.yml`
|
|
187
194
|
- Daily capacity matrix: `.github/workflows/benchmark-capacity-matrix.yml`
|
|
195
|
+
- Daily delta-channel cells: `.github/workflows/benchmark-delta.yml`, reported by `delta-report.js`
|
|
196
|
+
|
|
197
|
+
The staging deployments build their graphs from
|
|
198
|
+
[langgraph-server-benchmarks](https://github.com/langchain-ai/langgraph-server-benchmarks), not
|
|
199
|
+
from this repo. Its `src/agent/graph.py` is a copy of `api/tests/graphs/benchmark.py`; a graph
|
|
200
|
+
change here reaches the nightly only once that copy is updated.
|
|
188
201
|
|
|
189
202
|
### Capacity matrix setup
|
|
190
203
|
|
|
@@ -203,7 +216,7 @@ Every report follows one shape so the channel reads the same way each morning, o
|
|
|
203
216
|
- One table per deployment, about 40 characters wide so it fits a phone, with `▲ better` / `▼ worse` markers on cells that left their usual range.
|
|
204
217
|
- One legend line (pass rule, arrows, dot colors), then a link to the thread, which holds the per-cell or per-run numbers and the longer *How to read*, and to the run's artifacts.
|
|
205
218
|
|
|
206
|
-
Both reports compare tonight with the previous scheduled nights (`history.js`, artifacts fetched with `gh`). A figure is flagged only when it leaves that cell's own observed range, and only once five same-kind nights exist; before that the table says how many nights it has. The daily benchmark posts one digest per workflow once its last runner finishes (`daily-report.js`, fed by each runner's artifact), not one message per runner.
|
|
219
|
+
Both reports compare tonight with the previous scheduled nights (`history.js`, artifacts fetched with `gh`). A figure is flagged only when it leaves that cell's own observed range, and only once five same-kind nights exist; before that the table says how many nights it has. The daily benchmark posts one digest per workflow once its last runner finishes (`daily-report.js`, fed by each runner's artifact), not one message per runner. The delta-channel report (`delta-report.js`) keeps the plain-vs-delta table in the channel and puts the snapshot-frequency sweep in the thread.
|
|
207
220
|
|
|
208
221
|
Local commands:
|
|
209
222
|
|
{langgraph_api-0.16.0.dev8 → langgraph_api-0.16.0.dev10}/benchmark/benchmark-runners/delta_turns.ts
RENAMED
|
@@ -30,6 +30,8 @@ const PAYLOAD_CHANNELS = [
|
|
|
30
30
|
|
|
31
31
|
/** Tagged by depth: VUs ramp in, so clock time is not thread length. */
|
|
32
32
|
const turnDuration = new Trend('turn_duration', true);
|
|
33
|
+
/** The read path alone: a cold GET /state replays the channel without writing. */
|
|
34
|
+
const stateReadDuration = new Trend('state_read_duration', true);
|
|
33
35
|
const threadStorageBytes = new Trend('thread_storage_bytes', false);
|
|
34
36
|
|
|
35
37
|
const TURN_CONFIG: Omit<DeltaTurnsOptions, 'graphId'> = {
|
|
@@ -37,7 +39,8 @@ const TURN_CONFIG: Omit<DeltaTurnsOptions, 'graphId'> = {
|
|
|
37
39
|
migrateAfter: parseInt(__ENV.MIGRATE_AFTER || '0', 10),
|
|
38
40
|
expectDelta: (__ENV.EXPECT_DELTA || 'true') === 'true',
|
|
39
41
|
verifyEvery: parseInt(__ENV.VERIFY_EVERY || '50', 10),
|
|
40
|
-
|
|
42
|
+
// One bucket per cold read, so every row of the report is one sample per thread.
|
|
43
|
+
bucketSize: parseInt(__ENV.DEPTH_BUCKET || __ENV.VERIFY_EVERY || '50', 10),
|
|
41
44
|
};
|
|
42
45
|
|
|
43
46
|
// Each k6 VU runs this module in its own context, so these are per VU.
|
|
@@ -49,6 +52,8 @@ interface DeltaTurnsData {
|
|
|
49
52
|
plan: TurnPlan;
|
|
50
53
|
guardFailure: string | null;
|
|
51
54
|
drift: string | null;
|
|
55
|
+
/** Non-200 status of the cold state read, which is a failed request, not a correctness failure. */
|
|
56
|
+
stateStatus: number | null;
|
|
52
57
|
}
|
|
53
58
|
|
|
54
59
|
export class DeltaTurns extends BenchmarkRunner {
|
|
@@ -93,13 +98,24 @@ export class DeltaTurns extends BenchmarkRunner {
|
|
|
93
98
|
|
|
94
99
|
let guardFailure: string | null = null;
|
|
95
100
|
let drift: string | null = null;
|
|
101
|
+
let stateStatus: number | null = null;
|
|
96
102
|
// A failed body is not state, and comparing against it would report drift
|
|
97
103
|
// on top of the failure that caused it.
|
|
98
104
|
if (response.status === 200 && (plan.guard || plan.verify)) {
|
|
99
105
|
const state = http.get(`${baseUrl}/threads/${threadId}/state`, requestParams);
|
|
106
|
+
// Time to first byte: the server cannot start answering before it has
|
|
107
|
+
// rebuilt the value, and the body that follows is the whole state, which
|
|
108
|
+
// at depth is hundreds of KB the turn itself never sends. Wall time made
|
|
109
|
+
// a plain-channel read cost as much as a whole turn. The turn-2 guard
|
|
110
|
+
// read is at depth 2, not the bucket's end, so it is not timed.
|
|
111
|
+
if (state.status === 200 && plan.verify) {
|
|
112
|
+
stateReadDuration.add(state.timings.waiting, { depth: plan.depthBucket });
|
|
113
|
+
}
|
|
100
114
|
addResponse(responses, 'state', state);
|
|
101
115
|
const body = state.status === 200 ? safeJson(state.body) : null;
|
|
102
|
-
if (
|
|
116
|
+
if (state.status !== 200) {
|
|
117
|
+
stateStatus = state.status;
|
|
118
|
+
} else if (body === null) {
|
|
103
119
|
guardFailure = plan.guard ? 'state_unreadable' : guardFailure;
|
|
104
120
|
drift = plan.verify ? 'state_unreadable' : drift;
|
|
105
121
|
} else {
|
|
@@ -111,7 +127,13 @@ export class DeltaTurns extends BenchmarkRunner {
|
|
|
111
127
|
}
|
|
112
128
|
}
|
|
113
129
|
if (plan.verify) {
|
|
114
|
-
|
|
130
|
+
// Servers before 0.16 have no storage endpoint. A 404 there is a missing
|
|
131
|
+
// sample, not a failed request: without this, one 404 per 50 turns is
|
|
132
|
+
// about 2% and trips the 1% error budget on every cell.
|
|
133
|
+
const storage = http.get(`${baseUrl}/threads/${threadId}/storage`, {
|
|
134
|
+
...requestParams,
|
|
135
|
+
responseCallback: http.expectedStatuses(200, 404),
|
|
136
|
+
});
|
|
115
137
|
addResponse(responses, 'storage', storage);
|
|
116
138
|
const total = storage.status === 200 ? safeJson(storage.body)?.total_bytes : null;
|
|
117
139
|
if (typeof total === 'number') {
|
|
@@ -120,7 +142,7 @@ export class DeltaTurns extends BenchmarkRunner {
|
|
|
120
142
|
}
|
|
121
143
|
}
|
|
122
144
|
|
|
123
|
-
return okResult(responses, { rawResponse: response, plan, guardFailure, drift });
|
|
145
|
+
return okResult(responses, { rawResponse: response, plan, guardFailure, drift, stateStatus });
|
|
124
146
|
}
|
|
125
147
|
|
|
126
148
|
static validate(
|
|
@@ -139,6 +161,7 @@ export class DeltaTurns extends BenchmarkRunner {
|
|
|
139
161
|
'Response does not contain __error__': () => json?.__error__ === undefined,
|
|
140
162
|
'Run advanced the thread by one turn': () =>
|
|
141
163
|
json == null || plan == null || json.counter === plan.steps,
|
|
164
|
+
'Cold state read succeeded': () => result.data?.stateStatus == null,
|
|
142
165
|
'Delta storage is as expected': () => result.data?.guardFailure == null,
|
|
143
166
|
'Cold re-read matches the run': () => result.data?.drift == null,
|
|
144
167
|
});
|
|
@@ -150,6 +173,7 @@ export class DeltaTurns extends BenchmarkRunner {
|
|
|
150
173
|
const detail = [
|
|
151
174
|
plan ? `turn=${plan.steps} graph=${plan.graphId}` : '',
|
|
152
175
|
res ? `status=${res.status}` : '',
|
|
176
|
+
result.data?.stateStatus ? `state_status=${result.data.stateStatus}` : '',
|
|
153
177
|
result.data?.guardFailure ? `guard=${result.data.guardFailure}` : '',
|
|
154
178
|
result.data?.drift ? `drift=${result.data.drift}` : '',
|
|
155
179
|
]
|
|
@@ -158,7 +182,9 @@ export class DeltaTurns extends BenchmarkRunner {
|
|
|
158
182
|
logFailure(DeltaTurns.toString(), result, { extra: detail });
|
|
159
183
|
recordError(
|
|
160
184
|
classifyError({
|
|
161
|
-
response:
|
|
185
|
+
response: result.data?.stateStatus
|
|
186
|
+
? result.responses?.state ?? null
|
|
187
|
+
: res ?? result.responses?.create_thread ?? null,
|
|
162
188
|
hasApiError: json?.__error__ !== undefined,
|
|
163
189
|
missingMessage: result.data?.drift != null || result.data?.guardFailure != null,
|
|
164
190
|
}),
|