langgraph-api 0.13.0.dev7__tar.gz → 0.13.0.dev8__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.13.0.dev7 → langgraph_api-0.13.0.dev8}/PKG-INFO +1 -1
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/README.md +5 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/benchmark-runners/benchmark_profiles.ts +3 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/benchmark-runners/benchmarks.ts +3 -0
- langgraph_api-0.13.0.dev8/benchmark/benchmark-runners/store.ts +126 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/benchmark-runners/types.ts +1 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/clean.js +54 -1
- langgraph_api-0.13.0.dev8/langgraph_api/__init__.py +1 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/uv.lock +1 -1
- langgraph_api-0.13.0.dev7/langgraph_api/__init__.py +0 -1
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/.gitignore +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/LICENSE +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/Makefile +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/README.md +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/.gitignore +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/Makefile +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/benchmark-runners/assistant.ts +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/benchmark-runners/benchmark-runner.ts +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/benchmark-runners/cancel_first_second_completes.ts +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/benchmark-runners/enqueued_runs_order.ts +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/benchmark-runners/log-failure.ts +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/benchmark-runners/meta_workload.ts +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/benchmark-runners/stream_write.ts +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/benchmark-runners/thread.ts +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/benchmark-runners/thread_runs_metadata_search.ts +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/benchmark-runners/threads_search_metadata.ts +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/benchmark-runners/wait_write.ts +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/clean-cli.js +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/continuous/README.md +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/continuous/pyproject.toml +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/continuous/runner.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/continuous/uv.lock +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/graphs.js +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/package.json +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/ramp.js +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/reporting/dd_reporting.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/staircase.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/staircase_step_k6.js +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/tsconfig.json +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/update-revision.js +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/weather.js +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/yarn.lock +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/constraints.txt +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/custom_store.sql +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/forbidden.txt +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/hatch_build.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/healthcheck.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph-cloud-debugging-20260210132856.zip +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/_checkpointer/__init__.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/_checkpointer/_adapter.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/_checkpointer/protocol.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/_factory_utils.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/api/__init__.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/api/a2a.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/api/assistants.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/api/event_streaming.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/api/mcp/__init__.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/api/mcp/_constants.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/api/mcp/_handlers.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/api/mcp/_models.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/api/mcp/_routes.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/api/mcp/_sanitizers.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/api/meta.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/api/openapi.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/api/profile.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/api/runs.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/api/store.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/api/threads.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/api/ui.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/asgi_transport.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/asyncio.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/auth/__init__.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/auth/custom.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/auth/errors.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/auth/langsmith/__init__.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/auth/langsmith/backend.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/auth/langsmith/client.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/auth/middleware.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/auth/noop.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/auth/studio_user.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/cache.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/cli.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/command.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/config/__init__.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/config/_parse.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/config/schemas.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/cron_scheduler.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/encryption/__init__.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/encryption/aes_json.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/encryption/context.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/encryption/custom.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/encryption/middleware.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/encryption/shared.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/errors.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/event_streaming/__init__.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/event_streaming/capabilities.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/event_streaming/constants.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/event_streaming/event_normalizers.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/event_streaming/namespace.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/event_streaming/service.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/event_streaming/session.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/event_streaming/state_normalizers.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/event_streaming/types.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/feature_flags.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/graph.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/grpc/__init__.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/grpc/client.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/grpc/generated/core_api_pb2.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/grpc/ops/__init__.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/grpc/ops/assistants.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/grpc/ops/cache.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/grpc/ops/crons.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/grpc/ops/runs.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/grpc/ops/threads.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/grpc/server.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/grpc/servicers/__init__.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/grpc/servicers/checkpointer.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/grpc/servicers/encryption.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/http.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/http_metrics.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/http_metrics_utils.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/js/.gitignore +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/js/.prettierrc +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/js/.yarnclean +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/js/__init__.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/js/base.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/js/build.mts +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/js/client.http.mts +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/js/client.mts +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/js/errors.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/js/global.d.ts +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/js/package.json +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/js/remote.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/js/schema.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/js/src/graph.mts +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/js/src/load.hooks.mjs +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/js/src/preload.mjs +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/js/src/utils/experiment-tracing.mts +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/js/src/utils/files.mts +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/js/src/utils/importMap.mts +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/js/src/utils/serde.mts +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/js/sse.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/js/traceblock.mts +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/js/tsconfig.json +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/js/ui.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/js/yarn.lock +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/lc_security/__init__.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/lc_security/exceptions.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/lc_security/policy.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/lc_security/transport.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/logging.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/metadata.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/metrics_collector.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/metrics_otlp.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/middleware/__init__.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/middleware/ensure_store.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/middleware/http_logger.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/middleware/private_network.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/middleware/request_id.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/models/__init__.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/models/run.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/otel_context.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/patch.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/queue_entrypoint.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/release_tags.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/route.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/schema.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/self_hosted_logs.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/self_hosted_metrics.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/serde.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/server.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/sse.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/state.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/store.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/stream.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/stream_v2.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/timing/__init__.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/timing/profiler.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/timing/timer.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/traceblock.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/tracing_session.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/tunneling/cloudflare.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/utils/__init__.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/utils/cache.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/utils/config.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/utils/errors.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/utils/extract.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/utils/future.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/utils/headers.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/utils/network.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/utils/retriable_client.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/utils/stream_codec.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/utils/uuids.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/validation.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/webhook.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/worker.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/__init__.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/checkpointer.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/conversion/__init__.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/conversion/_compat.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/conversion/checkpoint.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/conversion/config.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/conversion/durability.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/conversion/store.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/conversion/struct.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/conversion/value.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/__init__.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/checkpointer_pb2.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/checkpointer_pb2.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/core_api_pb2.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/core_api_pb2.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/core_api_pb2_grpc.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/core_api_pb2_grpc.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/encryption_pb2.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/encryption_pb2.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/encryption_pb2_grpc.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/encryption_pb2_grpc.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/engine_common_pb2.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/engine_common_pb2.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/engine_common_pb2_grpc.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/engine_common_pb2_grpc.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_control_signal_pb2.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_control_signal_pb2.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_durability_pb2.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_durability_pb2.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_run_status_pb2.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_run_status_pb2.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_stream_mode_pb2.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_stream_mode_pb2.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_thread_status_pb2.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_thread_status_pb2.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/errors_pb2.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/errors_pb2.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/errors_pb2_grpc.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/errors_pb2_grpc.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/store_pb2.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/store_pb2.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/store_pb2_grpc.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/proto/store_pb2_grpc.pyi +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/serde.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_grpc_common/store.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_license/__init__.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_license/validation.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_runtime/__init__.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_runtime/checkpoint.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_runtime/database.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_runtime/lifespan.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_runtime/metrics.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_runtime/ops.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_runtime/queue.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_runtime/retry.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_runtime/routes.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_runtime/store.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/logging.json +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/openapi.json +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/pyproject.toml +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/scripts/build_wheel.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/scripts/create_license.py +0 -0
- {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/scripts/run_a2a_tck.py +0 -0
|
@@ -37,6 +37,7 @@ The runner contains the actual logic each virtual user will execute during the b
|
|
|
37
37
|
- `cancel_first_second_completes` - Starts two runs, cancels one, and validates cancellation semantics.
|
|
38
38
|
- `thread_runs_metadata_search` - Creates a run and validates filtering/search by run metadata.
|
|
39
39
|
- `threads_search_metadata` - Validates thread metadata search/filter behavior.
|
|
40
|
+
- `store` - Writes, reads, validates, and deletes a Store item with a configurable payload size.
|
|
40
41
|
- `meta_workload` (randomly delegates to one of the others)
|
|
41
42
|
|
|
42
43
|
## Profiles (`BENCHMARK_PROFILE`)
|
|
@@ -74,6 +75,7 @@ Context overrides (merged on top of profile):
|
|
|
74
75
|
- `EXPAND` - Fanout width (number of parallel branches at start).
|
|
75
76
|
- `STEPS` - Number of graph turns/iterations to execute.
|
|
76
77
|
- `CHECKPOINT_SIZE` - Bytes written per checkpoint operation.
|
|
78
|
+
- `STORE_VALUE_SIZE` - Store runner payload size in bytes (defaults to 1 MiB).
|
|
77
79
|
- `LLM_ENABLED` - Enables fake LLM streaming inside the benchmark graph.
|
|
78
80
|
- `STREAM_SIZE` - Normal total streamed payload size (bytes).
|
|
79
81
|
- `CHUNK_SIZE` - Stream chunk size (bytes) when emitting payload.
|
|
@@ -90,6 +92,9 @@ make benchmark-ramp
|
|
|
90
92
|
# Ramp with profile + stream runner
|
|
91
93
|
BENCHMARK_PROFILE=streaming-long BENCHMARK_TYPE=stream_write make benchmark-ramp
|
|
92
94
|
|
|
95
|
+
# Store smoke test with a 1 MiB payload
|
|
96
|
+
BENCHMARK_TYPE=store STORE_VALUE_SIZE=1048576 make benchmark-ramp
|
|
97
|
+
|
|
93
98
|
# Staircase benchmark
|
|
94
99
|
make benchmark-staircase
|
|
95
100
|
|
|
@@ -6,6 +6,7 @@ export interface BenchmarkContext {
|
|
|
6
6
|
expand: number;
|
|
7
7
|
steps: number;
|
|
8
8
|
checkpoint_size: number;
|
|
9
|
+
store_value_size?: number;
|
|
9
10
|
llm_enabled: boolean;
|
|
10
11
|
stream_size: number;
|
|
11
12
|
chunk_size: number;
|
|
@@ -24,6 +25,7 @@ export interface BenchmarkProfileEnv {
|
|
|
24
25
|
EXPAND?: string;
|
|
25
26
|
STEPS?: string;
|
|
26
27
|
CHECKPOINT_SIZE?: string;
|
|
28
|
+
STORE_VALUE_SIZE?: string;
|
|
27
29
|
LLM_ENABLED?: string;
|
|
28
30
|
STREAM_SIZE?: string;
|
|
29
31
|
CHUNK_SIZE?: string;
|
|
@@ -210,6 +212,7 @@ export function get_profile(env: BenchmarkProfileEnv): ParsedBenchmarkProfile {
|
|
|
210
212
|
...(parseOptionalInt(env.EXPAND) !== undefined ? { expand: parseOptionalInt(env.EXPAND)! } : {}),
|
|
211
213
|
...(parseOptionalInt(env.STEPS) !== undefined ? { steps: parseOptionalInt(env.STEPS)! } : {}),
|
|
212
214
|
...(parseOptionalInt(env.CHECKPOINT_SIZE) !== undefined ? { checkpoint_size: parseOptionalInt(env.CHECKPOINT_SIZE)! } : {}),
|
|
215
|
+
...(parseOptionalInt(env.STORE_VALUE_SIZE) !== undefined ? { store_value_size: parseOptionalInt(env.STORE_VALUE_SIZE)! } : {}),
|
|
213
216
|
...(parseOptionalBool(env.LLM_ENABLED) !== undefined ? { llm_enabled: parseOptionalBool(env.LLM_ENABLED)! } : {}),
|
|
214
217
|
...(parseOptionalInt(env.STREAM_SIZE) !== undefined ? { stream_size: parseOptionalInt(env.STREAM_SIZE)! } : {}),
|
|
215
218
|
...(parseOptionalInt(env.CHUNK_SIZE) !== undefined ? { chunk_size: parseOptionalInt(env.CHUNK_SIZE)! } : {}),
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/benchmark-runners/benchmarks.ts
RENAMED
|
@@ -6,6 +6,7 @@ import { EnqueuedRunsOrder } from './enqueued_runs_order.js';
|
|
|
6
6
|
import { CancelFirstSecondCompletes } from './cancel_first_second_completes.js';
|
|
7
7
|
import { ThreadRunsMetadataSearch } from './thread_runs_metadata_search.js';
|
|
8
8
|
import { ThreadsSearchMetadata } from './threads_search_metadata.js';
|
|
9
|
+
import { Store } from './store.js';
|
|
9
10
|
import { MetaWorkload } from './meta_workload.js';
|
|
10
11
|
import type { BenchmarkRunner } from './benchmark-runner.js';
|
|
11
12
|
|
|
@@ -28,6 +29,8 @@ export class Benchmarks {
|
|
|
28
29
|
return ThreadRunsMetadataSearch;
|
|
29
30
|
case ThreadsSearchMetadata.toString():
|
|
30
31
|
return ThreadsSearchMetadata;
|
|
32
|
+
case Store.toString():
|
|
33
|
+
return Store;
|
|
31
34
|
case MetaWorkload.toString():
|
|
32
35
|
return MetaWorkload;
|
|
33
36
|
default:
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { BenchmarkRunner } from './benchmark-runner.js';
|
|
2
|
+
import type { ErrorMetrics } from './benchmark-runner.js';
|
|
3
|
+
import { check } from 'k6';
|
|
4
|
+
import http from 'k6/http';
|
|
5
|
+
import type { BenchmarkResult, BenchmarkGraphOptions } from './types.js';
|
|
6
|
+
import { addResponse, okResult } from './types.js';
|
|
7
|
+
import { logFailure } from './log-failure.js';
|
|
8
|
+
|
|
9
|
+
const DEFAULT_STORE_VALUE_SIZE = 1024 * 1024;
|
|
10
|
+
const STORE_NAMESPACE = ['benchmark'];
|
|
11
|
+
|
|
12
|
+
type K6Response = ReturnType<typeof http.put> | ReturnType<typeof http.get> | ReturnType<typeof http.del>;
|
|
13
|
+
|
|
14
|
+
interface StoreData {
|
|
15
|
+
key: string;
|
|
16
|
+
expectedPayload: string;
|
|
17
|
+
payloadSize: number;
|
|
18
|
+
putResponse?: K6Response;
|
|
19
|
+
getResponse?: K6Response;
|
|
20
|
+
deleteResponse?: K6Response;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
interface StoreItem {
|
|
24
|
+
value?: {
|
|
25
|
+
marker?: string;
|
|
26
|
+
payload?: string;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export class Store extends BenchmarkRunner {
|
|
31
|
+
static run(
|
|
32
|
+
baseUrl: string,
|
|
33
|
+
requestParams: Record<string, unknown>,
|
|
34
|
+
benchmarkGraphOptions: BenchmarkGraphOptions
|
|
35
|
+
): BenchmarkResult<StoreData> {
|
|
36
|
+
const key = crypto.randomUUID();
|
|
37
|
+
const payloadSize = benchmarkGraphOptions.context.store_value_size ?? DEFAULT_STORE_VALUE_SIZE;
|
|
38
|
+
if (!Number.isInteger(payloadSize) || payloadSize <= 0) {
|
|
39
|
+
throw new Error(`STORE_VALUE_SIZE must be a positive integer, got ${payloadSize}`);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const responses: Record<string, import('./types.js').HttpResponse> = {};
|
|
43
|
+
const expectedPayload = 'x'.repeat(payloadSize);
|
|
44
|
+
const putPayload = JSON.stringify({
|
|
45
|
+
namespace: STORE_NAMESPACE,
|
|
46
|
+
key,
|
|
47
|
+
value: { marker: key, payload: expectedPayload },
|
|
48
|
+
index: false,
|
|
49
|
+
});
|
|
50
|
+
let putResponse: K6Response | undefined;
|
|
51
|
+
let getResponse: K6Response | undefined;
|
|
52
|
+
let deleteResponse: K6Response | undefined;
|
|
53
|
+
|
|
54
|
+
try {
|
|
55
|
+
putResponse = http.put(`${baseUrl}/store/items`, putPayload, requestParams);
|
|
56
|
+
addResponse(responses, 'put', putResponse);
|
|
57
|
+
|
|
58
|
+
const namespace = encodeURIComponent(STORE_NAMESPACE.join('.'));
|
|
59
|
+
getResponse = http.get(
|
|
60
|
+
`${baseUrl}/store/items?namespace=${namespace}&key=${encodeURIComponent(key)}`,
|
|
61
|
+
requestParams
|
|
62
|
+
);
|
|
63
|
+
addResponse(responses, 'get', getResponse);
|
|
64
|
+
} finally {
|
|
65
|
+
const deletePayload = JSON.stringify({ namespace: STORE_NAMESPACE, key });
|
|
66
|
+
deleteResponse = http.del(`${baseUrl}/store/items`, deletePayload, requestParams);
|
|
67
|
+
addResponse(responses, 'delete', deleteResponse);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return okResult(responses, {
|
|
71
|
+
key,
|
|
72
|
+
expectedPayload,
|
|
73
|
+
payloadSize,
|
|
74
|
+
putResponse,
|
|
75
|
+
getResponse,
|
|
76
|
+
deleteResponse,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
static validate(
|
|
81
|
+
result: BenchmarkResult<StoreData>,
|
|
82
|
+
errorMetrics: ErrorMetrics,
|
|
83
|
+
_benchmarkGraphOptions: BenchmarkGraphOptions
|
|
84
|
+
): boolean {
|
|
85
|
+
const data = result.data;
|
|
86
|
+
if (!data) {
|
|
87
|
+
logFailure(Store.toString(), result);
|
|
88
|
+
errorMetrics.other_errors.add(1);
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
let item: StoreItem | null = null;
|
|
93
|
+
if (data.getResponse?.status === 200) {
|
|
94
|
+
try {
|
|
95
|
+
item = data.getResponse.json() as StoreItem;
|
|
96
|
+
} catch {
|
|
97
|
+
item = null;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
const success = check(result, {
|
|
102
|
+
'Store put response is successful': () => data.putResponse?.status === 204,
|
|
103
|
+
'Store get response is successful': () => data.getResponse?.status === 200,
|
|
104
|
+
'Store get response contains the correct item': () => item?.value?.marker === data.key,
|
|
105
|
+
'Store get response contains the exact payload': () => item?.value?.payload === data.expectedPayload,
|
|
106
|
+
'Store delete response is successful': () => data.deleteResponse?.status === 204,
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
if (!success) {
|
|
110
|
+
logFailure(Store.toString(), result, { extra: `key=${data.key} payload_size=${data.payloadSize}` });
|
|
111
|
+
const statuses = [data.putResponse, data.getResponse, data.deleteResponse].map((response) => response?.status);
|
|
112
|
+
if (statuses.some((status) => status != null && status >= 500)) {
|
|
113
|
+
errorMetrics.server_errors.add(1);
|
|
114
|
+
} else if (statuses.some((status) => status === 408)) {
|
|
115
|
+
errorMetrics.timeout_errors.add(1);
|
|
116
|
+
} else {
|
|
117
|
+
errorMetrics.other_errors.add(1);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return success;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
static toString(): string {
|
|
124
|
+
return 'store';
|
|
125
|
+
}
|
|
126
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Delete all threads and runs from the last benchmark run for consistent tests
|
|
2
|
+
* Delete all Store items, threads, and runs from the last benchmark run for consistent tests
|
|
3
3
|
* The default benchmark server has a thread TTL of one hour that should clean things up too so this doesn't run too long.
|
|
4
4
|
*/
|
|
5
5
|
|
|
@@ -9,6 +9,7 @@ const DEFAULT_LANGSMITH_API_KEY = process.env.LANGSMITH_API_KEY;
|
|
|
9
9
|
|
|
10
10
|
export async function clean(baseUrl = DEFAULT_BASE_URL, langsmithApiKey = DEFAULT_LANGSMITH_API_KEY) {
|
|
11
11
|
try {
|
|
12
|
+
await cleanStore(baseUrl, langsmithApiKey);
|
|
12
13
|
await cleanAssistants(baseUrl, langsmithApiKey);
|
|
13
14
|
await cleanThreads(baseUrl, langsmithApiKey);
|
|
14
15
|
} catch (error) {
|
|
@@ -17,6 +18,58 @@ export async function clean(baseUrl = DEFAULT_BASE_URL, langsmithApiKey = DEFAUL
|
|
|
17
18
|
}
|
|
18
19
|
}
|
|
19
20
|
|
|
21
|
+
async function cleanStore(baseUrl, langsmithApiKey) {
|
|
22
|
+
const headers = { 'Content-Type': 'application/json' };
|
|
23
|
+
if (langsmithApiKey) {
|
|
24
|
+
headers['x-api-key'] = langsmithApiKey;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const searchUrl = `${baseUrl}/store/items/search`;
|
|
28
|
+
const deleteUrl = `${baseUrl}/store/items`;
|
|
29
|
+
let totalDeleted = 0;
|
|
30
|
+
|
|
31
|
+
console.log('Starting Store cleanup...');
|
|
32
|
+
|
|
33
|
+
while (true) {
|
|
34
|
+
const searchResponse = await fetch(searchUrl, {
|
|
35
|
+
method: 'POST',
|
|
36
|
+
headers,
|
|
37
|
+
body: JSON.stringify({ namespace_prefix: ['benchmark'], limit: 1000 })
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
if (!searchResponse.ok) {
|
|
41
|
+
throw new Error(`Store search request failed: ${searchResponse.status} ${searchResponse.statusText}`);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const result = await searchResponse.json();
|
|
45
|
+
if (!Array.isArray(result?.items)) {
|
|
46
|
+
throw new Error('Store search response did not contain an items array');
|
|
47
|
+
}
|
|
48
|
+
if (result.items.length === 0) {
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
console.log(`Found ${result.items.length} Store items to delete`);
|
|
53
|
+
|
|
54
|
+
for (const item of result.items) {
|
|
55
|
+
const deleteResponse = await fetch(deleteUrl, {
|
|
56
|
+
method: 'DELETE',
|
|
57
|
+
headers,
|
|
58
|
+
body: JSON.stringify({ namespace: item.namespace, key: item.key })
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
if (!deleteResponse.ok) {
|
|
62
|
+
throw new Error(
|
|
63
|
+
`Failed to delete Store item ${item.namespace.join('.')}/${item.key}: ${deleteResponse.status} ${deleteResponse.statusText}`
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
totalDeleted++;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
console.log(`Store cleanup completed. Total items deleted: ${totalDeleted}`);
|
|
71
|
+
}
|
|
72
|
+
|
|
20
73
|
async function cleanAssistants(baseUrl, langsmithApiKey) {
|
|
21
74
|
const headers = { 'Content-Type': 'application/json' };
|
|
22
75
|
if (langsmithApiKey) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.13.0.dev8"
|
|
@@ -892,7 +892,7 @@ dev = [
|
|
|
892
892
|
{ name = "grpcio-tools", specifier = "==1.81.1" },
|
|
893
893
|
{ name = "langchain", specifier = ">=0.3" },
|
|
894
894
|
{ name = "langchain-core", specifier = ">=0.3" },
|
|
895
|
-
{ name = "mypy-protobuf", specifier = ">=5.
|
|
895
|
+
{ name = "mypy-protobuf", specifier = ">=5.1.0,<6" },
|
|
896
896
|
{ name = "protobuf", specifier = ">=6.31.1" },
|
|
897
897
|
{ name = "pytest", specifier = ">=9.1.1" },
|
|
898
898
|
{ name = "pytest-asyncio", specifier = ">=1.4.0" },
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.13.0.dev7"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/benchmark-runners/assistant.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/benchmark-runners/log-failure.ts
RENAMED
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/benchmark-runners/meta_workload.ts
RENAMED
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/benchmark-runners/stream_write.ts
RENAMED
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/benchmark-runners/thread.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/benchmark/benchmark-runners/wait_write.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph-cloud-debugging-20260210132856.zip
RENAMED
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/_checkpointer/__init__.py
RENAMED
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/_checkpointer/_adapter.py
RENAMED
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/_checkpointer/protocol.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/api/event_streaming.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/api/mcp/_sanitizers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/auth/langsmith/__init__.py
RENAMED
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/auth/langsmith/backend.py
RENAMED
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/auth/langsmith/client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/encryption/__init__.py
RENAMED
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/encryption/aes_json.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/encryption/middleware.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/event_streaming/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/event_streaming/constants.py
RENAMED
|
File without changes
|
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/event_streaming/namespace.py
RENAMED
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/event_streaming/service.py
RENAMED
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/event_streaming/session.py
RENAMED
|
File without changes
|
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/event_streaming/types.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/grpc/ops/assistants.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/grpc/servicers/__init__.py
RENAMED
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/grpc/servicers/checkpointer.py
RENAMED
|
File without changes
|
{langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev8}/langgraph_api/grpc/servicers/encryption.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|