langgraph-api 0.7.90__tar.gz → 0.7.91__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 (293) hide show
  1. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/PKG-INFO +2 -1
  2. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/Makefile +0 -5
  3. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/README.md +5 -14
  4. langgraph_api-0.7.91/langgraph_api/__init__.py +1 -0
  5. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/utils/config.py +1 -1
  6. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/utils/stream_codec.py +22 -14
  7. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/pyproject.toml +1 -0
  8. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/uv.lock +53 -51
  9. langgraph_api-0.7.90/benchmark/burst.js +0 -219
  10. langgraph_api-0.7.90/langgraph_api/__init__.py +0 -1
  11. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/.gitignore +0 -0
  12. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/LICENSE +0 -0
  13. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/Makefile +0 -0
  14. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/README.md +0 -0
  15. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/.gitignore +0 -0
  16. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/assistant.ts +0 -0
  17. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/benchmark-runner.ts +0 -0
  18. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/benchmarks.ts +0 -0
  19. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/cancel_first_second_completes.ts +0 -0
  20. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/enqueued_runs_order.ts +0 -0
  21. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/log-failure.ts +0 -0
  22. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/meta_workload.ts +0 -0
  23. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/random_stream.ts +0 -0
  24. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/stream_write.ts +0 -0
  25. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/thread.ts +0 -0
  26. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/thread_runs_metadata_search.ts +0 -0
  27. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/threads_search_metadata.ts +0 -0
  28. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/types.ts +0 -0
  29. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/benchmark-runners/wait_write.ts +0 -0
  30. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/capacity_dd_report.py +0 -0
  31. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/capacity_k6.js +0 -0
  32. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/capacity_runner.mjs +0 -0
  33. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/capacity_slack_report.py +0 -0
  34. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/capacity_urls.mjs +0 -0
  35. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/clean-cli.js +0 -0
  36. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/clean.js +0 -0
  37. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/continuous/README.md +0 -0
  38. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/continuous/pyproject.toml +0 -0
  39. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/continuous/runner.py +0 -0
  40. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/continuous/uv.lock +0 -0
  41. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/graphs.js +0 -0
  42. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/mixed_workload_k6.js +0 -0
  43. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/mixed_workload_runner.mjs +0 -0
  44. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/package.json +0 -0
  45. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/ramp.js +0 -0
  46. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/reporting/dd_reporting.py +0 -0
  47. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/reporting/slack_slowest_runs.py +0 -0
  48. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/reporting/slack_summary.py +0 -0
  49. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/run_local.sh +0 -0
  50. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/staircase.py +0 -0
  51. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/staircase_step_k6.js +0 -0
  52. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/tsconfig.json +0 -0
  53. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/update-revision.js +0 -0
  54. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/benchmark/weather.js +0 -0
  55. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/constraints.txt +0 -0
  56. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/custom_store.sql +0 -0
  57. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/forbidden.txt +0 -0
  58. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/hatch_build.py +0 -0
  59. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/healthcheck.py +0 -0
  60. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph-cloud-debugging-20260210132856.zip +0 -0
  61. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/_checkpointer/__init__.py +0 -0
  62. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/_checkpointer/_adapter.py +0 -0
  63. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/_checkpointer/protocol.py +0 -0
  64. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/_factory_utils.py +0 -0
  65. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/__init__.py +0 -0
  66. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/a2a.py +0 -0
  67. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/assistants.py +0 -0
  68. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/mcp/__init__.py +0 -0
  69. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/mcp/_constants.py +0 -0
  70. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/mcp/_handlers.py +0 -0
  71. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/mcp/_models.py +0 -0
  72. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/mcp/_routes.py +0 -0
  73. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/mcp/_sanitizers.py +0 -0
  74. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/meta.py +0 -0
  75. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/openapi.py +0 -0
  76. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/profile.py +0 -0
  77. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/runs.py +0 -0
  78. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/store.py +0 -0
  79. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/threads.py +0 -0
  80. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/api/ui.py +0 -0
  81. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/asgi_transport.py +0 -0
  82. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/asyncio.py +0 -0
  83. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/auth/__init__.py +0 -0
  84. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/auth/custom.py +0 -0
  85. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/auth/errors.py +0 -0
  86. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/auth/langsmith/__init__.py +0 -0
  87. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/auth/langsmith/backend.py +0 -0
  88. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/auth/langsmith/client.py +0 -0
  89. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/auth/middleware.py +0 -0
  90. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/auth/noop.py +0 -0
  91. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/auth/studio_user.py +0 -0
  92. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/cache.py +0 -0
  93. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/cli.py +0 -0
  94. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/command.py +0 -0
  95. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/config/__init__.py +0 -0
  96. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/config/_parse.py +0 -0
  97. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/config/schemas.py +0 -0
  98. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/cron_scheduler.py +0 -0
  99. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/encryption/__init__.py +0 -0
  100. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/encryption/aes_json.py +0 -0
  101. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/encryption/context.py +0 -0
  102. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/encryption/custom.py +0 -0
  103. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/encryption/middleware.py +0 -0
  104. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/encryption/shared.py +0 -0
  105. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/errors.py +0 -0
  106. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/executor_entrypoint.py +0 -0
  107. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/feature_flags.py +0 -0
  108. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/graph.py +0 -0
  109. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/grpc/__init__.py +0 -0
  110. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/grpc/client.py +0 -0
  111. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/grpc/generated/core_api_pb2.pyi +0 -0
  112. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/grpc/ops/__init__.py +0 -0
  113. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/grpc/ops/assistants.py +0 -0
  114. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/grpc/ops/cache.py +0 -0
  115. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/grpc/ops/crons.py +0 -0
  116. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/grpc/ops/runs.py +0 -0
  117. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/grpc/ops/threads.py +0 -0
  118. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/grpc/server.py +0 -0
  119. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/grpc/servicers/__init__.py +0 -0
  120. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/grpc/servicers/checkpointer.py +0 -0
  121. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/grpc/servicers/encryption.py +0 -0
  122. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/http.py +0 -0
  123. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/http_metrics.py +0 -0
  124. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/http_metrics_utils.py +0 -0
  125. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/.gitignore +0 -0
  126. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/.prettierrc +0 -0
  127. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/__init__.py +0 -0
  128. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/base.py +0 -0
  129. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/build.mts +0 -0
  130. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/client.http.mts +0 -0
  131. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/client.mts +0 -0
  132. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/errors.py +0 -0
  133. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/global.d.ts +0 -0
  134. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/package.json +0 -0
  135. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/remote.py +0 -0
  136. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/schema.py +0 -0
  137. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/src/graph.mts +0 -0
  138. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/src/load.hooks.mjs +0 -0
  139. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/src/preload.mjs +0 -0
  140. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/src/utils/files.mts +0 -0
  141. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/src/utils/importMap.mts +0 -0
  142. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
  143. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/src/utils/serde.mts +0 -0
  144. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/sse.py +0 -0
  145. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/traceblock.mts +0 -0
  146. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/tsconfig.json +0 -0
  147. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/ui.py +0 -0
  148. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/js/yarn.lock +0 -0
  149. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/logging.py +0 -0
  150. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/metadata.py +0 -0
  151. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/metrics_datadog.py +0 -0
  152. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/middleware/__init__.py +0 -0
  153. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/middleware/ensure_store.py +0 -0
  154. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/middleware/http_logger.py +0 -0
  155. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/middleware/private_network.py +0 -0
  156. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/middleware/request_id.py +0 -0
  157. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/models/__init__.py +0 -0
  158. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/models/run.py +0 -0
  159. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/otel_context.py +0 -0
  160. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/patch.py +0 -0
  161. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/queue_entrypoint.py +0 -0
  162. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/route.py +0 -0
  163. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/schema.py +0 -0
  164. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/self_hosted_logs.py +0 -0
  165. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/self_hosted_metrics.py +0 -0
  166. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/serde.py +0 -0
  167. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/server.py +0 -0
  168. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/sse.py +0 -0
  169. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/state.py +0 -0
  170. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/store.py +0 -0
  171. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/stream.py +0 -0
  172. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/timing/__init__.py +0 -0
  173. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/timing/profiler.py +0 -0
  174. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/timing/timer.py +0 -0
  175. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/traceblock.py +0 -0
  176. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/tunneling/cloudflare.py +0 -0
  177. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/utils/__init__.py +0 -0
  178. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/utils/cache.py +0 -0
  179. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/utils/errors.py +0 -0
  180. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/utils/extract.py +0 -0
  181. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/utils/future.py +0 -0
  182. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/utils/headers.py +0 -0
  183. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/utils/retriable_client.py +0 -0
  184. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/utils/uuids.py +0 -0
  185. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/validation.py +0 -0
  186. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/webhook.py +0 -0
  187. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_api/worker.py +0 -0
  188. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/__init__.py +0 -0
  189. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/checkpointer.py +0 -0
  190. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/__init__.py +0 -0
  191. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/_compat.py +0 -0
  192. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/channel.py +0 -0
  193. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/checkpoint.py +0 -0
  194. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/config.py +0 -0
  195. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/durability.py +0 -0
  196. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/exception.py +0 -0
  197. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/graph.py +0 -0
  198. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/interrupt.py +0 -0
  199. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/messages.py +0 -0
  200. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/orchestrator_response.py +0 -0
  201. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/runopts.py +0 -0
  202. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/stream_mode.py +0 -0
  203. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/struct.py +0 -0
  204. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/task.py +0 -0
  205. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/conversion/value.py +0 -0
  206. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/__init__.py +0 -0
  207. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/checkpointer_pb2.py +0 -0
  208. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/checkpointer_pb2.pyi +0 -0
  209. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.py +0 -0
  210. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.pyi +0 -0
  211. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/core_api_pb2.py +0 -0
  212. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/core_api_pb2.pyi +0 -0
  213. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/core_api_pb2_grpc.py +0 -0
  214. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/core_api_pb2_grpc.pyi +0 -0
  215. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/encryption_pb2.py +0 -0
  216. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/encryption_pb2.pyi +0 -0
  217. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/encryption_pb2_grpc.py +0 -0
  218. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/encryption_pb2_grpc.pyi +0 -0
  219. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/engine_api_pb2.py +0 -0
  220. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/engine_api_pb2.pyi +0 -0
  221. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/engine_api_pb2_grpc.py +0 -0
  222. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/engine_api_pb2_grpc.pyi +0 -0
  223. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/engine_common_pb2.py +0 -0
  224. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/engine_common_pb2.pyi +0 -0
  225. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/engine_common_pb2_grpc.py +0 -0
  226. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/engine_common_pb2_grpc.pyi +0 -0
  227. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.py +0 -0
  228. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.pyi +0 -0
  229. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.py +0 -0
  230. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.pyi +0 -0
  231. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_control_signal_pb2.py +0 -0
  232. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_control_signal_pb2.pyi +0 -0
  233. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.py +0 -0
  234. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.pyi +0 -0
  235. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.py +0 -0
  236. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.pyi +0 -0
  237. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.py +0 -0
  238. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.pyi +0 -0
  239. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_durability_pb2.py +0 -0
  240. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_durability_pb2.pyi +0 -0
  241. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.py +0 -0
  242. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.pyi +0 -0
  243. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.py +0 -0
  244. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.pyi +0 -0
  245. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.py +0 -0
  246. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.pyi +0 -0
  247. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_run_status_pb2.py +0 -0
  248. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_run_status_pb2.pyi +0 -0
  249. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.py +0 -0
  250. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.pyi +0 -0
  251. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2.py +0 -0
  252. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2.pyi +0 -0
  253. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2_grpc.py +0 -0
  254. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2_grpc.pyi +0 -0
  255. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_stream_mode_pb2.py +0 -0
  256. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_stream_mode_pb2.pyi +0 -0
  257. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.py +0 -0
  258. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.pyi +0 -0
  259. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_thread_status_pb2.py +0 -0
  260. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_thread_status_pb2.pyi +0 -0
  261. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.py +0 -0
  262. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.pyi +0 -0
  263. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.py +0 -0
  264. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.pyi +0 -0
  265. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.py +0 -0
  266. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.pyi +0 -0
  267. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/errors_pb2.py +0 -0
  268. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/errors_pb2.pyi +0 -0
  269. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/errors_pb2_grpc.py +0 -0
  270. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/errors_pb2_grpc.pyi +0 -0
  271. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/executor_api_pb2.py +0 -0
  272. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/executor_api_pb2.pyi +0 -0
  273. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/executor_api_pb2_grpc.py +0 -0
  274. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/proto/executor_api_pb2_grpc.pyi +0 -0
  275. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/sanitize.py +0 -0
  276. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_grpc_common/serde.py +0 -0
  277. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_license/__init__.py +0 -0
  278. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_license/validation.py +0 -0
  279. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_runtime/__init__.py +0 -0
  280. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_runtime/checkpoint.py +0 -0
  281. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_runtime/database.py +0 -0
  282. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_runtime/lifespan.py +0 -0
  283. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_runtime/metrics.py +0 -0
  284. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_runtime/ops.py +0 -0
  285. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_runtime/queue.py +0 -0
  286. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_runtime/retry.py +0 -0
  287. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_runtime/routes.py +0 -0
  288. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/langgraph_runtime/store.py +0 -0
  289. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/logging.json +0 -0
  290. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/openapi.json +0 -0
  291. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/scripts/build_wheel.py +0 -0
  292. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/scripts/create_license.py +0 -0
  293. {langgraph_api-0.7.90 → langgraph_api-0.7.91}/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.7.90
3
+ Version: 0.7.91
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
@@ -32,6 +32,7 @@ Requires-Dist: truststore>=0.1
32
32
  Requires-Dist: uuid-utils>=0.12.0
33
33
  Requires-Dist: uvicorn>=0.26.0
34
34
  Requires-Dist: watchfiles>=0.13
35
+ Requires-Dist: zstandard>=0.23.0
35
36
  Description-Content-Type: text/markdown
36
37
 
37
38
  # LangGraph API
@@ -18,11 +18,6 @@ DELAY ?= 0
18
18
  EXPAND ?= 1
19
19
  STEPS ?= 100
20
20
 
21
- benchmark-burst:
22
- make benchmark-reset
23
- npm install
24
- npm run build
25
- k6 run burst.js
26
21
 
27
22
  benchmark-ramp:
28
23
  make benchmark-reset
@@ -6,11 +6,8 @@ K6 is a modern load testing tool that allows you to test the performance and rel
6
6
 
7
7
  ### Available Tests
8
8
 
9
- There are two modes of testing available:
10
- 1. `Burst` - Kick off a burst of /run/wait requests.
11
- Available Params:
12
- BURST_SIZE - How many requests to run. Default: 100
13
- 2. `Ramp` - Scale up the number of /run/wait requests and then plateau.
9
+ Available test:
10
+ 1. `Ramp` - Scale up the number of /run/wait requests and then plateau.
14
11
  Available Params:
15
12
  LOAD_SIZE - How much traffic to ramp up over a 60s period. Default: 500
16
13
  LEVELS - The number of times to ramp up. Default: 2
@@ -45,17 +42,11 @@ Available Params:
45
42
  ### Basic Usage
46
43
 
47
44
  ```bash
48
- # Run burst test with default burst size
49
- make benchmark-burst
50
-
51
- # Run burst test with custom burst size
52
- BURST_SIZE=500 make benchmark-burst
53
-
54
45
  # Run ramp test with a different mode and expand size
55
46
  MODE='parallel' EXPAND=100 make benchmark-ramp
56
47
 
57
- # Run burst test against a deployment
58
- BASE_URL=https://jdr-benchmark-1cfe27c4cd375e1c999f02f186f617f6.us.langgraph.app make benchmark-burst
48
+ # Run ramp test against a deployment
49
+ BASE_URL=https://jdr-benchmark-1cfe27c4cd375e1c999f02f186f617f6.us.langgraph.app make benchmark-ramp
59
50
 
60
51
  # Clean up result files
61
52
  make benchmark-clean
@@ -63,7 +54,7 @@ make benchmark-clean
63
54
 
64
55
  ### Output
65
56
 
66
- Summary results are written to stdout and persisted in a summary_burst file. More detailed results for the same burst are persisted in a results_burst file.
57
+ Summary results are written to stdout and persisted in a summary file. More detailed results for the same run are persisted in a results file.
67
58
 
68
59
  Charts can be created from the run locally using the `make benchmark-charts` command.
69
60
 
@@ -0,0 +1 @@
1
+ __version__ = "0.7.91"
@@ -41,7 +41,7 @@ COPIABLE_KEYS = [
41
41
  "configurable",
42
42
  ]
43
43
 
44
- DEFAULT_RECURSION_LIMIT = int(getenv("LANGGRAPH_DEFAULT_RECURSION_LIMIT", "25"))
44
+ DEFAULT_RECURSION_LIMIT = int(getenv("LANGGRAPH_DEFAULT_RECURSION_LIMIT", "10011"))
45
45
 
46
46
  T = TypeVar("T")
47
47
  P = ParamSpec("P")
@@ -5,10 +5,11 @@ from dataclasses import dataclass
5
5
 
6
6
  import orjson
7
7
  import structlog
8
+ import zstandard
8
9
 
9
10
  PROTOCOL_VERSION = 1
11
+ PROTOCOL_VERSION_COMPRESSED = 2
10
12
  """
11
- ---
12
13
  Version 1:
13
14
  Byte Offsets
14
15
  0 1 3 5 5+N 5+N+M
@@ -17,6 +18,8 @@ Byte Offsets
17
18
  +--------+------------------+----------------+------------------+------------------+--------------------+
18
19
  1 B 2 B 2 B N B M B variable
19
20
 
21
+ Version 2: Same header layout as v1, but message is zstd-compressed.
22
+
20
23
  ---- Old (to be dropped soon / multiple formats)
21
24
  Version 0 (old):
22
25
  1) b"$:" + <stream_id> + b"$:" + <event> + b"$:" + <raw_json>
@@ -27,6 +30,8 @@ BYTE_MASK = 0xFF
27
30
  HEADER_LEN = 5
28
31
  logger = structlog.stdlib.get_logger(__name__)
29
32
 
33
+ _zstd_decompressor = zstandard.ZstdDecompressor()
34
+
30
35
 
31
36
  class StreamFormatError(ValueError):
32
37
  """Raised when a stream frame fails validation."""
@@ -67,12 +72,9 @@ class StreamPacket:
67
72
 
68
73
 
69
74
  class StreamCodec:
70
- """Codec for encoding and decoding stream packets."""
71
-
72
- __slots__ = ("_version",)
75
+ """Encodes v1 stream frames and decodes any supported version (v1, v2)."""
73
76
 
74
- def __init__(self, *, protocol_version: int = PROTOCOL_VERSION) -> None:
75
- self._version = protocol_version & BYTE_MASK
77
+ __slots__ = ()
76
78
 
77
79
  def encode(
78
80
  self,
@@ -86,11 +88,8 @@ class StreamCodec:
86
88
  event_bytes = event.encode("utf-8")
87
89
  if len(event_bytes) > 0xFFFF:
88
90
  raise StreamFormatError("event exceeds 65535 bytes; cannot encode")
89
- if not event_bytes:
90
- raise StreamFormatError("event cannot be empty")
91
91
 
92
92
  if stream_id:
93
- # It's a resumable stream
94
93
  stream_id_bytes = stream_id.encode("utf-8")
95
94
  if len(stream_id_bytes) > 0xFFFF:
96
95
  raise StreamFormatError("stream_id exceeds 65535 bytes; cannot encode")
@@ -99,7 +98,7 @@ class StreamCodec:
99
98
  stream_id_len = len(stream_id_bytes) if stream_id_bytes else 0
100
99
  event_len = len(event_bytes)
101
100
  frame = bytearray(HEADER_LEN + stream_id_len + event_len + len(message))
102
- frame[0] = self._version
101
+ frame[0] = PROTOCOL_VERSION
103
102
  frame[1:3] = stream_id_len.to_bytes(2, "big")
104
103
  frame[3:5] = event_len.to_bytes(2, "big")
105
104
 
@@ -119,7 +118,7 @@ class StreamCodec:
119
118
  raise StreamFormatError("frame too short")
120
119
 
121
120
  version = view[0]
122
- if version != self._version:
121
+ if version not in (PROTOCOL_VERSION, PROTOCOL_VERSION_COMPRESSED):
123
122
  raise StreamFormatError(f"unsupported protocol version: {version}")
124
123
 
125
124
  stream_id_len = int.from_bytes(view[1:3], "big")
@@ -131,13 +130,22 @@ class StreamCodec:
131
130
  stream_id_view = view[offset : offset + stream_id_len]
132
131
  offset += stream_id_len
133
132
  else:
134
- # Not resumable
135
133
  stream_id_view = None
136
134
  if len(view) < offset + event_len:
137
135
  raise StreamFormatError("truncated event payload")
138
136
  event_view = view[offset : offset + event_len]
139
137
  offset += event_len
140
138
  message_view = view[offset:]
139
+
140
+ if version == PROTOCOL_VERSION_COMPRESSED:
141
+ try:
142
+ decompressed = _zstd_decompressor.decompress(message_view)
143
+ except zstandard.ZstdError as exc:
144
+ raise StreamFormatError(
145
+ f"failed to decompress zstd message: {exc}"
146
+ ) from exc
147
+ message_view = memoryview(decompressed)
148
+
141
149
  return StreamPacket(
142
150
  version=version,
143
151
  event=event_view,
@@ -149,7 +157,7 @@ class StreamCodec:
149
157
  try:
150
158
  return self.decode(data)
151
159
  except StreamFormatError as e:
152
- logger.warning(f"Failed to decode as version {self._version}", error=e)
160
+ logger.warning("Failed to decode stream frame", error=e)
153
161
  return None
154
162
 
155
163
 
@@ -169,7 +177,7 @@ def decode_stream_message(
169
177
  logger.warning("Unknown type for stream message", type=type(data))
170
178
  view = memoryview(bytes(data))
171
179
 
172
- # Current protocol version
180
+ # Current protocol version (v1 + v2)
173
181
  if packet := STREAM_CODEC.decode_safe(view):
174
182
  return packet
175
183
  logger.debug("Attempting to decode a v0 formatted stream message")
@@ -42,6 +42,7 @@ dependencies = [
42
42
  "opentelemetry-sdk>=1.37.0",
43
43
  "opentelemetry-exporter-otlp-proto-http>=1.37.0",
44
44
  "uuid-utils>=0.12.0",
45
+ "zstandard>=0.23.0",
45
46
  ]
46
47
 
47
48
  [project.scripts]
@@ -275,61 +275,61 @@ wheels = [
275
275
 
276
276
  [[package]]
277
277
  name = "cryptography"
278
- version = "46.0.5"
278
+ version = "46.0.6"
279
279
  source = { registry = "https://pypi.org/simple" }
280
280
  dependencies = [
281
281
  { name = "cffi", marker = "platform_python_implementation != 'PyPy'" },
282
282
  ]
283
- sdist = { url = "https://files.pythonhosted.org/packages/60/04/ee2a9e8542e4fa2773b81771ff8349ff19cdd56b7258a0cc442639052edb/cryptography-46.0.5.tar.gz", hash = "sha256:abace499247268e3757271b2f1e244b36b06f8515cf27c4d49468fc9eb16e93d", size = 750064, upload-time = "2026-02-10T19:18:38.255Z" }
284
- wheels = [
285
- { url = "https://files.pythonhosted.org/packages/f7/81/b0bb27f2ba931a65409c6b8a8b358a7f03c0e46eceacddff55f7c84b1f3b/cryptography-46.0.5-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:351695ada9ea9618b3500b490ad54c739860883df6c1f555e088eaf25b1bbaad", size = 7176289, upload-time = "2026-02-10T19:17:08.274Z" },
286
- { url = "https://files.pythonhosted.org/packages/ff/9e/6b4397a3e3d15123de3b1806ef342522393d50736c13b20ec4c9ea6693a6/cryptography-46.0.5-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c18ff11e86df2e28854939acde2d003f7984f721eba450b56a200ad90eeb0e6b", size = 4275637, upload-time = "2026-02-10T19:17:10.53Z" },
287
- { url = "https://files.pythonhosted.org/packages/63/e7/471ab61099a3920b0c77852ea3f0ea611c9702f651600397ac567848b897/cryptography-46.0.5-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d7e3d356b8cd4ea5aff04f129d5f66ebdc7b6f8eae802b93739ed520c47c79b", size = 4424742, upload-time = "2026-02-10T19:17:12.388Z" },
288
- { url = "https://files.pythonhosted.org/packages/37/53/a18500f270342d66bf7e4d9f091114e31e5ee9e7375a5aba2e85a91e0044/cryptography-46.0.5-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:50bfb6925eff619c9c023b967d5b77a54e04256c4281b0e21336a130cd7fc263", size = 4277528, upload-time = "2026-02-10T19:17:13.853Z" },
289
- { url = "https://files.pythonhosted.org/packages/22/29/c2e812ebc38c57b40e7c583895e73c8c5adb4d1e4a0cc4c5a4fdab2b1acc/cryptography-46.0.5-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:803812e111e75d1aa73690d2facc295eaefd4439be1023fefc4995eaea2af90d", size = 4947993, upload-time = "2026-02-10T19:17:15.618Z" },
290
- { url = "https://files.pythonhosted.org/packages/6b/e7/237155ae19a9023de7e30ec64e5d99a9431a567407ac21170a046d22a5a3/cryptography-46.0.5-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ee190460e2fbe447175cda91b88b84ae8322a104fc27766ad09428754a618ed", size = 4456855, upload-time = "2026-02-10T19:17:17.221Z" },
291
- { url = "https://files.pythonhosted.org/packages/2d/87/fc628a7ad85b81206738abbd213b07702bcbdada1dd43f72236ef3cffbb5/cryptography-46.0.5-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:f145bba11b878005c496e93e257c1e88f154d278d2638e6450d17e0f31e558d2", size = 3984635, upload-time = "2026-02-10T19:17:18.792Z" },
292
- { url = "https://files.pythonhosted.org/packages/84/29/65b55622bde135aedf4565dc509d99b560ee4095e56989e815f8fd2aa910/cryptography-46.0.5-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:e9251e3be159d1020c4030bd2e5f84d6a43fe54b6c19c12f51cde9542a2817b2", size = 4277038, upload-time = "2026-02-10T19:17:20.256Z" },
293
- { url = "https://files.pythonhosted.org/packages/bc/36/45e76c68d7311432741faf1fbf7fac8a196a0a735ca21f504c75d37e2558/cryptography-46.0.5-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:47fb8a66058b80e509c47118ef8a75d14c455e81ac369050f20ba0d23e77fee0", size = 4912181, upload-time = "2026-02-10T19:17:21.825Z" },
294
- { url = "https://files.pythonhosted.org/packages/6d/1a/c1ba8fead184d6e3d5afcf03d569acac5ad063f3ac9fb7258af158f7e378/cryptography-46.0.5-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:4c3341037c136030cb46e4b1e17b7418ea4cbd9dd207e4a6f3b2b24e0d4ac731", size = 4456482, upload-time = "2026-02-10T19:17:25.133Z" },
295
- { url = "https://files.pythonhosted.org/packages/f9/e5/3fb22e37f66827ced3b902cf895e6a6bc1d095b5b26be26bd13c441fdf19/cryptography-46.0.5-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:890bcb4abd5a2d3f852196437129eb3667d62630333aacc13dfd470fad3aaa82", size = 4405497, upload-time = "2026-02-10T19:17:26.66Z" },
296
- { url = "https://files.pythonhosted.org/packages/1a/df/9d58bb32b1121a8a2f27383fabae4d63080c7ca60b9b5c88be742be04ee7/cryptography-46.0.5-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:80a8d7bfdf38f87ca30a5391c0c9ce4ed2926918e017c29ddf643d0ed2778ea1", size = 4667819, upload-time = "2026-02-10T19:17:28.569Z" },
297
- { url = "https://files.pythonhosted.org/packages/ea/ed/325d2a490c5e94038cdb0117da9397ece1f11201f425c4e9c57fe5b9f08b/cryptography-46.0.5-cp311-abi3-win32.whl", hash = "sha256:60ee7e19e95104d4c03871d7d7dfb3d22ef8a9b9c6778c94e1c8fcc8365afd48", size = 3028230, upload-time = "2026-02-10T19:17:30.518Z" },
298
- { url = "https://files.pythonhosted.org/packages/e9/5a/ac0f49e48063ab4255d9e3b79f5def51697fce1a95ea1370f03dc9db76f6/cryptography-46.0.5-cp311-abi3-win_amd64.whl", hash = "sha256:38946c54b16c885c72c4f59846be9743d699eee2b69b6988e0a00a01f46a61a4", size = 3480909, upload-time = "2026-02-10T19:17:32.083Z" },
299
- { url = "https://files.pythonhosted.org/packages/00/13/3d278bfa7a15a96b9dc22db5a12ad1e48a9eb3d40e1827ef66a5df75d0d0/cryptography-46.0.5-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:94a76daa32eb78d61339aff7952ea819b1734b46f73646a07decb40e5b3448e2", size = 7119287, upload-time = "2026-02-10T19:17:33.801Z" },
300
- { url = "https://files.pythonhosted.org/packages/67/c8/581a6702e14f0898a0848105cbefd20c058099e2c2d22ef4e476dfec75d7/cryptography-46.0.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5be7bf2fb40769e05739dd0046e7b26f9d4670badc7b032d6ce4db64dddc0678", size = 4265728, upload-time = "2026-02-10T19:17:35.569Z" },
301
- { url = "https://files.pythonhosted.org/packages/dd/4a/ba1a65ce8fc65435e5a849558379896c957870dd64fecea97b1ad5f46a37/cryptography-46.0.5-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fe346b143ff9685e40192a4960938545c699054ba11d4f9029f94751e3f71d87", size = 4408287, upload-time = "2026-02-10T19:17:36.938Z" },
302
- { url = "https://files.pythonhosted.org/packages/f8/67/8ffdbf7b65ed1ac224d1c2df3943553766914a8ca718747ee3871da6107e/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:c69fd885df7d089548a42d5ec05be26050ebcd2283d89b3d30676eb32ff87dee", size = 4270291, upload-time = "2026-02-10T19:17:38.748Z" },
303
- { url = "https://files.pythonhosted.org/packages/f8/e5/f52377ee93bc2f2bba55a41a886fd208c15276ffbd2569f2ddc89d50e2c5/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:8293f3dea7fc929ef7240796ba231413afa7b68ce38fd21da2995549f5961981", size = 4927539, upload-time = "2026-02-10T19:17:40.241Z" },
304
- { url = "https://files.pythonhosted.org/packages/3b/02/cfe39181b02419bbbbcf3abdd16c1c5c8541f03ca8bda240debc467d5a12/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:1abfdb89b41c3be0365328a410baa9df3ff8a9110fb75e7b52e66803ddabc9a9", size = 4442199, upload-time = "2026-02-10T19:17:41.789Z" },
305
- { url = "https://files.pythonhosted.org/packages/c0/96/2fcaeb4873e536cf71421a388a6c11b5bc846e986b2b069c79363dc1648e/cryptography-46.0.5-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:d66e421495fdb797610a08f43b05269e0a5ea7f5e652a89bfd5a7d3c1dee3648", size = 3960131, upload-time = "2026-02-10T19:17:43.379Z" },
306
- { url = "https://files.pythonhosted.org/packages/d8/d2/b27631f401ddd644e94c5cf33c9a4069f72011821cf3dc7309546b0642a0/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:4e817a8920bfbcff8940ecfd60f23d01836408242b30f1a708d93198393a80b4", size = 4270072, upload-time = "2026-02-10T19:17:45.481Z" },
307
- { url = "https://files.pythonhosted.org/packages/f4/a7/60d32b0370dae0b4ebe55ffa10e8599a2a59935b5ece1b9f06edb73abdeb/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:68f68d13f2e1cb95163fa3b4db4bf9a159a418f5f6e7242564fc75fcae667fd0", size = 4892170, upload-time = "2026-02-10T19:17:46.997Z" },
308
- { url = "https://files.pythonhosted.org/packages/d2/b9/cf73ddf8ef1164330eb0b199a589103c363afa0cf794218c24d524a58eab/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:a3d1fae9863299076f05cb8a778c467578262fae09f9dc0ee9b12eb4268ce663", size = 4441741, upload-time = "2026-02-10T19:17:48.661Z" },
309
- { url = "https://files.pythonhosted.org/packages/5f/eb/eee00b28c84c726fe8fa0158c65afe312d9c3b78d9d01daf700f1f6e37ff/cryptography-46.0.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c4143987a42a2397f2fc3b4d7e3a7d313fbe684f67ff443999e803dd75a76826", size = 4396728, upload-time = "2026-02-10T19:17:50.058Z" },
310
- { url = "https://files.pythonhosted.org/packages/65/f4/6bc1a9ed5aef7145045114b75b77c2a8261b4d38717bd8dea111a63c3442/cryptography-46.0.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:7d731d4b107030987fd61a7f8ab512b25b53cef8f233a97379ede116f30eb67d", size = 4652001, upload-time = "2026-02-10T19:17:51.54Z" },
311
- { url = "https://files.pythonhosted.org/packages/86/ef/5d00ef966ddd71ac2e6951d278884a84a40ffbd88948ef0e294b214ae9e4/cryptography-46.0.5-cp314-cp314t-win32.whl", hash = "sha256:c3bcce8521d785d510b2aad26ae2c966092b7daa8f45dd8f44734a104dc0bc1a", size = 3003637, upload-time = "2026-02-10T19:17:52.997Z" },
312
- { url = "https://files.pythonhosted.org/packages/b7/57/f3f4160123da6d098db78350fdfd9705057aad21de7388eacb2401dceab9/cryptography-46.0.5-cp314-cp314t-win_amd64.whl", hash = "sha256:4d8ae8659ab18c65ced284993c2265910f6c9e650189d4e3f68445ef82a810e4", size = 3469487, upload-time = "2026-02-10T19:17:54.549Z" },
313
- { url = "https://files.pythonhosted.org/packages/e2/fa/a66aa722105ad6a458bebd64086ca2b72cdd361fed31763d20390f6f1389/cryptography-46.0.5-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:4108d4c09fbbf2789d0c926eb4152ae1760d5a2d97612b92d508d96c861e4d31", size = 7170514, upload-time = "2026-02-10T19:17:56.267Z" },
314
- { url = "https://files.pythonhosted.org/packages/0f/04/c85bdeab78c8bc77b701bf0d9bdcf514c044e18a46dcff330df5448631b0/cryptography-46.0.5-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d1f30a86d2757199cb2d56e48cce14deddf1f9c95f1ef1b64ee91ea43fe2e18", size = 4275349, upload-time = "2026-02-10T19:17:58.419Z" },
315
- { url = "https://files.pythonhosted.org/packages/5c/32/9b87132a2f91ee7f5223b091dc963055503e9b442c98fc0b8a5ca765fab0/cryptography-46.0.5-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:039917b0dc418bb9f6edce8a906572d69e74bd330b0b3fea4f79dab7f8ddd235", size = 4420667, upload-time = "2026-02-10T19:18:00.619Z" },
316
- { url = "https://files.pythonhosted.org/packages/a1/a6/a7cb7010bec4b7c5692ca6f024150371b295ee1c108bdc1c400e4c44562b/cryptography-46.0.5-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ba2a27ff02f48193fc4daeadf8ad2590516fa3d0adeeb34336b96f7fa64c1e3a", size = 4276980, upload-time = "2026-02-10T19:18:02.379Z" },
317
- { url = "https://files.pythonhosted.org/packages/8e/7c/c4f45e0eeff9b91e3f12dbd0e165fcf2a38847288fcfd889deea99fb7b6d/cryptography-46.0.5-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:61aa400dce22cb001a98014f647dc21cda08f7915ceb95df0c9eaf84b4b6af76", size = 4939143, upload-time = "2026-02-10T19:18:03.964Z" },
318
- { url = "https://files.pythonhosted.org/packages/37/19/e1b8f964a834eddb44fa1b9a9976f4e414cbb7aa62809b6760c8803d22d1/cryptography-46.0.5-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ce58ba46e1bc2aac4f7d9290223cead56743fa6ab94a5d53292ffaac6a91614", size = 4453674, upload-time = "2026-02-10T19:18:05.588Z" },
319
- { url = "https://files.pythonhosted.org/packages/db/ed/db15d3956f65264ca204625597c410d420e26530c4e2943e05a0d2f24d51/cryptography-46.0.5-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:420d0e909050490d04359e7fdb5ed7e667ca5c3c402b809ae2563d7e66a92229", size = 3978801, upload-time = "2026-02-10T19:18:07.167Z" },
320
- { url = "https://files.pythonhosted.org/packages/41/e2/df40a31d82df0a70a0daf69791f91dbb70e47644c58581d654879b382d11/cryptography-46.0.5-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:582f5fcd2afa31622f317f80426a027f30dc792e9c80ffee87b993200ea115f1", size = 4276755, upload-time = "2026-02-10T19:18:09.813Z" },
321
- { url = "https://files.pythonhosted.org/packages/33/45/726809d1176959f4a896b86907b98ff4391a8aa29c0aaaf9450a8a10630e/cryptography-46.0.5-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:bfd56bb4b37ed4f330b82402f6f435845a5f5648edf1ad497da51a8452d5d62d", size = 4901539, upload-time = "2026-02-10T19:18:11.263Z" },
322
- { url = "https://files.pythonhosted.org/packages/99/0f/a3076874e9c88ecb2ecc31382f6e7c21b428ede6f55aafa1aa272613e3cd/cryptography-46.0.5-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:a3d507bb6a513ca96ba84443226af944b0f7f47dcc9a399d110cd6146481d24c", size = 4452794, upload-time = "2026-02-10T19:18:12.914Z" },
323
- { url = "https://files.pythonhosted.org/packages/02/ef/ffeb542d3683d24194a38f66ca17c0a4b8bf10631feef44a7ef64e631b1a/cryptography-46.0.5-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9f16fbdf4da055efb21c22d81b89f155f02ba420558db21288b3d0035bafd5f4", size = 4404160, upload-time = "2026-02-10T19:18:14.375Z" },
324
- { url = "https://files.pythonhosted.org/packages/96/93/682d2b43c1d5f1406ed048f377c0fc9fc8f7b0447a478d5c65ab3d3a66eb/cryptography-46.0.5-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ced80795227d70549a411a4ab66e8ce307899fad2220ce5ab2f296e687eacde9", size = 4667123, upload-time = "2026-02-10T19:18:15.886Z" },
325
- { url = "https://files.pythonhosted.org/packages/45/2d/9c5f2926cb5300a8eefc3f4f0b3f3df39db7f7ce40c8365444c49363cbda/cryptography-46.0.5-cp38-abi3-win32.whl", hash = "sha256:02f547fce831f5096c9a567fd41bc12ca8f11df260959ecc7c3202555cc47a72", size = 3010220, upload-time = "2026-02-10T19:18:17.361Z" },
326
- { url = "https://files.pythonhosted.org/packages/48/ef/0c2f4a8e31018a986949d34a01115dd057bf536905dca38897bacd21fac3/cryptography-46.0.5-cp38-abi3-win_amd64.whl", hash = "sha256:556e106ee01aa13484ce9b0239bca667be5004efb0aabbed28d353df86445595", size = 3467050, upload-time = "2026-02-10T19:18:18.899Z" },
327
- { url = "https://files.pythonhosted.org/packages/eb/dd/2d9fdb07cebdf3d51179730afb7d5e576153c6744c3ff8fded23030c204e/cryptography-46.0.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:3b4995dc971c9fb83c25aa44cf45f02ba86f71ee600d81091c2f0cbae116b06c", size = 3476964, upload-time = "2026-02-10T19:18:20.687Z" },
328
- { url = "https://files.pythonhosted.org/packages/e9/6f/6cc6cc9955caa6eaf83660b0da2b077c7fe8ff9950a3c5e45d605038d439/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:bc84e875994c3b445871ea7181d424588171efec3e185dced958dad9e001950a", size = 4218321, upload-time = "2026-02-10T19:18:22.349Z" },
329
- { url = "https://files.pythonhosted.org/packages/3e/5d/c4da701939eeee699566a6c1367427ab91a8b7088cc2328c09dbee940415/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:2ae6971afd6246710480e3f15824ed3029a60fc16991db250034efd0b9fb4356", size = 4381786, upload-time = "2026-02-10T19:18:24.529Z" },
330
- { url = "https://files.pythonhosted.org/packages/ac/97/a538654732974a94ff96c1db621fa464f455c02d4bb7d2652f4edc21d600/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:d861ee9e76ace6cf36a6a89b959ec08e7bc2493ee39d07ffe5acb23ef46d27da", size = 4217990, upload-time = "2026-02-10T19:18:25.957Z" },
331
- { url = "https://files.pythonhosted.org/packages/ae/11/7e500d2dd3ba891197b9efd2da5454b74336d64a7cc419aa7327ab74e5f6/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:2b7a67c9cd56372f3249b39699f2ad479f6991e62ea15800973b956f4b73e257", size = 4381252, upload-time = "2026-02-10T19:18:27.496Z" },
332
- { url = "https://files.pythonhosted.org/packages/bc/58/6b3d24e6b9bc474a2dcdee65dfd1f008867015408a271562e4b690561a4d/cryptography-46.0.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8456928655f856c6e1533ff59d5be76578a7157224dbd9ce6872f25055ab9ab7", size = 3407605, upload-time = "2026-02-10T19:18:29.233Z" },
283
+ sdist = { url = "https://files.pythonhosted.org/packages/a4/ba/04b1bd4218cbc58dc90ce967106d51582371b898690f3ae0402876cc4f34/cryptography-46.0.6.tar.gz", hash = "sha256:27550628a518c5c6c903d84f637fbecf287f6cb9ced3804838a1295dc1fd0759", size = 750542, upload-time = "2026-03-25T23:34:53.396Z" }
284
+ wheels = [
285
+ { url = "https://files.pythonhosted.org/packages/47/23/9285e15e3bc57325b0a72e592921983a701efc1ee8f91c06c5f0235d86d9/cryptography-46.0.6-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:64235194bad039a10bb6d2d930ab3323baaec67e2ce36215fd0952fad0930ca8", size = 7176401, upload-time = "2026-03-25T23:33:22.096Z" },
286
+ { url = "https://files.pythonhosted.org/packages/60/f8/e61f8f13950ab6195b31913b42d39f0f9afc7d93f76710f299b5ec286ae6/cryptography-46.0.6-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:26031f1e5ca62fcb9d1fcb34b2b60b390d1aacaa15dc8b895a9ed00968b97b30", size = 4275275, upload-time = "2026-03-25T23:33:23.844Z" },
287
+ { url = "https://files.pythonhosted.org/packages/19/69/732a736d12c2631e140be2348b4ad3d226302df63ef64d30dfdb8db7ad1c/cryptography-46.0.6-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9a693028b9cbe51b5a1136232ee8f2bc242e4e19d456ded3fa7c86e43c713b4a", size = 4425320, upload-time = "2026-03-25T23:33:25.703Z" },
288
+ { url = "https://files.pythonhosted.org/packages/d4/12/123be7292674abf76b21ac1fc0e1af50661f0e5b8f0ec8285faac18eb99e/cryptography-46.0.6-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:67177e8a9f421aa2d3a170c3e56eca4e0128883cf52a071a7cbf53297f18b175", size = 4278082, upload-time = "2026-03-25T23:33:27.423Z" },
289
+ { url = "https://files.pythonhosted.org/packages/5b/ba/d5e27f8d68c24951b0a484924a84c7cdaed7502bac9f18601cd357f8b1d2/cryptography-46.0.6-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:d9528b535a6c4f8ff37847144b8986a9a143585f0540fbcb1a98115b543aa463", size = 4926514, upload-time = "2026-03-25T23:33:29.206Z" },
290
+ { url = "https://files.pythonhosted.org/packages/34/71/1ea5a7352ae516d5512d17babe7e1b87d9db5150b21f794b1377eac1edc0/cryptography-46.0.6-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:22259338084d6ae497a19bae5d4c66b7ca1387d3264d1c2c0e72d9e9b6a77b97", size = 4457766, upload-time = "2026-03-25T23:33:30.834Z" },
291
+ { url = "https://files.pythonhosted.org/packages/01/59/562be1e653accee4fdad92c7a2e88fced26b3fdfce144047519bbebc299e/cryptography-46.0.6-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:760997a4b950ff00d418398ad73fbc91aa2894b5c1db7ccb45b4f68b42a63b3c", size = 3986535, upload-time = "2026-03-25T23:33:33.02Z" },
292
+ { url = "https://files.pythonhosted.org/packages/d6/8b/b1ebfeb788bf4624d36e45ed2662b8bd43a05ff62157093c1539c1288a18/cryptography-46.0.6-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:3dfa6567f2e9e4c5dceb8ccb5a708158a2a871052fa75c8b78cb0977063f1507", size = 4277618, upload-time = "2026-03-25T23:33:34.567Z" },
293
+ { url = "https://files.pythonhosted.org/packages/dd/52/a005f8eabdb28df57c20f84c44d397a755782d6ff6d455f05baa2785bd91/cryptography-46.0.6-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:cdcd3edcbc5d55757e5f5f3d330dd00007ae463a7e7aa5bf132d1f22a4b62b19", size = 4890802, upload-time = "2026-03-25T23:33:37.034Z" },
294
+ { url = "https://files.pythonhosted.org/packages/ec/4d/8e7d7245c79c617d08724e2efa397737715ca0ec830ecb3c91e547302555/cryptography-46.0.6-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:d4e4aadb7fc1f88687f47ca20bb7227981b03afaae69287029da08096853b738", size = 4457425, upload-time = "2026-03-25T23:33:38.904Z" },
295
+ { url = "https://files.pythonhosted.org/packages/1d/5c/f6c3596a1430cec6f949085f0e1a970638d76f81c3ea56d93d564d04c340/cryptography-46.0.6-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2b417edbe8877cda9022dde3a008e2deb50be9c407eef034aeeb3a8b11d9db3c", size = 4405530, upload-time = "2026-03-25T23:33:40.842Z" },
296
+ { url = "https://files.pythonhosted.org/packages/7e/c9/9f9cea13ee2dbde070424e0c4f621c091a91ffcc504ffea5e74f0e1daeff/cryptography-46.0.6-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:380343e0653b1c9d7e1f55b52aaa2dbb2fdf2730088d48c43ca1c7c0abb7cc2f", size = 4667896, upload-time = "2026-03-25T23:33:42.781Z" },
297
+ { url = "https://files.pythonhosted.org/packages/ad/b5/1895bc0821226f129bc74d00eccfc6a5969e2028f8617c09790bf89c185e/cryptography-46.0.6-cp311-abi3-win32.whl", hash = "sha256:bcb87663e1f7b075e48c3be3ecb5f0b46c8fc50b50a97cf264e7f60242dca3f2", size = 3026348, upload-time = "2026-03-25T23:33:45.021Z" },
298
+ { url = "https://files.pythonhosted.org/packages/c3/f8/c9bcbf0d3e6ad288b9d9aa0b1dee04b063d19e8c4f871855a03ab3a297ab/cryptography-46.0.6-cp311-abi3-win_amd64.whl", hash = "sha256:6739d56300662c468fddb0e5e291f9b4d084bead381667b9e654c7dd81705124", size = 3483896, upload-time = "2026-03-25T23:33:46.649Z" },
299
+ { url = "https://files.pythonhosted.org/packages/01/41/3a578f7fd5c70611c0aacba52cd13cb364a5dee895a5c1d467208a9380b0/cryptography-46.0.6-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:2ef9e69886cbb137c2aef9772c2e7138dc581fad4fcbcf13cc181eb5a3ab6275", size = 7117147, upload-time = "2026-03-25T23:33:48.249Z" },
300
+ { url = "https://files.pythonhosted.org/packages/fa/87/887f35a6fca9dde90cad08e0de0c89263a8e59b2d2ff904fd9fcd8025b6f/cryptography-46.0.6-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7f417f034f91dcec1cb6c5c35b07cdbb2ef262557f701b4ecd803ee8cefed4f4", size = 4266221, upload-time = "2026-03-25T23:33:49.874Z" },
301
+ { url = "https://files.pythonhosted.org/packages/aa/a8/0a90c4f0b0871e0e3d1ed126aed101328a8a57fd9fd17f00fb67e82a51ca/cryptography-46.0.6-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d24c13369e856b94892a89ddf70b332e0b70ad4a5c43cf3e9cb71d6d7ffa1f7b", size = 4408952, upload-time = "2026-03-25T23:33:52.128Z" },
302
+ { url = "https://files.pythonhosted.org/packages/16/0b/b239701eb946523e4e9f329336e4ff32b1247e109cbab32d1a7b61da8ed7/cryptography-46.0.6-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:aad75154a7ac9039936d50cf431719a2f8d4ed3d3c277ac03f3339ded1a5e707", size = 4270141, upload-time = "2026-03-25T23:33:54.11Z" },
303
+ { url = "https://files.pythonhosted.org/packages/0f/a8/976acdd4f0f30df7b25605f4b9d3d89295351665c2091d18224f7ad5cdbf/cryptography-46.0.6-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:3c21d92ed15e9cfc6eb64c1f5a0326db22ca9c2566ca46d845119b45b4400361", size = 4904178, upload-time = "2026-03-25T23:33:55.725Z" },
304
+ { url = "https://files.pythonhosted.org/packages/b1/1b/bf0e01a88efd0e59679b69f42d4afd5bced8700bb5e80617b2d63a3741af/cryptography-46.0.6-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:4668298aef7cddeaf5c6ecc244c2302a2b8e40f384255505c22875eebb47888b", size = 4441812, upload-time = "2026-03-25T23:33:57.364Z" },
305
+ { url = "https://files.pythonhosted.org/packages/bb/8b/11df86de2ea389c65aa1806f331cae145f2ed18011f30234cc10ca253de8/cryptography-46.0.6-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:8ce35b77aaf02f3b59c90b2c8a05c73bac12cea5b4e8f3fbece1f5fddea5f0ca", size = 3963923, upload-time = "2026-03-25T23:33:59.361Z" },
306
+ { url = "https://files.pythonhosted.org/packages/91/e0/207fb177c3a9ef6a8108f234208c3e9e76a6aa8cf20d51932916bd43bda0/cryptography-46.0.6-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:c89eb37fae9216985d8734c1afd172ba4927f5a05cfd9bf0e4863c6d5465b013", size = 4269695, upload-time = "2026-03-25T23:34:00.909Z" },
307
+ { url = "https://files.pythonhosted.org/packages/21/5e/19f3260ed1e95bced52ace7501fabcd266df67077eeb382b79c81729d2d3/cryptography-46.0.6-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:ed418c37d095aeddf5336898a132fba01091f0ac5844e3e8018506f014b6d2c4", size = 4869785, upload-time = "2026-03-25T23:34:02.796Z" },
308
+ { url = "https://files.pythonhosted.org/packages/10/38/cd7864d79aa1d92ef6f1a584281433419b955ad5a5ba8d1eb6c872165bcb/cryptography-46.0.6-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:69cf0056d6947edc6e6760e5f17afe4bea06b56a9ac8a06de9d2bd6b532d4f3a", size = 4441404, upload-time = "2026-03-25T23:34:04.35Z" },
309
+ { url = "https://files.pythonhosted.org/packages/09/0a/4fe7a8d25fed74419f91835cf5829ade6408fd1963c9eae9c4bce390ecbb/cryptography-46.0.6-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8e7304c4f4e9490e11efe56af6713983460ee0780f16c63f219984dab3af9d2d", size = 4397549, upload-time = "2026-03-25T23:34:06.342Z" },
310
+ { url = "https://files.pythonhosted.org/packages/5f/a0/7d738944eac6513cd60a8da98b65951f4a3b279b93479a7e8926d9cd730b/cryptography-46.0.6-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:b928a3ca837c77a10e81a814a693f2295200adb3352395fad024559b7be7a736", size = 4651874, upload-time = "2026-03-25T23:34:07.916Z" },
311
+ { url = "https://files.pythonhosted.org/packages/cb/f1/c2326781ca05208845efca38bf714f76939ae446cd492d7613808badedf1/cryptography-46.0.6-cp314-cp314t-win32.whl", hash = "sha256:97c8115b27e19e592a05c45d0dd89c57f81f841cc9880e353e0d3bf25b2139ed", size = 3001511, upload-time = "2026-03-25T23:34:09.892Z" },
312
+ { url = "https://files.pythonhosted.org/packages/c9/57/fe4a23eb549ac9d903bd4698ffda13383808ef0876cc912bcb2838799ece/cryptography-46.0.6-cp314-cp314t-win_amd64.whl", hash = "sha256:c797e2517cb7880f8297e2c0f43bb910e91381339336f75d2c1c2cbf811b70b4", size = 3471692, upload-time = "2026-03-25T23:34:11.613Z" },
313
+ { url = "https://files.pythonhosted.org/packages/c4/cc/f330e982852403da79008552de9906804568ae9230da8432f7496ce02b71/cryptography-46.0.6-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:12cae594e9473bca1a7aceb90536060643128bb274fcea0fc459ab90f7d1ae7a", size = 7162776, upload-time = "2026-03-25T23:34:13.308Z" },
314
+ { url = "https://files.pythonhosted.org/packages/49/b3/dc27efd8dcc4bff583b3f01d4a3943cd8b5821777a58b3a6a5f054d61b79/cryptography-46.0.6-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:639301950939d844a9e1c4464d7e07f902fe9a7f6b215bb0d4f28584729935d8", size = 4270529, upload-time = "2026-03-25T23:34:15.019Z" },
315
+ { url = "https://files.pythonhosted.org/packages/e6/05/e8d0e6eb4f0d83365b3cb0e00eb3c484f7348db0266652ccd84632a3d58d/cryptography-46.0.6-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ed3775295fb91f70b4027aeba878d79b3e55c0b3e97eaa4de71f8f23a9f2eb77", size = 4414827, upload-time = "2026-03-25T23:34:16.604Z" },
316
+ { url = "https://files.pythonhosted.org/packages/2f/97/daba0f5d2dc6d855e2dcb70733c812558a7977a55dd4a6722756628c44d1/cryptography-46.0.6-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:8927ccfbe967c7df312ade694f987e7e9e22b2425976ddbf28271d7e58845290", size = 4271265, upload-time = "2026-03-25T23:34:18.586Z" },
317
+ { url = "https://files.pythonhosted.org/packages/89/06/fe1fce39a37ac452e58d04b43b0855261dac320a2ebf8f5260dd55b201a9/cryptography-46.0.6-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:b12c6b1e1651e42ab5de8b1e00dc3b6354fdfd778e7fa60541ddacc27cd21410", size = 4916800, upload-time = "2026-03-25T23:34:20.561Z" },
318
+ { url = "https://files.pythonhosted.org/packages/ff/8a/b14f3101fe9c3592603339eb5d94046c3ce5f7fc76d6512a2d40efd9724e/cryptography-46.0.6-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:063b67749f338ca9c5a0b7fe438a52c25f9526b851e24e6c9310e7195aad3b4d", size = 4448771, upload-time = "2026-03-25T23:34:22.406Z" },
319
+ { url = "https://files.pythonhosted.org/packages/01/b3/0796998056a66d1973fd52ee89dc1bb3b6581960a91ad4ac705f182d398f/cryptography-46.0.6-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:02fad249cb0e090b574e30b276a3da6a149e04ee2f049725b1f69e7b8351ec70", size = 3978333, upload-time = "2026-03-25T23:34:24.281Z" },
320
+ { url = "https://files.pythonhosted.org/packages/c5/3d/db200af5a4ffd08918cd55c08399dc6c9c50b0bc72c00a3246e099d3a849/cryptography-46.0.6-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:7e6142674f2a9291463e5e150090b95a8519b2fb6e6aaec8917dd8d094ce750d", size = 4271069, upload-time = "2026-03-25T23:34:25.895Z" },
321
+ { url = "https://files.pythonhosted.org/packages/d7/18/61acfd5b414309d74ee838be321c636fe71815436f53c9f0334bf19064fa/cryptography-46.0.6-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:456b3215172aeefb9284550b162801d62f5f264a081049a3e94307fe20792cfa", size = 4878358, upload-time = "2026-03-25T23:34:27.67Z" },
322
+ { url = "https://files.pythonhosted.org/packages/8b/65/5bf43286d566f8171917cae23ac6add941654ccf085d739195a4eacf1674/cryptography-46.0.6-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:341359d6c9e68834e204ceaf25936dffeafea3829ab80e9503860dcc4f4dac58", size = 4448061, upload-time = "2026-03-25T23:34:29.375Z" },
323
+ { url = "https://files.pythonhosted.org/packages/e0/25/7e49c0fa7205cf3597e525d156a6bce5b5c9de1fd7e8cb01120e459f205a/cryptography-46.0.6-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9a9c42a2723999a710445bc0d974e345c32adfd8d2fac6d8a251fa829ad31cfb", size = 4399103, upload-time = "2026-03-25T23:34:32.036Z" },
324
+ { url = "https://files.pythonhosted.org/packages/44/46/466269e833f1c4718d6cd496ffe20c56c9c8d013486ff66b4f69c302a68d/cryptography-46.0.6-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6617f67b1606dfd9fe4dbfa354a9508d4a6d37afe30306fe6c101b7ce3274b72", size = 4659255, upload-time = "2026-03-25T23:34:33.679Z" },
325
+ { url = "https://files.pythonhosted.org/packages/0a/09/ddc5f630cc32287d2c953fc5d32705e63ec73e37308e5120955316f53827/cryptography-46.0.6-cp38-abi3-win32.whl", hash = "sha256:7f6690b6c55e9c5332c0b59b9c8a3fb232ebf059094c17f9019a51e9827df91c", size = 3010660, upload-time = "2026-03-25T23:34:35.418Z" },
326
+ { url = "https://files.pythonhosted.org/packages/1b/82/ca4893968aeb2709aacfb57a30dec6fa2ab25b10fa9f064b8882ce33f599/cryptography-46.0.6-cp38-abi3-win_amd64.whl", hash = "sha256:79e865c642cfc5c0b3eb12af83c35c5aeff4fa5c672dc28c43721c2c9fdd2f0f", size = 3471160, upload-time = "2026-03-25T23:34:37.191Z" },
327
+ { url = "https://files.pythonhosted.org/packages/2e/84/7ccff00ced5bac74b775ce0beb7d1be4e8637536b522b5df9b73ada42da2/cryptography-46.0.6-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:2ea0f37e9a9cf0df2952893ad145fd9627d326a59daec9b0802480fa3bcd2ead", size = 3475444, upload-time = "2026-03-25T23:34:38.944Z" },
328
+ { url = "https://files.pythonhosted.org/packages/bc/1f/4c926f50df7749f000f20eede0c896769509895e2648db5da0ed55db711d/cryptography-46.0.6-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:a3e84d5ec9ba01f8fd03802b2147ba77f0c8f2617b2aff254cedd551844209c8", size = 4218227, upload-time = "2026-03-25T23:34:40.871Z" },
329
+ { url = "https://files.pythonhosted.org/packages/c6/65/707be3ffbd5f786028665c3223e86e11c4cda86023adbc56bd72b1b6bab5/cryptography-46.0.6-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:12f0fa16cc247b13c43d56d7b35287ff1569b5b1f4c5e87e92cc4fcc00cd10c0", size = 4381399, upload-time = "2026-03-25T23:34:42.609Z" },
330
+ { url = "https://files.pythonhosted.org/packages/f3/6d/73557ed0ef7d73d04d9aba745d2c8e95218213687ee5e76b7d236a5030fc/cryptography-46.0.6-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:50575a76e2951fe7dbd1f56d181f8c5ceeeb075e9ff88e7ad997d2f42af06e7b", size = 4217595, upload-time = "2026-03-25T23:34:44.205Z" },
331
+ { url = "https://files.pythonhosted.org/packages/9e/c5/e1594c4eec66a567c3ac4400008108a415808be2ce13dcb9a9045c92f1a0/cryptography-46.0.6-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:90e5f0a7b3be5f40c3a0a0eafb32c681d8d2c181fc2a1bdabe9b3f611d9f6b1a", size = 4380912, upload-time = "2026-03-25T23:34:46.328Z" },
332
+ { url = "https://files.pythonhosted.org/packages/1a/89/843b53614b47f97fe1abc13f9a86efa5ec9e275292c457af1d4a60dc80e0/cryptography-46.0.6-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:6728c49e3b2c180ef26f8e9f0a883a2c585638db64cf265b49c9ba10652d430e", size = 3409955, upload-time = "2026-03-25T23:34:48.465Z" },
333
333
  ]
334
334
 
335
335
  [[package]]
@@ -697,6 +697,7 @@ dependencies = [
697
697
  { name = "uuid-utils" },
698
698
  { name = "uvicorn" },
699
699
  { name = "watchfiles" },
700
+ { name = "zstandard" },
700
701
  ]
701
702
 
702
703
  [package.dev-dependencies]
@@ -753,6 +754,7 @@ requires-dist = [
753
754
  { name = "uuid-utils", specifier = ">=0.12.0" },
754
755
  { name = "uvicorn", specifier = ">=0.26.0" },
755
756
  { name = "watchfiles", specifier = ">=0.13" },
757
+ { name = "zstandard", specifier = ">=0.23.0" },
756
758
  ]
757
759
 
758
760
  [package.metadata.requires-dev]
@@ -1,219 +0,0 @@
1
- import http from 'k6/http';
2
- import { check } from 'k6';
3
- import { Counter, Trend, Rate } from 'k6/metrics';
4
- import exec from 'k6/execution';
5
-
6
- // Custom metrics
7
- const runDuration = new Trend('run_duration');
8
- const successfulRuns = new Counter('successful_runs');
9
- const failedRuns = new Counter('failed_runs');
10
- const timeoutErrors = new Counter('timeout_errors');
11
- const connectionErrors = new Counter('connection_errors');
12
- const serverErrors = new Counter('server_errors');
13
- const otherErrors = new Counter('other_errors');
14
- const burstSuccessRate = new Rate('burst_success_rate');
15
-
16
- // URL of your Agent Server
17
- const BASE_URL = __ENV.BASE_URL || 'http://localhost:9123';
18
- // LangSmith API key only needed with a custom server endpoint
19
- const LANGSMITH_API_KEY = __ENV.LANGSMITH_API_KEY;
20
-
21
- // Params for the runner
22
- const BURST_SIZE = parseInt(__ENV.BURST_SIZE || '100');
23
-
24
- // Params for the agent
25
- const DATA_SIZE = parseInt(__ENV.DATA_SIZE || '1000');
26
- const DELAY = parseInt(__ENV.DELAY || '0');
27
- const EXPAND = parseInt(__ENV.EXPAND || '50');
28
- const MODE = __ENV.MODE || 'single';
29
-
30
- // Burst testing configuration
31
- export let options = {
32
- scenarios: {
33
- burst_test: {
34
- executor: 'shared-iterations', // All VUs share the total iterations
35
- vus: BURST_SIZE, // Number of concurrent requests in the burst
36
- iterations: BURST_SIZE, // Each VU does one request per burst
37
- maxDuration: '10s', // Time limit for each burst
38
- },
39
- },
40
- thresholds: {
41
- 'run_duration': ['p(95)<2000'],
42
- 'burst_success_rate': ['rate>=0.99'],
43
- },
44
- };
45
-
46
- // Main test function - executes during the burst
47
- export default function() {
48
- const startTime = new Date().getTime();
49
-
50
- // Create a unique identifier for each VU
51
- const burstId = __ENV.BURST_ID || '1';
52
-
53
- try {
54
- // Log burst start
55
- console.log(`[Burst ${burstId}] VU ${exec.vu.idInInstance} starting request`);
56
-
57
- // Prepare the request payload
58
- const headers = { 'Content-Type': 'application/json' };
59
- if (LANGSMITH_API_KEY) {
60
- headers['x-api-key'] = LANGSMITH_API_KEY;
61
- }
62
-
63
- // Create a payload with the LangGraph agent configuration
64
- const payload = JSON.stringify({
65
- assistant_id: "benchmark",
66
- input: {
67
- data_size: DATA_SIZE,
68
- delay: DELAY,
69
- expand: EXPAND,
70
- mode: MODE,
71
- },
72
- config: {
73
- recursion_limit: EXPAND + 2,
74
- }
75
- });
76
-
77
- // Make a single request to the wait endpoint
78
- const response = http.post(`${BASE_URL}/runs/wait`, payload, {
79
- headers,
80
- timeout: '35s'
81
- });
82
-
83
- // Don't include verification in the duration of the request
84
- const duration = new Date().getTime() - startTime;
85
-
86
- // Check the response
87
- const expected_length = MODE === 'single' ? 1 : EXPAND + 1;
88
- const success = check(response, {
89
- 'Run completed successfully': (r) => r.status === 200,
90
- 'Response contains expected number of messages': (r) => JSON.parse(r.body).messages.length === expected_length,
91
- });
92
-
93
- if (success) {
94
- // Record success metrics
95
- runDuration.add(duration);
96
- successfulRuns.add(1);
97
- burstSuccessRate.add(1); // 1 = success
98
-
99
- // Optional: Log successful run details
100
- console.log(`[Burst ${burstId}] VU ${exec.vu.idInInstance} completed in ${duration/1000}s`);
101
- } else {
102
- // Handle failure
103
- failedRuns.add(1);
104
- burstSuccessRate.add(0); // 0 = failure
105
-
106
- // Classify error based on status code or response
107
- if (response.status >= 500) {
108
- serverErrors.add(1);
109
- console.log(`[Burst ${burstId}] VU ${exec.vu.idInInstance} server error: ${response.status}`);
110
- } else if (response.status === 408 || response.error === 'timeout') {
111
- timeoutErrors.add(1);
112
- console.log(`[Burst ${burstId}] VU ${exec.vu.idInInstance} timeout error: ${response.error}`);
113
- } else {
114
- otherErrors.add(1);
115
- console.log(`response: ${JSON.stringify(response)}`);
116
- console.log(`[Burst ${burstId}] VU ${exec.vu.idInInstance} other error: Status ${response.status}, ${response.error}`);
117
- }
118
- }
119
-
120
- } catch (error) {
121
- // Handle exceptions (network errors, etc.)
122
- failedRuns.add(1);
123
- burstSuccessRate.add(0); // 0 = failure
124
-
125
- if (error.message.includes('timeout')) {
126
- timeoutErrors.add(1);
127
- console.log(`[Burst ${burstId}] VU ${exec.vu.idInInstance} timeout error: ${error.message}`);
128
- } else if (error.message.includes('connection') || error.message.includes('network')) {
129
- connectionErrors.add(1);
130
- console.log(`[Burst ${burstId}] VU ${exec.vu.idInInstance} connection error: ${error.message}`);
131
- } else {
132
- otherErrors.add(1);
133
- console.log(`[Burst ${burstId}] VU ${exec.vu.idInInstance} unexpected error: ${error.message}`);
134
- }
135
- }
136
- }
137
-
138
- // Setup function
139
- export function setup() {
140
- console.log(`Starting burst benchmark`);
141
- console.log(`Running on pod: ${__ENV.POD_NAME || 'local'}`);
142
- console.log(`Running with the following burst config: burst size ${BURST_SIZE}`);
143
- console.log(`Running with the following agent config: data size ${DATA_SIZE}, delay ${DELAY}, expand ${EXPAND}, mode ${MODE}`);
144
-
145
- return { startTime: new Date().toISOString() };
146
- }
147
-
148
- // Handle summary
149
- export function handleSummary(data) {
150
- // Helper function to safely access nested properties
151
- const safeGet = (obj, path, defaultValue) => {
152
- try {
153
- const parts = path.split('.');
154
- let result = obj;
155
-
156
- for (const part of parts) {
157
- if (result === undefined || result === null) return defaultValue;
158
- result = result[part];
159
- }
160
-
161
- return result === undefined || result === null ? defaultValue : result;
162
- } catch (e) {
163
- return defaultValue;
164
- }
165
- };
166
-
167
- // Calculate average burst success rate
168
- const burstRate = safeGet(data, 'metrics.burst_success_rate.values.rate', 0) * 100;
169
-
170
- // Create a condensed summary with key metrics
171
- const summary = {
172
- timestamp: new Date().toISOString(),
173
- podName: __ENV.POD_NAME || 'local',
174
- burstSettings: {
175
- burstSize: BURST_SIZE,
176
- },
177
- metrics: {
178
- totalRuns: safeGet(data, 'metrics.iterations.values.count', 0),
179
- successfulRuns: safeGet(data, 'metrics.successful_runs.values.count', 0),
180
- failedRuns: safeGet(data, 'metrics.failed_runs.values.count', 0),
181
- burstSuccessRate: burstRate.toFixed(2) + '%',
182
- avgDuration: safeGet(data, 'metrics.run_duration.values.avg', 0) / 1000,
183
- p95Duration: safeGet(data, 'metrics.run_duration.values.p(95)', 0) / 1000,
184
- errors: {
185
- timeout: safeGet(data, 'metrics.timeout_errors.values.count', 0),
186
- connection: safeGet(data, 'metrics.connection_errors.values.count', 0),
187
- server: safeGet(data, 'metrics.server_errors.values.count', 0),
188
- other: safeGet(data, 'metrics.other_errors.values.count', 0)
189
- }
190
- },
191
- raw: {
192
- http_reqs: safeGet(data, 'metrics.http_reqs.values.count', 0),
193
- http_req_failed: safeGet(data, 'metrics.http_req_failed.values.rate', 0),
194
- http_req_duration: {
195
- avg: safeGet(data, 'metrics.http_req_duration.values.avg', 0),
196
- min: safeGet(data, 'metrics.http_req_duration.values.min', 0),
197
- med: safeGet(data, 'metrics.http_req_duration.values.med', 0),
198
- max: safeGet(data, 'metrics.http_req_duration.values.max', 0),
199
- p90: safeGet(data, 'metrics.http_req_duration.values.p(90)', 0),
200
- p95: safeGet(data, 'metrics.http_req_duration.values.p(95)', 0),
201
- p99: safeGet(data, 'metrics.http_req_duration.values.p(99)', 0)
202
- }
203
- }
204
- };
205
-
206
- // Print the summary as JSON to the logs
207
- console.log(`====== BURST TEST SUMMARY ======`);
208
- console.log(`SUMMARY_JSON_START ${JSON.stringify(summary)} SUMMARY_JSON_END`);
209
-
210
- // Generate output files
211
- const burstStr = `burst${BURST_SIZE}`;
212
- const timestamp = new Date().toISOString().replace(/:/g, '-').replace(/\..+/, '');
213
-
214
- return {
215
- [`results_${burstStr}_${timestamp}.json`]: JSON.stringify(data, null, 2),
216
- [`summary_${burstStr}_${timestamp}.json`]: JSON.stringify(summary, null, 2),
217
- stdout: JSON.stringify(summary, null, 2) // Also print summary to console
218
- };
219
- }
@@ -1 +0,0 @@
1
- __version__ = "0.7.90"