langgraph-api 0.16.0.dev10__tar.gz → 0.16.0.dev12__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 (324) hide show
  1. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/PKG-INFO +1 -1
  2. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/benchmark-runners/delta_turns.ts +11 -0
  3. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/delta-report.js +37 -18
  4. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/delta-report.test.js +31 -14
  5. langgraph_api-0.16.0.dev12/langgraph_api/__init__.py +1 -0
  6. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/api/a2a.py +214 -163
  7. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/config/__init__.py +6 -2
  8. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/serde.py +3 -0
  9. langgraph_api-0.16.0.dev10/langgraph_api/__init__.py +0 -1
  10. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/.gitignore +0 -0
  11. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/LICENSE +0 -0
  12. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/Makefile +0 -0
  13. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/README.md +0 -0
  14. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/.gitignore +0 -0
  15. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/Makefile +0 -0
  16. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/README.md +0 -0
  17. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/benchmark-runners/assistant.ts +0 -0
  18. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/benchmark-runners/benchmark-runner.ts +0 -0
  19. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/benchmark-runners/benchmark_profiles.ts +0 -0
  20. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/benchmark-runners/benchmarks.ts +0 -0
  21. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/benchmark-runners/cancel_first_second_completes.ts +0 -0
  22. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/benchmark-runners/classify-error.test.js +0 -0
  23. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/benchmark-runners/classify-error.ts +0 -0
  24. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/benchmark-runners/delta-turns-lib.test.js +0 -0
  25. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/benchmark-runners/delta-turns-lib.ts +0 -0
  26. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/benchmark-runners/enqueued_runs_order.ts +0 -0
  27. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/benchmark-runners/interrupt_resume.ts +0 -0
  28. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/benchmark-runners/log-failure.ts +0 -0
  29. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/benchmark-runners/meta_workload.ts +0 -0
  30. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/benchmark-runners/store.ts +0 -0
  31. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/benchmark-runners/stream_write.ts +0 -0
  32. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/benchmark-runners/thread.ts +0 -0
  33. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/benchmark-runners/thread_runs_metadata_search.ts +0 -0
  34. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/benchmark-runners/threads_search_metadata.ts +0 -0
  35. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/benchmark-runners/types.ts +0 -0
  36. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/benchmark-runners/wait_write.ts +0 -0
  37. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/capacity-ci.js +0 -0
  38. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/capacity-ci.test.js +0 -0
  39. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/clean-cli.js +0 -0
  40. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/clean.js +0 -0
  41. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/continuous/README.md +0 -0
  42. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/continuous/pyproject.toml +0 -0
  43. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/continuous/runner.py +0 -0
  44. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/continuous/uv.lock +0 -0
  45. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/daily-report.js +0 -0
  46. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/daily-report.test.js +0 -0
  47. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/graphs.js +0 -0
  48. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/history.js +0 -0
  49. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/history.test.js +0 -0
  50. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/host-v2.js +0 -0
  51. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/host-v2.test.js +0 -0
  52. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/multer.test.js +0 -0
  53. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/package.json +0 -0
  54. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/ramp.js +0 -0
  55. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/reporting/dd_reporting.py +0 -0
  56. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/runner-descriptions.js +0 -0
  57. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/server-metrics.js +0 -0
  58. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/server-metrics.test.js +0 -0
  59. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/slack.js +0 -0
  60. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/staircase.py +0 -0
  61. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/staircase_step_k6.js +0 -0
  62. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/tsconfig.json +0 -0
  63. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/update-revision.js +0 -0
  64. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/weather.js +0 -0
  65. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/benchmark/yarn.lock +0 -0
  66. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/constraints.txt +0 -0
  67. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/custom_store.sql +0 -0
  68. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/forbidden.txt +0 -0
  69. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/hatch_build.py +0 -0
  70. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/healthcheck.py +0 -0
  71. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph-cloud-debugging-20260210132856.zip +0 -0
  72. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/_checkpointer/__init__.py +0 -0
  73. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/_checkpointer/_adapter.py +0 -0
  74. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/_checkpointer/protocol.py +0 -0
  75. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/_factory_utils.py +0 -0
  76. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/api/__init__.py +0 -0
  77. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/api/a2ui.py +0 -0
  78. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/api/a2ui_schemas/README.md +0 -0
  79. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/api/a2ui_schemas/client_capabilities.json +0 -0
  80. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/api/a2ui_schemas/client_data_model.json +0 -0
  81. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/api/a2ui_schemas/client_to_server.json +0 -0
  82. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/api/a2ui_schemas/server_to_client.json +0 -0
  83. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/api/assistants.py +0 -0
  84. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/api/event_streaming.py +0 -0
  85. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/api/mcp/__init__.py +0 -0
  86. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/api/mcp/_constants.py +0 -0
  87. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/api/mcp/_handlers.py +0 -0
  88. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/api/mcp/_models.py +0 -0
  89. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/api/mcp/_routes.py +0 -0
  90. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/api/mcp/_sanitizers.py +0 -0
  91. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/api/meta.py +0 -0
  92. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/api/openapi.py +0 -0
  93. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/api/profile.py +0 -0
  94. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/api/runs.py +0 -0
  95. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/api/store.py +0 -0
  96. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/api/threads.py +0 -0
  97. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/api/ui.py +0 -0
  98. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/asgi_transport.py +0 -0
  99. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/asyncio.py +0 -0
  100. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/auth/__init__.py +0 -0
  101. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/auth/custom.py +0 -0
  102. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/auth/errors.py +0 -0
  103. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/auth/langsmith/__init__.py +0 -0
  104. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/auth/langsmith/backend.py +0 -0
  105. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/auth/langsmith/client.py +0 -0
  106. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/auth/middleware.py +0 -0
  107. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/auth/noop.py +0 -0
  108. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/auth/studio_user.py +0 -0
  109. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/beacon_data_plane_jwt_auth.py +0 -0
  110. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/cache.py +0 -0
  111. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/cli.py +0 -0
  112. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/command.py +0 -0
  113. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/config/_parse.py +0 -0
  114. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/config/schemas.py +0 -0
  115. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/cron_scheduler.py +0 -0
  116. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/encryption/__init__.py +0 -0
  117. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/encryption/aes_json.py +0 -0
  118. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/encryption/context.py +0 -0
  119. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/encryption/custom.py +0 -0
  120. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/encryption/middleware.py +0 -0
  121. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/encryption/shared.py +0 -0
  122. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/errors.py +0 -0
  123. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/event_streaming/__init__.py +0 -0
  124. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/event_streaming/capabilities.py +0 -0
  125. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/event_streaming/constants.py +0 -0
  126. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/event_streaming/event_normalizers.py +0 -0
  127. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/event_streaming/namespace.py +0 -0
  128. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/event_streaming/service.py +0 -0
  129. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/event_streaming/session.py +0 -0
  130. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/event_streaming/state_normalizers.py +0 -0
  131. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/event_streaming/types.py +0 -0
  132. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/feature_flags.py +0 -0
  133. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/graph.py +0 -0
  134. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/grpc/__init__.py +0 -0
  135. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/grpc/client.py +0 -0
  136. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/grpc/generated/core_api_pb2.pyi +0 -0
  137. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/grpc/ops/__init__.py +0 -0
  138. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/grpc/ops/assistants.py +0 -0
  139. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/grpc/ops/cache.py +0 -0
  140. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/grpc/ops/crons.py +0 -0
  141. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/grpc/ops/runs.py +0 -0
  142. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/grpc/ops/threads.py +0 -0
  143. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/grpc/server.py +0 -0
  144. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/grpc/servicers/__init__.py +0 -0
  145. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/grpc/servicers/checkpointer.py +0 -0
  146. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/grpc/servicers/encryption.py +0 -0
  147. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/http.py +0 -0
  148. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/http_metrics.py +0 -0
  149. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/http_metrics_utils.py +0 -0
  150. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/js/.gitignore +0 -0
  151. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/js/.prettierrc +0 -0
  152. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/js/.yarnclean +0 -0
  153. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/js/__init__.py +0 -0
  154. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/js/base.py +0 -0
  155. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/js/build.mts +0 -0
  156. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/js/client.http.mts +0 -0
  157. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/js/client.mts +0 -0
  158. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/js/errors.py +0 -0
  159. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/js/global.d.ts +0 -0
  160. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/js/package.json +0 -0
  161. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/js/remote.py +0 -0
  162. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/js/schema.py +0 -0
  163. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/js/src/auth-mutations.mts +0 -0
  164. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/js/src/graph.mts +0 -0
  165. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/js/src/load.hooks.mjs +0 -0
  166. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/js/src/preload.mjs +0 -0
  167. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/js/src/utils/experiment-tracing.mts +0 -0
  168. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/js/src/utils/files.mts +0 -0
  169. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/js/src/utils/importMap.mts +0 -0
  170. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
  171. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/js/src/utils/serde.mts +0 -0
  172. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/js/sse.py +0 -0
  173. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/js/traceblock.mts +0 -0
  174. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/js/tsconfig.json +0 -0
  175. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/js/ui.py +0 -0
  176. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/js/yarn.lock +0 -0
  177. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/lc_security/__init__.py +0 -0
  178. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/lc_security/exceptions.py +0 -0
  179. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/lc_security/policy.py +0 -0
  180. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/lc_security/transport.py +0 -0
  181. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/logging.py +0 -0
  182. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/metadata.py +0 -0
  183. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/metrics_collector.py +0 -0
  184. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/metrics_otlp.py +0 -0
  185. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/middleware/__init__.py +0 -0
  186. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/middleware/ensure_store.py +0 -0
  187. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/middleware/http_logger.py +0 -0
  188. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/middleware/private_network.py +0 -0
  189. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/middleware/request_id.py +0 -0
  190. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/models/__init__.py +0 -0
  191. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/models/run.py +0 -0
  192. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/otel_context.py +0 -0
  193. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/patch.py +0 -0
  194. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/queue_entrypoint.py +0 -0
  195. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/release_tags.py +0 -0
  196. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/route.py +0 -0
  197. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/runner/__init__.py +0 -0
  198. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/runner/__main__.py +0 -0
  199. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/schema.py +0 -0
  200. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/self_hosted_logs.py +0 -0
  201. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/self_hosted_metrics.py +0 -0
  202. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/server.py +0 -0
  203. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/sse.py +0 -0
  204. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/state.py +0 -0
  205. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/store.py +0 -0
  206. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/stream.py +0 -0
  207. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/stream_v2.py +0 -0
  208. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/timing/__init__.py +0 -0
  209. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/timing/profiler.py +0 -0
  210. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/timing/timer.py +0 -0
  211. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/traceblock.py +0 -0
  212. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/tracing_session.py +0 -0
  213. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/tunneling/cloudflare.py +0 -0
  214. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/utils/__init__.py +0 -0
  215. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/utils/cache.py +0 -0
  216. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/utils/config.py +0 -0
  217. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/utils/errors.py +0 -0
  218. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/utils/extract.py +0 -0
  219. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/utils/future.py +0 -0
  220. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/utils/headers.py +0 -0
  221. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/utils/network.py +0 -0
  222. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/utils/retriable_client.py +0 -0
  223. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/utils/stream_codec.py +0 -0
  224. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/utils/uuids.py +0 -0
  225. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/validation.py +0 -0
  226. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/webhook.py +0 -0
  227. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/worker.py +0 -0
  228. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_api/worker_runtime.py +0 -0
  229. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/__init__.py +0 -0
  230. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/checkpointer.py +0 -0
  231. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/conversion/__init__.py +0 -0
  232. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/conversion/_compat.py +0 -0
  233. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/conversion/checkpoint.py +0 -0
  234. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/conversion/config.py +0 -0
  235. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/conversion/durability.py +0 -0
  236. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/conversion/store.py +0 -0
  237. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/conversion/struct.py +0 -0
  238. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/conversion/value.py +0 -0
  239. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/__init__.py +0 -0
  240. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/checkpointer_pb2.py +0 -0
  241. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/checkpointer_pb2.pyi +0 -0
  242. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.py +0 -0
  243. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.pyi +0 -0
  244. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/core_api_pb2.py +0 -0
  245. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/core_api_pb2.pyi +0 -0
  246. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/core_api_pb2_grpc.py +0 -0
  247. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/core_api_pb2_grpc.pyi +0 -0
  248. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/encryption_pb2.py +0 -0
  249. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/encryption_pb2.pyi +0 -0
  250. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/encryption_pb2_grpc.py +0 -0
  251. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/encryption_pb2_grpc.pyi +0 -0
  252. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/engine_common_pb2.py +0 -0
  253. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/engine_common_pb2.pyi +0 -0
  254. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/engine_common_pb2_grpc.py +0 -0
  255. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/engine_common_pb2_grpc.pyi +0 -0
  256. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.py +0 -0
  257. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.pyi +0 -0
  258. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.py +0 -0
  259. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.pyi +0 -0
  260. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_control_signal_pb2.py +0 -0
  261. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_control_signal_pb2.pyi +0 -0
  262. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.py +0 -0
  263. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.pyi +0 -0
  264. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.py +0 -0
  265. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.pyi +0 -0
  266. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.py +0 -0
  267. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.pyi +0 -0
  268. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_durability_pb2.py +0 -0
  269. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_durability_pb2.pyi +0 -0
  270. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.py +0 -0
  271. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.pyi +0 -0
  272. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.py +0 -0
  273. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.pyi +0 -0
  274. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.py +0 -0
  275. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.pyi +0 -0
  276. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_run_status_pb2.py +0 -0
  277. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_run_status_pb2.pyi +0 -0
  278. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.py +0 -0
  279. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.pyi +0 -0
  280. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_stream_mode_pb2.py +0 -0
  281. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_stream_mode_pb2.pyi +0 -0
  282. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.py +0 -0
  283. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.pyi +0 -0
  284. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_thread_status_pb2.py +0 -0
  285. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_thread_status_pb2.pyi +0 -0
  286. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.py +0 -0
  287. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.pyi +0 -0
  288. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.py +0 -0
  289. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.pyi +0 -0
  290. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.py +0 -0
  291. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.pyi +0 -0
  292. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/errors_pb2.py +0 -0
  293. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/errors_pb2.pyi +0 -0
  294. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/errors_pb2_grpc.py +0 -0
  295. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/errors_pb2_grpc.pyi +0 -0
  296. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/runner_pb2.py +0 -0
  297. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/runner_pb2.pyi +0 -0
  298. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/runner_pb2_grpc.py +0 -0
  299. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/runner_pb2_grpc.pyi +0 -0
  300. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/store_pb2.py +0 -0
  301. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/store_pb2.pyi +0 -0
  302. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/store_pb2_grpc.py +0 -0
  303. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/proto/store_pb2_grpc.pyi +0 -0
  304. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/serde.py +0 -0
  305. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_grpc_common/store.py +0 -0
  306. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_license/__init__.py +0 -0
  307. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_license/validation.py +0 -0
  308. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_runtime/__init__.py +0 -0
  309. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_runtime/checkpoint.py +0 -0
  310. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_runtime/database.py +0 -0
  311. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_runtime/lifespan.py +0 -0
  312. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_runtime/metrics.py +0 -0
  313. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_runtime/ops.py +0 -0
  314. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_runtime/queue.py +0 -0
  315. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_runtime/retry.py +0 -0
  316. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_runtime/routes.py +0 -0
  317. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/langgraph_runtime/store.py +0 -0
  318. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/logging.json +0 -0
  319. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/openapi.json +0 -0
  320. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/pyproject.toml +0 -0
  321. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/scripts/build_wheel.py +0 -0
  322. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/scripts/create_license.py +0 -0
  323. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/scripts/run_a2a_tck.py +0 -0
  324. {langgraph_api-0.16.0.dev10 → langgraph_api-0.16.0.dev12}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langgraph-api
3
- Version: 0.16.0.dev10
3
+ Version: 0.16.0.dev12
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 @@ const PAYLOAD_CHANNELS = [
32
32
  const turnDuration = new Trend('turn_duration', true);
33
33
  /** The read path alone: a cold GET /state replays the channel without writing. */
34
34
  const stateReadDuration = new Trend('state_read_duration', true);
35
+ const checkpointSaveDuration = new Trend('checkpoint_save', true);
35
36
  const threadStorageBytes = new Trend('thread_storage_bytes', false);
36
37
 
37
38
  const TURN_CONFIG: Omit<DeltaTurnsOptions, 'graphId'> = {
@@ -85,6 +86,9 @@ export class DeltaTurns extends BenchmarkRunner {
85
86
  input: {},
86
87
  context: { ...benchmarkGraphOptions.context, steps: plan.steps },
87
88
  config: { recursion_limit: plan.steps + 2 },
89
+ // The graph times its own checkpoint save as the gap between its two
90
+ // steps; a background save would overlap the second step and hide in it.
91
+ durability: 'sync',
88
92
  });
89
93
 
90
94
  const startedAt = Date.now();
@@ -95,6 +99,13 @@ export class DeltaTurns extends BenchmarkRunner {
95
99
  );
96
100
  turnDuration.add(Date.now() - startedAt, { depth: plan.depthBucket });
97
101
  addResponse(responses, 'wait', response);
102
+ const saveMs = response.status === 200 ? safeJson(response.body)?.save_ms : null;
103
+ if (typeof saveMs === 'number' && saveMs > 0) {
104
+ // Snapshots land on multiples of the bucket width, so the bucket's last
105
+ // turn is where a snapshot save shows; a percentile over the bucket hides it.
106
+ const rowTurn = plan.steps % TURN_CONFIG.bucketSize === 0 ? '1' : '0';
107
+ checkpointSaveDuration.add(saveMs, { depth: plan.depthBucket, row_turn: rowTurn });
108
+ }
98
109
 
99
110
  let guardFailure: string | null = null;
100
111
  let drift: string | null = null;
@@ -29,7 +29,7 @@ export const HEADLINE = ['control', 'delta_50'];
29
29
  /** Metric key, label, printer. All three are lower-is-better. */
30
30
  const METRICS = [
31
31
  ['readP50Ms', 'read', (v) => (isNumber(v) ? (v / 1000).toFixed(2) : '-')],
32
- ['saveEstMs', 'write', (v) => (isNumber(v) ? (v / 1000).toFixed(2) : '-')],
32
+ ['saveMs', 'write', (v) => (isNumber(v) ? (v / 1000).toFixed(2) : '-')],
33
33
  ['bytes', 'KB', (v) => (isNumber(v) ? String(Math.round(v / 1024)) : '-')],
34
34
  ];
35
35
 
@@ -93,33 +93,30 @@ export function sweepRows(depths, frequencies) {
93
93
  return sorted.filter((d) => wanted.has(bucketEnd(d)));
94
94
  }
95
95
 
96
- /**
97
- * A turn is read + step + save and cannot be split from outside, so the save
98
- * is what is left after the cold read. It still carries the run's fixed
99
- * overhead (queue, worker), which is the same in every cell, so it compares
100
- * across cells and is not an absolute.
101
- */
102
- export function saveEstimate(turnP50Ms, readP50Ms) {
103
- if (!isNumber(turnP50Ms) || !isNumber(readP50Ms)) return null;
104
- return Math.max(0, turnP50Ms - readP50Ms);
105
- }
106
-
107
96
  /** Bytes keep the largest reading in the bucket: the thread only grows. */
108
97
  export function aggregateSamples(points) {
109
98
  const turns = {};
110
99
  const reads = {};
100
+ const saves = {};
101
+ const rowSaves = {};
111
102
  const bytes = {};
112
103
  for (const point of points) {
113
104
  const depth = point.tags?.depth;
114
105
  if (depth == null || !isNumber(point.value)) continue;
115
106
  if (point.metric === 'turn_duration') (turns[depth] ??= []).push(point.value);
116
107
  else if (point.metric === 'state_read_duration') (reads[depth] ??= []).push(point.value);
108
+ else if (point.metric === 'checkpoint_save') {
109
+ (saves[depth] ??= []).push(point.value);
110
+ if (point.tags?.row_turn === '1') (rowSaves[depth] ??= []).push(point.value);
111
+ }
117
112
  else if (point.metric === 'thread_storage_bytes') bytes[depth] = Math.max(bytes[depth] ?? 0, point.value);
118
113
  }
119
114
  const buckets = {};
120
- for (const depth of new Set([...Object.keys(turns), ...Object.keys(reads), ...Object.keys(bytes)])) {
115
+ for (const depth of new Set([...Object.keys(turns), ...Object.keys(reads), ...Object.keys(saves), ...Object.keys(bytes)])) {
121
116
  const sorted = (turns[depth] ?? []).sort((a, b) => a - b);
122
117
  const sortedReads = (reads[depth] ?? []).sort((a, b) => a - b);
118
+ const sortedSaves = (saves[depth] ?? []).sort((a, b) => a - b);
119
+ const sortedRowSaves = (rowSaves[depth] ?? []).sort((a, b) => a - b);
123
120
  const p50Ms = percentile(sorted, 0.5);
124
121
  // One cold read per thread per VERIFY_EVERY turns is few samples, so the median only.
125
122
  const readP50Ms = percentile(sortedReads, 0.5);
@@ -128,7 +125,8 @@ export function aggregateSamples(points) {
128
125
  p50Ms,
129
126
  p95Ms: percentile(sorted, 0.95),
130
127
  readP50Ms,
131
- saveEstMs: saveEstimate(p50Ms, readP50Ms),
128
+ saveMs: percentile(sortedSaves, 0.5),
129
+ rowSaveMs: percentile(sortedRowSaves, 0.5),
132
130
  bytes: bytes[depth] ?? null,
133
131
  };
134
132
  }
@@ -146,7 +144,7 @@ async function readSamples(file) {
146
144
  } catch {
147
145
  continue;
148
146
  }
149
- if (!['turn_duration', 'state_read_duration', 'thread_storage_bytes'].includes(entry.metric)) continue;
147
+ if (!['turn_duration', 'state_read_duration', 'checkpoint_save', 'thread_storage_bytes'].includes(entry.metric)) continue;
150
148
  points.push({ metric: entry.metric, value: entry.data?.value, tags: entry.data?.tags });
151
149
  }
152
150
  return points;
@@ -374,13 +372,18 @@ export function sweepTables(cells) {
374
372
  const depths = sweepRows(sharedDepths(deltas, new Set(deltas.flatMap((c) => Object.keys(c.buckets ?? {})))), deltas.map((c) => c.snapshot));
375
373
  if (depths.length === 0) return [];
376
374
  const w = 10;
377
- const titles = { read: 'read, median seconds', write: 'write, seconds', KB: 'storage, KB at that turn' };
375
+ const titles = { read: 'read, median seconds', write: 'write, median / at the row\'s turn, seconds', KB: 'storage, KB at that turn' };
376
+ const cellText = (b, key, format) => {
377
+ if (!(b?.turns > 0)) return '-';
378
+ if (key === 'saveMs' && isNumber(b.rowSaveMs)) return `${format(b[key])}/${format(b.rowSaveMs)}`;
379
+ return format(b[key]);
380
+ };
378
381
  return METRICS.map(([key, label, format]) => {
379
382
  const lines = [`*${titles[label]}*`, '```'];
380
383
  lines.push(['turn'.padEnd(6), ...deltas.map((c) => `snap ${c.column}`.padStart(w))].join(''));
381
384
  for (const depth of depths) {
382
385
  lines.push(
383
- [depthLabel(depth).padEnd(6), ...deltas.map((c) => (c.buckets?.[depth]?.turns > 0 ? format(c.buckets[depth][key]) : '-').padStart(w))].join('')
386
+ [depthLabel(depth).padEnd(6), ...deltas.map((c) => cellText(c.buckets?.[depth], key, format).padStart(w))].join('')
384
387
  );
385
388
  }
386
389
  lines.push('```');
@@ -392,6 +395,16 @@ function cellName(cell) {
392
395
  return cell.cell === 'control' ? 'non-delta' : `delta/${cell.column}`;
393
396
  }
394
397
 
398
+ /**
399
+ * Cells whose successful runs returned no `save_ms`: the deployed graph predates
400
+ * the save timing. A cell with no successful run is already reported as failed.
401
+ */
402
+ function cellsWithoutSaves(cells) {
403
+ return cells.filter(
404
+ (c) => c.summary?.metrics?.successfulRuns > 0 && !Object.values(c.buckets ?? {}).some((b) => isNumber(b.saveMs))
405
+ );
406
+ }
407
+
395
408
  function anyBytes(cells) {
396
409
  return cells.some((c) => Object.values(c.buckets ?? {}).some((b) => isNumber(b.bytes)));
397
410
  }
@@ -464,6 +477,12 @@ export function buildReport(cells, context = {}) {
464
477
  );
465
478
  lines.push(...headlineTable(cells, changesByCell));
466
479
  lines.push(depthLine(cells, cells.find((c) => c.load?.plateauDuration)?.load.plateauDuration));
480
+ const unsaved = cellsWithoutSaves(cells);
481
+ if (unsaved.length > 0) {
482
+ lines.push(
483
+ `_write reads \`-\` for ${unsaved.map(cellName).join(', ')}: its runs returned no \`save_ms\`, so the deployed benchmark graph predates langgraph-server-benchmarks#22._`
484
+ );
485
+ }
467
486
  if (!anyBytes(cells)) {
468
487
  lines.push('_KB reads `-`: the deployment runs an API without `GET /threads/{id}/storage` yet._');
469
488
  }
@@ -523,7 +542,7 @@ function howToRead(cells) {
523
542
  withLoad ? `• *Load:* ${count(Number(withLoad.load.loadSize))} users, one thread each${held ? `, held ${held}` : ''}, one turn per iteration, no ramp.` : null,
524
543
  '• *Turn:* one `POST /runs/wait` on the thread, which reads the last checkpoint, runs one step and saves a new one. The row label is the thread depth the cold read was taken at.',
525
544
  '• *Read:* a cold `GET /threads/{id}/state` every 50 turns, timed to the server\'s first byte, so sending the state back is not counted. The server rebuilds the value from storage with nothing to write. With delta that is the replay of every diff since the last snapshot.',
526
- '• *Write:* the turn\'s median latency minus the cold read, so what saving one more checkpoint costs. It still includes the fixed cost of queueing and running the one-node step, identical in every cell, so compare columns; it is not a checkpoint-write latency on its own.',
545
+ '• *Write:* the checkpoint save, timed by the worker as the gap between the graph\'s two steps, with saves made synchronous so nothing overlaps it. The sweep also shows the save at the row\'s own turn: snapshots fall on those turns, so at a snapshot row it is the full-value write the median hides.',
527
546
  '• *Storage:* `GET /threads/{id}/storage` every 50 turns, the bytes the thread occupies at that turn.',
528
547
  `• *Regressed / Improved:* read, write or storage at the deepest turn every night reached, outside its own usual range over the last ${MIN_HISTORY_NIGHTS}+ nights.`,
529
548
  `• *Errors:* failed requests by HTTP status. ${ERROR_ATTENTION} or more turn the dot yellow even when the cell passes.`,
@@ -1,6 +1,6 @@
1
1
  import test from 'node:test';
2
2
  import assert from 'node:assert/strict';
3
- import { CELLS, aggregateSamples, buildReport, cellChanges, headlineRows, saveEstimate, sweepRows, sweepTables } from './delta-report.js';
3
+ import { CELLS, aggregateSamples, buildReport, cellChanges, headlineRows, sweepRows, sweepTables } from './delta-report.js';
4
4
 
5
5
  const point = (metric, depth, value) => ({ metric, value, tags: { depth } });
6
6
 
@@ -15,13 +15,8 @@ test('aggregates turn latency, cold read, derived write and end-of-bucket bytes
15
15
  point('state_read_duration', '1-100', 70),
16
16
  point('turn_duration', '101-200', 900),
17
17
  ]);
18
- assert.deepEqual(buckets['1-100'], { turns: 3, p50Ms: 200, p95Ms: 300, readP50Ms: 50, saveEstMs: 150, bytes: 4096 });
19
- assert.deepEqual(buckets['101-200'], { turns: 1, p50Ms: 900, p95Ms: 900, readP50Ms: null, saveEstMs: null, bytes: null });
20
- });
21
-
22
- test('write estimate never goes negative when a cold read is slower than the turn', () => {
23
- assert.equal(saveEstimate(100, 140), 0);
24
- assert.equal(saveEstimate(null, 140), null);
18
+ assert.deepEqual(buckets['1-100'], { turns: 3, p50Ms: 200, p95Ms: 300, readP50Ms: 50, saveMs: null, rowSaveMs: null, bytes: 4096 });
19
+ assert.deepEqual(buckets['101-200'], { turns: 1, p50Ms: 900, p95Ms: 900, readP50Ms: null, saveMs: null, rowSaveMs: null, bytes: null });
25
20
  });
26
21
 
27
22
  const bucket = (readMs, writeMs, bytes) => ({
@@ -29,7 +24,7 @@ const bucket = (readMs, writeMs, bytes) => ({
29
24
  p50Ms: readMs + writeMs,
30
25
  p95Ms: (readMs + writeMs) * 1.5,
31
26
  readP50Ms: readMs,
32
- saveEstMs: writeMs,
27
+ saveMs: writeMs,
33
28
  bytes,
34
29
  });
35
30
 
@@ -140,7 +135,7 @@ test('the sweep keeps the first row, the deepest, and the turn before and at eac
140
135
  test('a night that stops mid-bucket compares at the last turn with a cold read, not the partial one', () => {
141
136
  const past = Array.from({ length: 5 }, () => asHistory(night()));
142
137
  const tonight = night({ delta_50: { readMs: 90 } });
143
- tonight[1].buckets['101-150'] = { turns: 7, p50Ms: 500, p95Ms: 600, readP50Ms: null, saveEstMs: null, bytes: null };
138
+ tonight[1].buckets['101-150'] = { turns: 7, p50Ms: 500, p95Ms: 600, readP50Ms: null, saveMs: null, bytes: null };
144
139
  const { text } = buildReport(tonight, { ...base, history: past });
145
140
  assert.match(text, /^\*Regressed:\* delta\/50 read@turn 100 0\.05 → 0\.11 s \(\+125%\)$/m);
146
141
  assert.match(text, /^100\s+.*0\.11▼/m);
@@ -151,11 +146,11 @@ test('tables stop where the slowest cell stopped, and the depth each cell reache
151
146
  tonight[0].buckets['101-150'] = bucket(50, 400, 122880);
152
147
  tonight[0].buckets['151-200'] = bucket(50, 400, 163840);
153
148
  // delta/50 got nine turns into the next bucket, with no cold read there yet.
154
- tonight[1].buckets['101-150'] = { turns: 9, p50Ms: 450, p95Ms: 600, readP50Ms: null, saveEstMs: null, bytes: null };
149
+ tonight[1].buckets['101-150'] = { turns: 9, p50Ms: 450, p95Ms: 600, readP50Ms: null, saveMs: null, bytes: null };
155
150
  // delta/500's one thread there had its state read fail; only the storage probe answered.
156
- tonight[2].buckets['101-150'] = { turns: 1, p50Ms: 450, p95Ms: 450, readP50Ms: null, saveEstMs: null, bytes: 1024 };
151
+ tonight[2].buckets['101-150'] = { turns: 1, p50Ms: 450, p95Ms: 450, readP50Ms: null, saveMs: null, bytes: 1024 };
157
152
  // delta/1000's first verify turn had its state read fail, with storage answering: a hole, not the end.
158
- tonight[3].buckets['1-50'] = { turns: 500, p50Ms: 450, p95Ms: 600, readP50Ms: null, saveEstMs: null, bytes: 4096 };
153
+ tonight[3].buckets['1-50'] = { turns: 500, p50Ms: 450, p95Ms: 600, readP50Ms: null, saveMs: null, bytes: 4096 };
159
154
  const { text, thread } = buildReport(tonight, base);
160
155
  assert.match(text, /^50\s+/m);
161
156
  assert.match(text, /^100\s+/m);
@@ -167,8 +162,30 @@ test('tables stop where the slowest cell stopped, and the depth each cell reache
167
162
 
168
163
  test('a deepest bucket with turns but no cold read yet is not a row of dashes', () => {
169
164
  const tonight = night();
170
- for (const c of tonight) c.buckets['101-150'] = { turns: 9, p50Ms: 450, p95Ms: 600, readP50Ms: null, saveEstMs: null, bytes: null };
165
+ for (const c of tonight) c.buckets['101-150'] = { turns: 9, p50Ms: 450, p95Ms: 600, readP50Ms: null, saveMs: null, bytes: null };
171
166
  const { text } = buildReport(tonight, base);
172
167
  assert.match(text, /^100\s+/m);
173
168
  assert.doesNotMatch(text, /^150\s+/m);
174
169
  });
170
+
171
+ test('write is the measured save, and the sweep shows the save at the row turn where snapshots land', () => {
172
+ const save = (value, rowTurn) => ({ metric: 'checkpoint_save', value, tags: { depth: '1-50', row_turn: rowTurn } });
173
+ const buckets = aggregateSamples([save(20, '0'), save(30, '0'), save(25, '0'), save(900, '1'), save(1100, '1')]);
174
+ assert.equal(buckets['1-50'].saveMs, 30);
175
+ assert.equal(buckets['1-50'].rowSaveMs, 900);
176
+ const tonight = night();
177
+ for (const c of tonight) c.buckets['1-50'] = { ...c.buckets['1-50'], saveMs: 30, rowSaveMs: 900 };
178
+ const [, write] = sweepTables(tonight).map((t) => t.split('\n'));
179
+ assert.match(write[0], /^\*write, median \/ at the row's turn, seconds\*/);
180
+ assert.match(write[3], /^50\s+0\.03\/0\.90\s+0\.03\/0\.90\s+0\.03\/0\.90$/);
181
+ });
182
+
183
+ test('a cell whose runs returned no save_ms says why write is blank', () => {
184
+ const tonight = night();
185
+ for (const b of Object.values(tonight[1].buckets)) b.saveMs = null;
186
+ const { text } = buildReport(tonight, base);
187
+ assert.match(text, /^_write reads `-` for delta\/50: its runs returned no `save_ms`/m);
188
+ assert.doesNotMatch(buildReport(night(), base).text, /returned no `save_ms`/);
189
+ tonight[1].summary.metrics.successfulRuns = 0;
190
+ assert.doesNotMatch(buildReport(tonight, base).text, /returned no `save_ms`/);
191
+ });
@@ -0,0 +1 @@
1
+ __version__ = "0.16.0.dev12"