langgraph-api 0.13.0.dev7__tar.gz → 0.13.0.dev9__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.
Files changed (288) hide show
  1. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/PKG-INFO +1 -1
  2. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/README.md +5 -0
  3. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/benchmark-runners/benchmark_profiles.ts +3 -0
  4. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/benchmark-runners/benchmarks.ts +3 -0
  5. langgraph_api-0.13.0.dev9/benchmark/benchmark-runners/store.ts +126 -0
  6. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/benchmark-runners/types.ts +1 -0
  7. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/clean.js +54 -1
  8. langgraph_api-0.13.0.dev9/langgraph_api/__init__.py +1 -0
  9. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/uv.lock +1 -1
  10. langgraph_api-0.13.0.dev7/langgraph_api/__init__.py +0 -1
  11. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/.gitignore +0 -0
  12. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/LICENSE +0 -0
  13. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/Makefile +0 -0
  14. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/README.md +0 -0
  15. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/.gitignore +0 -0
  16. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/Makefile +0 -0
  17. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/benchmark-runners/assistant.ts +0 -0
  18. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/benchmark-runners/benchmark-runner.ts +0 -0
  19. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/benchmark-runners/cancel_first_second_completes.ts +0 -0
  20. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/benchmark-runners/enqueued_runs_order.ts +0 -0
  21. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/benchmark-runners/log-failure.ts +0 -0
  22. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/benchmark-runners/meta_workload.ts +0 -0
  23. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/benchmark-runners/stream_write.ts +0 -0
  24. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/benchmark-runners/thread.ts +0 -0
  25. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/benchmark-runners/thread_runs_metadata_search.ts +0 -0
  26. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/benchmark-runners/threads_search_metadata.ts +0 -0
  27. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/benchmark-runners/wait_write.ts +0 -0
  28. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/clean-cli.js +0 -0
  29. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/continuous/README.md +0 -0
  30. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/continuous/pyproject.toml +0 -0
  31. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/continuous/runner.py +0 -0
  32. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/continuous/uv.lock +0 -0
  33. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/graphs.js +0 -0
  34. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/package.json +0 -0
  35. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/ramp.js +0 -0
  36. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/reporting/dd_reporting.py +0 -0
  37. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/staircase.py +0 -0
  38. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/staircase_step_k6.js +0 -0
  39. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/tsconfig.json +0 -0
  40. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/update-revision.js +0 -0
  41. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/weather.js +0 -0
  42. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/benchmark/yarn.lock +0 -0
  43. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/constraints.txt +0 -0
  44. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/custom_store.sql +0 -0
  45. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/forbidden.txt +0 -0
  46. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/hatch_build.py +0 -0
  47. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/healthcheck.py +0 -0
  48. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph-cloud-debugging-20260210132856.zip +0 -0
  49. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/_checkpointer/__init__.py +0 -0
  50. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/_checkpointer/_adapter.py +0 -0
  51. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/_checkpointer/protocol.py +0 -0
  52. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/_factory_utils.py +0 -0
  53. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/api/__init__.py +0 -0
  54. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/api/a2a.py +0 -0
  55. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/api/assistants.py +0 -0
  56. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/api/event_streaming.py +0 -0
  57. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/api/mcp/__init__.py +0 -0
  58. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/api/mcp/_constants.py +0 -0
  59. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/api/mcp/_handlers.py +0 -0
  60. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/api/mcp/_models.py +0 -0
  61. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/api/mcp/_routes.py +0 -0
  62. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/api/mcp/_sanitizers.py +0 -0
  63. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/api/meta.py +0 -0
  64. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/api/openapi.py +0 -0
  65. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/api/profile.py +0 -0
  66. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/api/runs.py +0 -0
  67. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/api/store.py +0 -0
  68. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/api/threads.py +0 -0
  69. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/api/ui.py +0 -0
  70. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/asgi_transport.py +0 -0
  71. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/asyncio.py +0 -0
  72. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/auth/__init__.py +0 -0
  73. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/auth/custom.py +0 -0
  74. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/auth/errors.py +0 -0
  75. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/auth/langsmith/__init__.py +0 -0
  76. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/auth/langsmith/backend.py +0 -0
  77. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/auth/langsmith/client.py +0 -0
  78. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/auth/middleware.py +0 -0
  79. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/auth/noop.py +0 -0
  80. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/auth/studio_user.py +0 -0
  81. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/cache.py +0 -0
  82. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/cli.py +0 -0
  83. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/command.py +0 -0
  84. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/config/__init__.py +0 -0
  85. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/config/_parse.py +0 -0
  86. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/config/schemas.py +0 -0
  87. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/cron_scheduler.py +0 -0
  88. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/encryption/__init__.py +0 -0
  89. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/encryption/aes_json.py +0 -0
  90. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/encryption/context.py +0 -0
  91. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/encryption/custom.py +0 -0
  92. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/encryption/middleware.py +0 -0
  93. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/encryption/shared.py +0 -0
  94. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/errors.py +0 -0
  95. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/event_streaming/__init__.py +0 -0
  96. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/event_streaming/capabilities.py +0 -0
  97. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/event_streaming/constants.py +0 -0
  98. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/event_streaming/event_normalizers.py +0 -0
  99. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/event_streaming/namespace.py +0 -0
  100. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/event_streaming/service.py +0 -0
  101. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/event_streaming/session.py +0 -0
  102. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/event_streaming/state_normalizers.py +0 -0
  103. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/event_streaming/types.py +0 -0
  104. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/feature_flags.py +0 -0
  105. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/graph.py +0 -0
  106. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/grpc/__init__.py +0 -0
  107. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/grpc/client.py +0 -0
  108. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/grpc/generated/core_api_pb2.pyi +0 -0
  109. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/grpc/ops/__init__.py +0 -0
  110. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/grpc/ops/assistants.py +0 -0
  111. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/grpc/ops/cache.py +0 -0
  112. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/grpc/ops/crons.py +0 -0
  113. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/grpc/ops/runs.py +0 -0
  114. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/grpc/ops/threads.py +0 -0
  115. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/grpc/server.py +0 -0
  116. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/grpc/servicers/__init__.py +0 -0
  117. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/grpc/servicers/checkpointer.py +0 -0
  118. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/grpc/servicers/encryption.py +0 -0
  119. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/http.py +0 -0
  120. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/http_metrics.py +0 -0
  121. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/http_metrics_utils.py +0 -0
  122. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/js/.gitignore +0 -0
  123. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/js/.prettierrc +0 -0
  124. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/js/.yarnclean +0 -0
  125. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/js/__init__.py +0 -0
  126. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/js/base.py +0 -0
  127. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/js/build.mts +0 -0
  128. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/js/client.http.mts +0 -0
  129. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/js/client.mts +0 -0
  130. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/js/errors.py +0 -0
  131. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/js/global.d.ts +0 -0
  132. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/js/package.json +0 -0
  133. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/js/remote.py +0 -0
  134. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/js/schema.py +0 -0
  135. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/js/src/graph.mts +0 -0
  136. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/js/src/load.hooks.mjs +0 -0
  137. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/js/src/preload.mjs +0 -0
  138. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/js/src/utils/experiment-tracing.mts +0 -0
  139. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/js/src/utils/files.mts +0 -0
  140. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/js/src/utils/importMap.mts +0 -0
  141. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
  142. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/js/src/utils/serde.mts +0 -0
  143. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/js/sse.py +0 -0
  144. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/js/traceblock.mts +0 -0
  145. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/js/tsconfig.json +0 -0
  146. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/js/ui.py +0 -0
  147. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/js/yarn.lock +0 -0
  148. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/lc_security/__init__.py +0 -0
  149. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/lc_security/exceptions.py +0 -0
  150. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/lc_security/policy.py +0 -0
  151. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/lc_security/transport.py +0 -0
  152. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/logging.py +0 -0
  153. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/metadata.py +0 -0
  154. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/metrics_collector.py +0 -0
  155. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/metrics_otlp.py +0 -0
  156. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/middleware/__init__.py +0 -0
  157. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/middleware/ensure_store.py +0 -0
  158. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/middleware/http_logger.py +0 -0
  159. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/middleware/private_network.py +0 -0
  160. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/middleware/request_id.py +0 -0
  161. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/models/__init__.py +0 -0
  162. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/models/run.py +0 -0
  163. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/otel_context.py +0 -0
  164. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/patch.py +0 -0
  165. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/queue_entrypoint.py +0 -0
  166. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/release_tags.py +0 -0
  167. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/route.py +0 -0
  168. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/schema.py +0 -0
  169. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/self_hosted_logs.py +0 -0
  170. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/self_hosted_metrics.py +0 -0
  171. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/serde.py +0 -0
  172. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/server.py +0 -0
  173. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/sse.py +0 -0
  174. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/state.py +0 -0
  175. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/store.py +0 -0
  176. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/stream.py +0 -0
  177. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/stream_v2.py +0 -0
  178. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/timing/__init__.py +0 -0
  179. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/timing/profiler.py +0 -0
  180. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/timing/timer.py +0 -0
  181. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/traceblock.py +0 -0
  182. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/tracing_session.py +0 -0
  183. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/tunneling/cloudflare.py +0 -0
  184. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/utils/__init__.py +0 -0
  185. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/utils/cache.py +0 -0
  186. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/utils/config.py +0 -0
  187. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/utils/errors.py +0 -0
  188. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/utils/extract.py +0 -0
  189. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/utils/future.py +0 -0
  190. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/utils/headers.py +0 -0
  191. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/utils/network.py +0 -0
  192. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/utils/retriable_client.py +0 -0
  193. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/utils/stream_codec.py +0 -0
  194. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/utils/uuids.py +0 -0
  195. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/validation.py +0 -0
  196. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/webhook.py +0 -0
  197. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_api/worker.py +0 -0
  198. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/__init__.py +0 -0
  199. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/checkpointer.py +0 -0
  200. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/conversion/__init__.py +0 -0
  201. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/conversion/_compat.py +0 -0
  202. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/conversion/checkpoint.py +0 -0
  203. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/conversion/config.py +0 -0
  204. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/conversion/durability.py +0 -0
  205. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/conversion/store.py +0 -0
  206. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/conversion/struct.py +0 -0
  207. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/conversion/value.py +0 -0
  208. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/__init__.py +0 -0
  209. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/checkpointer_pb2.py +0 -0
  210. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/checkpointer_pb2.pyi +0 -0
  211. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.py +0 -0
  212. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.pyi +0 -0
  213. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/core_api_pb2.py +0 -0
  214. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/core_api_pb2.pyi +0 -0
  215. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/core_api_pb2_grpc.py +0 -0
  216. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/core_api_pb2_grpc.pyi +0 -0
  217. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/encryption_pb2.py +0 -0
  218. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/encryption_pb2.pyi +0 -0
  219. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/encryption_pb2_grpc.py +0 -0
  220. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/encryption_pb2_grpc.pyi +0 -0
  221. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/engine_common_pb2.py +0 -0
  222. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/engine_common_pb2.pyi +0 -0
  223. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/engine_common_pb2_grpc.py +0 -0
  224. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/engine_common_pb2_grpc.pyi +0 -0
  225. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.py +0 -0
  226. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.pyi +0 -0
  227. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.py +0 -0
  228. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.pyi +0 -0
  229. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_control_signal_pb2.py +0 -0
  230. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_control_signal_pb2.pyi +0 -0
  231. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.py +0 -0
  232. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.pyi +0 -0
  233. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.py +0 -0
  234. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.pyi +0 -0
  235. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.py +0 -0
  236. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.pyi +0 -0
  237. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_durability_pb2.py +0 -0
  238. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_durability_pb2.pyi +0 -0
  239. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.py +0 -0
  240. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.pyi +0 -0
  241. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.py +0 -0
  242. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.pyi +0 -0
  243. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.py +0 -0
  244. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.pyi +0 -0
  245. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_run_status_pb2.py +0 -0
  246. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_run_status_pb2.pyi +0 -0
  247. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.py +0 -0
  248. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.pyi +0 -0
  249. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_stream_mode_pb2.py +0 -0
  250. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_stream_mode_pb2.pyi +0 -0
  251. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.py +0 -0
  252. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.pyi +0 -0
  253. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_thread_status_pb2.py +0 -0
  254. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_thread_status_pb2.pyi +0 -0
  255. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.py +0 -0
  256. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.pyi +0 -0
  257. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.py +0 -0
  258. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.pyi +0 -0
  259. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.py +0 -0
  260. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.pyi +0 -0
  261. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/errors_pb2.py +0 -0
  262. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/errors_pb2.pyi +0 -0
  263. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/errors_pb2_grpc.py +0 -0
  264. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/errors_pb2_grpc.pyi +0 -0
  265. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/store_pb2.py +0 -0
  266. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/store_pb2.pyi +0 -0
  267. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/store_pb2_grpc.py +0 -0
  268. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/proto/store_pb2_grpc.pyi +0 -0
  269. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/serde.py +0 -0
  270. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_grpc_common/store.py +0 -0
  271. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_license/__init__.py +0 -0
  272. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_license/validation.py +0 -0
  273. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_runtime/__init__.py +0 -0
  274. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_runtime/checkpoint.py +0 -0
  275. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_runtime/database.py +0 -0
  276. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_runtime/lifespan.py +0 -0
  277. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_runtime/metrics.py +0 -0
  278. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_runtime/ops.py +0 -0
  279. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_runtime/queue.py +0 -0
  280. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_runtime/retry.py +0 -0
  281. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_runtime/routes.py +0 -0
  282. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/langgraph_runtime/store.py +0 -0
  283. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/logging.json +0 -0
  284. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/openapi.json +0 -0
  285. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/pyproject.toml +0 -0
  286. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/scripts/build_wheel.py +0 -0
  287. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/scripts/create_license.py +0 -0
  288. {langgraph_api-0.13.0.dev7 → langgraph_api-0.13.0.dev9}/scripts/run_a2a_tck.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langgraph-api
3
- Version: 0.13.0.dev7
3
+ Version: 0.13.0.dev9
4
4
  Author-email: Will Fu-Hinthorn <will@langchain.dev>, Josh Rogers <josh@langchain.dev>, Parker Rule <parker@langchain.dev>
5
5
  License: Elastic-2.0
6
6
  License-File: LICENSE
@@ -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)! } : {}),
@@ -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
+ }
@@ -37,6 +37,7 @@ export interface BenchmarkContext {
37
37
  expand: number;
38
38
  steps: number;
39
39
  checkpoint_size: number;
40
+ store_value_size?: number;
40
41
  llm_enabled: boolean;
41
42
  stream_size: number;
42
43
  chunk_size: number;
@@ -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.dev9"
@@ -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.0.0,<6" },
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"