langgraph-api 0.7.99__tar.gz → 0.7.101__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.99 → langgraph_api-0.7.101}/PKG-INFO +6 -4
  2. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/continuous/pyproject.toml +1 -1
  3. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/continuous/uv.lock +4 -4
  4. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/constraints.txt +2 -2
  5. langgraph_api-0.7.101/langgraph_api/__init__.py +1 -0
  6. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/api/a2a.py +1 -1
  7. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/config/__init__.py +6 -1
  8. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/executor_entrypoint.py +1 -1
  9. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/graph.py +22 -5
  10. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/js/package.json +2 -2
  11. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/js/yarn.lock +16 -76
  12. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/logging.py +7 -2
  13. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/metrics_datadog.py +4 -0
  14. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/otel_context.py +41 -14
  15. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/queue_entrypoint.py +1 -1
  16. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/checkpointer.py +2 -1
  17. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/conversion/_compat.py +4 -2
  18. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/conversion/config.py +1 -1
  19. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/conversion/messages.py +1 -1
  20. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/pyproject.toml +5 -3
  21. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/uv.lock +402 -318
  22. langgraph_api-0.7.99/langgraph_api/__init__.py +0 -1
  23. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/.gitignore +0 -0
  24. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/LICENSE +0 -0
  25. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/Makefile +0 -0
  26. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/README.md +0 -0
  27. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/.gitignore +0 -0
  28. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/Makefile +0 -0
  29. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/README.md +0 -0
  30. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/benchmark-runners/assistant.ts +0 -0
  31. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/benchmark-runners/benchmark-runner.ts +0 -0
  32. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/benchmark-runners/benchmark_profiles.ts +0 -0
  33. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/benchmark-runners/benchmarks.ts +0 -0
  34. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/benchmark-runners/cancel_first_second_completes.ts +0 -0
  35. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/benchmark-runners/enqueued_runs_order.ts +0 -0
  36. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/benchmark-runners/log-failure.ts +0 -0
  37. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/benchmark-runners/meta_workload.ts +0 -0
  38. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/benchmark-runners/stream_write.ts +0 -0
  39. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/benchmark-runners/thread.ts +0 -0
  40. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/benchmark-runners/thread_runs_metadata_search.ts +0 -0
  41. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/benchmark-runners/threads_search_metadata.ts +0 -0
  42. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/benchmark-runners/types.ts +0 -0
  43. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/benchmark-runners/wait_write.ts +0 -0
  44. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/capacity_dd_report.py +0 -0
  45. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/capacity_k6.js +0 -0
  46. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/capacity_runner.mjs +0 -0
  47. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/capacity_slack_report.py +0 -0
  48. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/capacity_urls.mjs +0 -0
  49. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/clean-cli.js +0 -0
  50. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/clean.js +0 -0
  51. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/continuous/README.md +0 -0
  52. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/continuous/runner.py +0 -0
  53. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/graphs.js +0 -0
  54. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/mixed_workload_k6.js +0 -0
  55. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/mixed_workload_runner.mjs +0 -0
  56. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/package.json +0 -0
  57. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/ramp.js +0 -0
  58. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/reporting/dd_reporting.py +0 -0
  59. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/reporting/slack_slowest_runs.py +0 -0
  60. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/reporting/slack_summary.py +0 -0
  61. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/run_local.sh +0 -0
  62. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/staircase.py +0 -0
  63. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/staircase_step_k6.js +0 -0
  64. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/tsconfig.json +0 -0
  65. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/update-revision.js +0 -0
  66. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/benchmark/weather.js +0 -0
  67. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/custom_store.sql +0 -0
  68. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/forbidden.txt +0 -0
  69. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/hatch_build.py +0 -0
  70. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/healthcheck.py +0 -0
  71. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph-cloud-debugging-20260210132856.zip +0 -0
  72. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/_checkpointer/__init__.py +0 -0
  73. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/_checkpointer/_adapter.py +0 -0
  74. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/_checkpointer/protocol.py +0 -0
  75. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/_factory_utils.py +0 -0
  76. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/api/__init__.py +0 -0
  77. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/api/assistants.py +0 -0
  78. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/api/mcp/__init__.py +0 -0
  79. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/api/mcp/_constants.py +0 -0
  80. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/api/mcp/_handlers.py +0 -0
  81. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/api/mcp/_models.py +0 -0
  82. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/api/mcp/_routes.py +0 -0
  83. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/api/mcp/_sanitizers.py +0 -0
  84. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/api/meta.py +0 -0
  85. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/api/openapi.py +0 -0
  86. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/api/profile.py +0 -0
  87. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/api/runs.py +0 -0
  88. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/api/store.py +0 -0
  89. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/api/threads.py +0 -0
  90. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/api/ui.py +0 -0
  91. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/asgi_transport.py +0 -0
  92. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/asyncio.py +0 -0
  93. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/auth/__init__.py +0 -0
  94. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/auth/custom.py +0 -0
  95. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/auth/errors.py +0 -0
  96. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/auth/langsmith/__init__.py +0 -0
  97. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/auth/langsmith/backend.py +0 -0
  98. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/auth/langsmith/client.py +0 -0
  99. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/auth/middleware.py +0 -0
  100. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/auth/noop.py +0 -0
  101. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/auth/studio_user.py +0 -0
  102. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/cache.py +0 -0
  103. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/cli.py +0 -0
  104. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/command.py +0 -0
  105. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/config/_parse.py +0 -0
  106. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/config/schemas.py +0 -0
  107. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/cron_scheduler.py +0 -0
  108. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/encryption/__init__.py +0 -0
  109. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/encryption/aes_json.py +0 -0
  110. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/encryption/context.py +0 -0
  111. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/encryption/custom.py +0 -0
  112. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/encryption/middleware.py +0 -0
  113. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/encryption/shared.py +0 -0
  114. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/errors.py +0 -0
  115. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/feature_flags.py +0 -0
  116. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/grpc/__init__.py +0 -0
  117. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/grpc/client.py +0 -0
  118. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/grpc/generated/core_api_pb2.pyi +0 -0
  119. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/grpc/ops/__init__.py +0 -0
  120. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/grpc/ops/assistants.py +0 -0
  121. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/grpc/ops/cache.py +0 -0
  122. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/grpc/ops/crons.py +0 -0
  123. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/grpc/ops/runs.py +0 -0
  124. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/grpc/ops/threads.py +0 -0
  125. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/grpc/server.py +0 -0
  126. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/grpc/servicers/__init__.py +0 -0
  127. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/grpc/servicers/checkpointer.py +0 -0
  128. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/grpc/servicers/encryption.py +0 -0
  129. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/http.py +0 -0
  130. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/http_metrics.py +0 -0
  131. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/http_metrics_utils.py +0 -0
  132. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/js/.gitignore +0 -0
  133. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/js/.prettierrc +0 -0
  134. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/js/__init__.py +0 -0
  135. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/js/base.py +0 -0
  136. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/js/build.mts +0 -0
  137. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/js/client.http.mts +0 -0
  138. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/js/client.mts +0 -0
  139. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/js/errors.py +0 -0
  140. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/js/global.d.ts +0 -0
  141. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/js/remote.py +0 -0
  142. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/js/schema.py +0 -0
  143. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/js/src/graph.mts +0 -0
  144. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/js/src/load.hooks.mjs +0 -0
  145. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/js/src/preload.mjs +0 -0
  146. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/js/src/utils/files.mts +0 -0
  147. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/js/src/utils/importMap.mts +0 -0
  148. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
  149. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/js/src/utils/serde.mts +0 -0
  150. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/js/sse.py +0 -0
  151. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/js/traceblock.mts +0 -0
  152. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/js/tsconfig.json +0 -0
  153. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/js/ui.py +0 -0
  154. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/metadata.py +0 -0
  155. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/middleware/__init__.py +0 -0
  156. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/middleware/ensure_store.py +0 -0
  157. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/middleware/http_logger.py +0 -0
  158. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/middleware/private_network.py +0 -0
  159. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/middleware/request_id.py +0 -0
  160. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/models/__init__.py +0 -0
  161. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/models/run.py +0 -0
  162. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/patch.py +0 -0
  163. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/route.py +0 -0
  164. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/schema.py +0 -0
  165. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/self_hosted_logs.py +0 -0
  166. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/self_hosted_metrics.py +0 -0
  167. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/serde.py +0 -0
  168. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/server.py +0 -0
  169. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/sse.py +0 -0
  170. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/state.py +0 -0
  171. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/store.py +0 -0
  172. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/stream.py +0 -0
  173. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/timing/__init__.py +0 -0
  174. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/timing/profiler.py +0 -0
  175. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/timing/timer.py +0 -0
  176. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/traceblock.py +0 -0
  177. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/tunneling/cloudflare.py +0 -0
  178. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/utils/__init__.py +0 -0
  179. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/utils/cache.py +0 -0
  180. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/utils/config.py +0 -0
  181. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/utils/errors.py +0 -0
  182. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/utils/extract.py +0 -0
  183. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/utils/future.py +0 -0
  184. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/utils/headers.py +0 -0
  185. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/utils/network.py +0 -0
  186. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/utils/retriable_client.py +0 -0
  187. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/utils/stream_codec.py +0 -0
  188. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/utils/uuids.py +0 -0
  189. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/validation.py +0 -0
  190. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/webhook.py +0 -0
  191. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_api/worker.py +0 -0
  192. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/__init__.py +0 -0
  193. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/conversion/__init__.py +0 -0
  194. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/conversion/channel.py +0 -0
  195. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/conversion/checkpoint.py +0 -0
  196. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/conversion/durability.py +0 -0
  197. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/conversion/exception.py +0 -0
  198. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/conversion/graph.py +0 -0
  199. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/conversion/interrupt.py +0 -0
  200. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/conversion/orchestrator_response.py +0 -0
  201. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/conversion/runopts.py +0 -0
  202. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/conversion/stream_mode.py +0 -0
  203. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/conversion/struct.py +0 -0
  204. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/conversion/task.py +0 -0
  205. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/conversion/value.py +0 -0
  206. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/__init__.py +0 -0
  207. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/checkpointer_pb2.py +0 -0
  208. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/checkpointer_pb2.pyi +0 -0
  209. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.py +0 -0
  210. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.pyi +0 -0
  211. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/core_api_pb2.py +0 -0
  212. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/core_api_pb2.pyi +0 -0
  213. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/core_api_pb2_grpc.py +0 -0
  214. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/core_api_pb2_grpc.pyi +0 -0
  215. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/encryption_pb2.py +0 -0
  216. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/encryption_pb2.pyi +0 -0
  217. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/encryption_pb2_grpc.py +0 -0
  218. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/encryption_pb2_grpc.pyi +0 -0
  219. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/engine_api_pb2.py +0 -0
  220. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/engine_api_pb2.pyi +0 -0
  221. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/engine_api_pb2_grpc.py +0 -0
  222. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/engine_api_pb2_grpc.pyi +0 -0
  223. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/engine_common_pb2.py +0 -0
  224. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/engine_common_pb2.pyi +0 -0
  225. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/engine_common_pb2_grpc.py +0 -0
  226. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/engine_common_pb2_grpc.pyi +0 -0
  227. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.py +0 -0
  228. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.pyi +0 -0
  229. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.py +0 -0
  230. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.pyi +0 -0
  231. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_control_signal_pb2.py +0 -0
  232. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_control_signal_pb2.pyi +0 -0
  233. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.py +0 -0
  234. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.pyi +0 -0
  235. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.py +0 -0
  236. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.pyi +0 -0
  237. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.py +0 -0
  238. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.pyi +0 -0
  239. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_durability_pb2.py +0 -0
  240. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_durability_pb2.pyi +0 -0
  241. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.py +0 -0
  242. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.pyi +0 -0
  243. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.py +0 -0
  244. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.pyi +0 -0
  245. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.py +0 -0
  246. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.pyi +0 -0
  247. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_run_status_pb2.py +0 -0
  248. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_run_status_pb2.pyi +0 -0
  249. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.py +0 -0
  250. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.pyi +0 -0
  251. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2.py +0 -0
  252. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2.pyi +0 -0
  253. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2_grpc.py +0 -0
  254. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2_grpc.pyi +0 -0
  255. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_stream_mode_pb2.py +0 -0
  256. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_stream_mode_pb2.pyi +0 -0
  257. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.py +0 -0
  258. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.pyi +0 -0
  259. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_thread_status_pb2.py +0 -0
  260. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_thread_status_pb2.pyi +0 -0
  261. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.py +0 -0
  262. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.pyi +0 -0
  263. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.py +0 -0
  264. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.pyi +0 -0
  265. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.py +0 -0
  266. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.pyi +0 -0
  267. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/errors_pb2.py +0 -0
  268. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/errors_pb2.pyi +0 -0
  269. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/errors_pb2_grpc.py +0 -0
  270. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/errors_pb2_grpc.pyi +0 -0
  271. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/executor_api_pb2.py +0 -0
  272. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/executor_api_pb2.pyi +0 -0
  273. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/executor_api_pb2_grpc.py +0 -0
  274. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/proto/executor_api_pb2_grpc.pyi +0 -0
  275. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/sanitize.py +0 -0
  276. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_grpc_common/serde.py +0 -0
  277. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_license/__init__.py +0 -0
  278. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_license/validation.py +0 -0
  279. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_runtime/__init__.py +0 -0
  280. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_runtime/checkpoint.py +0 -0
  281. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_runtime/database.py +0 -0
  282. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_runtime/lifespan.py +0 -0
  283. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_runtime/metrics.py +0 -0
  284. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_runtime/ops.py +0 -0
  285. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_runtime/queue.py +0 -0
  286. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_runtime/retry.py +0 -0
  287. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_runtime/routes.py +0 -0
  288. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/langgraph_runtime/store.py +0 -0
  289. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/logging.json +0 -0
  290. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/openapi.json +0 -0
  291. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/scripts/build_wheel.py +0 -0
  292. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/scripts/create_license.py +0 -0
  293. {langgraph_api-0.7.99 → langgraph_api-0.7.101}/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.99
3
+ Version: 0.7.101
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
@@ -10,6 +10,7 @@ Requires-Dist: cryptography<47.0,>=42.0.0
10
10
  Requires-Dist: grpcio-health-checking<1.79.0,>=1.78.0
11
11
  Requires-Dist: grpcio-tools==1.78.0
12
12
  Requires-Dist: grpcio<1.79.0,>=1.78.0
13
+ Requires-Dist: httptools>=0.5.0; platform_system != 'Windows'
13
14
  Requires-Dist: httpx>=0.25.0
14
15
  Requires-Dist: jsonschema-rs<0.45,>=0.20.0
15
16
  Requires-Dist: langchain-core>=0.3.64
@@ -18,9 +19,9 @@ Requires-Dist: langgraph-runtime-inmem<0.28.0,>=0.27.0
18
19
  Requires-Dist: langgraph-sdk>=0.3.5
19
20
  Requires-Dist: langgraph<2,>=0.4.10
20
21
  Requires-Dist: langsmith[otel]>=0.6.3
21
- Requires-Dist: opentelemetry-api>=1.37.0
22
- Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.37.0
23
- Requires-Dist: opentelemetry-sdk>=1.37.0
22
+ Requires-Dist: opentelemetry-api>=0.0.1
23
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http>=0.0.1
24
+ Requires-Dist: opentelemetry-sdk>=0.0.1
24
25
  Requires-Dist: orjson>=3.9.7
25
26
  Requires-Dist: protobuf<7.0.0,>=6.32.1
26
27
  Requires-Dist: pyjwt>=2.9.0
@@ -31,6 +32,7 @@ Requires-Dist: tenacity>=8.0.0
31
32
  Requires-Dist: truststore>=0.1
32
33
  Requires-Dist: uuid-utils>=0.12.0
33
34
  Requires-Dist: uvicorn>=0.26.0
35
+ Requires-Dist: uvloop>=0.18.0; platform_system != 'Windows'
34
36
  Requires-Dist: watchfiles>=0.13
35
37
  Requires-Dist: zstandard>=0.23.0
36
38
  Description-Content-Type: text/markdown
@@ -5,7 +5,7 @@ description = "Continuous stress test for Agent Server"
5
5
  requires-python = ">=3.13"
6
6
  dependencies = [
7
7
  "langgraph-sdk>=0.2.10",
8
- "click>=8.0.0",
8
+ "click>=8.3.2",
9
9
  "structlog>=24.1.0",
10
10
  "datadog-api-client>=2.0.0",
11
11
  "python-dateutil>=2.8.0",
@@ -25,14 +25,14 @@ wheels = [
25
25
 
26
26
  [[package]]
27
27
  name = "click"
28
- version = "8.3.1"
28
+ version = "8.3.2"
29
29
  source = { registry = "https://pypi.org/simple" }
30
30
  dependencies = [
31
31
  { name = "colorama", marker = "sys_platform == 'win32'" },
32
32
  ]
33
- sdist = { url = "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065, upload-time = "2025-11-15T20:45:42.706Z" }
33
+ sdist = { url = "https://files.pythonhosted.org/packages/57/75/31212c6bf2503fdf920d87fee5d7a86a2e3bcf444984126f13d8e4016804/click-8.3.2.tar.gz", hash = "sha256:14162b8b3b3550a7d479eafa77dfd3c38d9dc8951f6f69c78913a8f9a7540fd5", size = 302856, upload-time = "2026-04-03T19:14:45.118Z" }
34
34
  wheels = [
35
- { url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274, upload-time = "2025-11-15T20:45:41.139Z" },
35
+ { url = "https://files.pythonhosted.org/packages/e4/20/71885d8b97d4f3dde17b1fdb92dbd4908b00541c5a3379787137285f602e/click-8.3.2-py3-none-any.whl", hash = "sha256:1924d2c27c5653561cd2cae4548d1406039cb79b858b747cfea24924bbc1616d", size = 108379, upload-time = "2026-04-03T19:14:43.505Z" },
36
36
  ]
37
37
 
38
38
  [[package]]
@@ -120,7 +120,7 @@ dependencies = [
120
120
 
121
121
  [package.metadata]
122
122
  requires-dist = [
123
- { name = "click", specifier = ">=8.0.0" },
123
+ { name = "click", specifier = ">=8.3.2" },
124
124
  { name = "datadog-api-client", specifier = ">=2.0.0" },
125
125
  { name = "httpx", specifier = ">=0.27.0" },
126
126
  { name = "langgraph-sdk", specifier = ">=0.2.10" },
@@ -1,4 +1,4 @@
1
- # When editing this file, also update docs pages:
1
+ # When editing this file, the following docs pages should be updated by the sync-constraints workflow:
2
2
  # https://github.com/langchain-ai/docs/blob/main/src/langsmith/setup-app-requirements-txt.mdx
3
3
  # https://github.com/langchain-ai/docs/blob/main/src/langsmith/setup-pyproject.mdx
4
4
  langgraph>=0.4.10,<2
@@ -10,7 +10,7 @@ orjson>=3.9.7
10
10
  httpx>=0.25.0
11
11
  tenacity>=8.0.0
12
12
  uvicorn>=0.26.0
13
- sse-starlette>=2.1.0,<3.4.0
13
+ sse-starlette>=2.1.3,<3.4.0
14
14
  uvloop>=0.18.0
15
15
  httptools>=0.5.0
16
16
  jsonschema-rs>=0.20.0
@@ -0,0 +1 @@
1
+ __version__ = "0.7.101"
@@ -2032,7 +2032,7 @@ async def generate_agent_card(request: ApiRequest, assistant_id: str) -> dict[st
2032
2032
  ):
2033
2033
  base_url = f"{scheme}://{host}:{port}{path}"
2034
2034
  else:
2035
- base_url = f"{scheme}://{host}"
2035
+ base_url = f"{scheme}://{host}{path}"
2036
2036
  agent_path = f"/a2a/{assistant_id}"
2037
2037
 
2038
2038
  agent_url = f"{base_url}{agent_path}"
@@ -523,7 +523,12 @@ LSD_DD_ENDPOINT = _first_non_empty(
523
523
  # Not in public docs: infrastructure, set by platform
524
524
  METRIC_PREFIX = env("METRIC_PREFIX", cast=str, default="lg_api_")
525
525
  # Not in public docs: infrastructure, set by platform
526
- METRIC_MAX_EMITTING_TIER = env("METRIC_MAX_EMITTING_TIER", cast=int, default=2)
526
+ _METRIC_MAX_EMITTING_TIER_DEFAULT = (
527
+ 1 if os.environ.get("LSD_DEPLOYMENT_TYPE", "") in ("dev", "dev_free") else 2
528
+ )
529
+ METRIC_MAX_EMITTING_TIER = env(
530
+ "METRIC_MAX_EMITTING_TIER", cast=int, default=_METRIC_MAX_EMITTING_TIER_DEFAULT
531
+ )
527
532
  DATADOG_METRICS_ENABLED = bool(LSD_DD_API_KEY)
528
533
  LANGGRAPH_LOGS_ENDPOINT = env("LANGGRAPH_LOGS_ENDPOINT", cast=str, default=None)
529
534
  LANGGRAPH_LOGS_ENABLED = env("LANGGRAPH_LOGS_ENABLED", cast=bool, default=False)
@@ -12,7 +12,7 @@ async def main(grpc_port: int = 50051):
12
12
  loaded_config = json.load(file)
13
13
  logging.config.dictConfig(loaded_config)
14
14
  try:
15
- import uvloop # type: ignore[unresolved-import] # noqa: PLC0415
15
+ import uvloop # noqa: PLC0415
16
16
 
17
17
  uvloop.install()
18
18
  except ImportError:
@@ -260,6 +260,9 @@ def restore_dd_trace_context(
260
260
  if ddtracer is None or not headers:
261
261
  yield
262
262
  return
263
+
264
+ # Setup the ddtrace span for the worker.run_graph span
265
+ span = None
263
266
  try:
264
267
  from ddtrace.propagation.http import ( # type: ignore[unresolved-import] # noqa: PLC0415
265
268
  HTTPPropagator,
@@ -274,13 +277,27 @@ def restore_dd_trace_context(
274
277
  span.set_tag("run_id", run_id)
275
278
  if thread_id:
276
279
  span.set_tag("thread_id", thread_id)
277
- try:
278
- yield
279
- finally:
280
- span.finish()
281
280
  except Exception:
282
281
  logger.debug("Failed to restore ddtrace context", exc_info=True)
283
- yield # Tracing must never interfere with application logic
282
+ if span is not None:
283
+ try:
284
+ span.finish()
285
+ except Exception:
286
+ logger.warning("Failed to finish ddtrace context span", exc_info=True)
287
+ # Tracing setup failures must never interfere with application logic
288
+ yield
289
+ return
290
+
291
+ # Yield to the caller, ensuring the span is finished even if an exception is raised.
292
+ try:
293
+ yield
294
+ finally:
295
+ if span is not None:
296
+ try:
297
+ span.finish()
298
+ except Exception:
299
+ logger.warning("Failed to finish ddtrace context span", exc_info=True)
300
+ # Tracing failures must never interfere with application logic
284
301
 
285
302
 
286
303
  @asynccontextmanager
@@ -7,7 +7,7 @@
7
7
  "format": "prettier --write ."
8
8
  },
9
9
  "dependencies": {
10
- "@hono/node-server": "^1.19.12",
10
+ "@hono/node-server": "^1.19.13",
11
11
  "@hono/zod-validator": "^0.7.6",
12
12
  "@langchain/core": "^1.1.38",
13
13
  "@langchain/langgraph": "^1.2.6",
@@ -19,7 +19,7 @@
19
19
  "dedent": "^1.7.2",
20
20
  "esbuild": "^0.27.4",
21
21
  "exit-hook": "^5.1.0",
22
- "hono": "^4.12.9",
22
+ "hono": "^4.12.12",
23
23
  "p-queue": "^9.0.1",
24
24
  "p-retry": "^7.1.1",
25
25
  "tsx": "^4.21.0",
@@ -327,10 +327,10 @@
327
327
  resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.27.4.tgz#1f7ba71a3d6155d44a6faa8dbe249c62ab3e408c"
328
328
  integrity sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==
329
329
 
330
- "@hono/node-server@^1.12.0", "@hono/node-server@^1.19.12":
331
- version "1.19.12"
332
- resolved "https://registry.yarnpkg.com/@hono/node-server/-/node-server-1.19.12.tgz#dae075247959b6d7d2dba4c8bdc8c452ca0c7b40"
333
- integrity sha512-txsUW4SQ1iilgE0l9/e9VQWmELXifEFvmdA1j6WFh/aFPj99hIntrSsq/if0UWyGVkmrRPKA1wCeP+UCr1B9Uw==
330
+ "@hono/node-server@^1.12.0", "@hono/node-server@^1.19.13":
331
+ version "1.19.13"
332
+ resolved "https://registry.yarnpkg.com/@hono/node-server/-/node-server-1.19.13.tgz#4838c766a1237253d4dde3281cf7d5c65186fd32"
333
+ integrity sha512-TsQLe4i2gvoTtrHje625ngThGBySOgSK3Xo2XRYOdqGN1teR8+I7vchQC46uLJi8OF62YTYA3AhSpumtkhsaKQ==
334
334
 
335
335
  "@hono/zod-validator@^0.7.6":
336
336
  version "0.7.6"
@@ -773,11 +773,6 @@
773
773
  resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c"
774
774
  integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==
775
775
 
776
- "@types/uuid@^10.0.0":
777
- version "10.0.0"
778
- resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-10.0.0.tgz#e9c07fe50da0f53dc24970cca94d619ff03f6f6d"
779
- integrity sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==
780
-
781
776
  "@typescript/vfs@^1.6.0", "@typescript/vfs@^1.6.4":
782
777
  version "1.6.4"
783
778
  resolved "https://registry.yarnpkg.com/@typescript/vfs/-/vfs-1.6.4.tgz#7543a3bd961727eb51c8bdafc3ed5e0fb5f56dff"
@@ -845,13 +840,6 @@
845
840
  convert-source-map "^2.0.0"
846
841
  tinyrainbow "^3.1.0"
847
842
 
848
- ansi-styles@^4.1.0:
849
- version "4.3.0"
850
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
851
- integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
852
- dependencies:
853
- color-convert "^2.0.1"
854
-
855
843
  ansi-styles@^5.0.0:
856
844
  version "5.2.0"
857
845
  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b"
@@ -921,21 +909,6 @@ chai@^6.2.2:
921
909
  resolved "https://registry.yarnpkg.com/chai/-/chai-6.2.2.tgz#ae41b52c9aca87734505362717f3255facda360e"
922
910
  integrity sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==
923
911
 
924
- chalk@^4.1.2:
925
- version "4.1.2"
926
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
927
- integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
928
- dependencies:
929
- ansi-styles "^4.1.0"
930
- supports-color "^7.1.0"
931
-
932
- color-convert@^2.0.1:
933
- version "2.0.1"
934
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
935
- integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
936
- dependencies:
937
- color-name "~1.1.4"
938
-
939
912
  color-convert@^3.1.3:
940
913
  version "3.1.3"
941
914
  resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-3.1.3.tgz#db6627b97181cb8facdfce755ae26f97ab0711f1"
@@ -948,11 +921,6 @@ color-name@^2.0.0:
948
921
  resolved "https://registry.yarnpkg.com/color-name/-/color-name-2.1.0.tgz#0b677385c1c4b4edfdeaf77e38fa338e3a40b693"
949
922
  integrity sha512-1bPaDNFm0axzE4MEAzKPuqKWeRaT43U/hyxKPBdqTfmPF+d6n7FSoTFxLVULUJOmiLp01KjhIPPH+HrXZJN4Rg==
950
923
 
951
- color-name@~1.1.4:
952
- version "1.1.4"
953
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
954
- integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
955
-
956
924
  color-string@^2.1.3:
957
925
  version "2.1.4"
958
926
  resolved "https://registry.yarnpkg.com/color-string/-/color-string-2.1.4.tgz#9dcf566ff976e23368c8bd673f5c35103ab41058"
@@ -978,13 +946,6 @@ commander@^13.0.0:
978
946
  resolved "https://registry.yarnpkg.com/commander/-/commander-13.1.0.tgz#776167db68c78f38dcce1f9b8d7b8b9a488abf46"
979
947
  integrity sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==
980
948
 
981
- console-table-printer@^2.12.1:
982
- version "2.15.0"
983
- resolved "https://registry.yarnpkg.com/console-table-printer/-/console-table-printer-2.15.0.tgz#5c808204640b8f024d545bde8aabe5d344dfadc1"
984
- integrity sha512-SrhBq4hYVjLCkBVOWaTzceJalvn5K1Zq5aQA6wXC/cYjI3frKWNPEMK3sZsJfNNQApvCQmgBcc13ZKmFj8qExw==
985
- dependencies:
986
- simple-wcswidth "^1.1.2"
987
-
988
949
  convert-source-map@^2.0.0:
989
950
  version "2.0.0"
990
951
  resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
@@ -1230,15 +1191,10 @@ graceful-fs@^4.2.4:
1230
1191
  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
1231
1192
  integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
1232
1193
 
1233
- has-flag@^4.0.0:
1234
- version "4.0.0"
1235
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
1236
- integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
1237
-
1238
- hono@^4.12.9, hono@^4.5.4:
1239
- version "4.12.9"
1240
- resolved "https://registry.yarnpkg.com/hono/-/hono-4.12.9.tgz#7cd59dec4abf02022f5baad87f6413a04081144c"
1241
- integrity sha512-wy3T8Zm2bsEvxKZM5w21VdHDDcwVS1yUFFY6i8UobSsKfFceT7TOwhbhfKsDyx7tYQlmRM5FLpIuYvNFyjctiA==
1194
+ hono@^4.12.12, hono@^4.5.4:
1195
+ version "4.12.12"
1196
+ resolved "https://registry.yarnpkg.com/hono/-/hono-4.12.12.tgz#1f14b0ffb47c386ff50d457d66e706d9c9a7f09c"
1197
+ integrity sha512-p1JfQMKaceuCbpJKAPKVqyqviZdS0eUxH9v82oWo1kb9xjQ5wA6iP3FNVAPDFlz5/p7d45lO+BpSk1tuSZMF4Q==
1242
1198
 
1243
1199
  icss-utils@^5.0.0, icss-utils@^5.1.0:
1244
1200
  version "5.1.0"
@@ -1312,16 +1268,12 @@ kuler@^2.0.0:
1312
1268
  integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==
1313
1269
 
1314
1270
  "langsmith@>=0.3.33 <1.0.0", langsmith@>=0.4.6, "langsmith@>=0.5.0 <1.0.0":
1315
- version "0.5.4"
1316
- resolved "https://registry.yarnpkg.com/langsmith/-/langsmith-0.5.4.tgz#f75b82b08e30db72a7d1d595b341e9666bd525e5"
1317
- integrity sha512-qYkNIoKpf0ZYt+cYzrDV+XI3FCexApmZmp8EMs3eDTMv0OvrHMLoxJ9IpkeoXJSX24+GPk0/jXjKx2hWerpy9w==
1271
+ version "0.5.18"
1272
+ resolved "https://registry.yarnpkg.com/langsmith/-/langsmith-0.5.18.tgz#c691ad23614f0b46eaf07d982e0ac988e1f43880"
1273
+ integrity sha512-3zuZUWffTHQ+73EAwnodADtf534VNEZUpXr9jC12qyG8/IQuJET7PRsCpTb9wX2lmBspakwLUpqpj3tNm/0bVA==
1318
1274
  dependencies:
1319
- "@types/uuid" "^10.0.0"
1320
- chalk "^4.1.2"
1321
- console-table-printer "^2.12.1"
1322
- p-queue "^6.6.2"
1323
- semver "^7.6.3"
1324
- uuid "^10.0.0"
1275
+ p-queue "6.6.2"
1276
+ uuid "10.0.0"
1325
1277
 
1326
1278
  lightningcss-android-arm64@1.30.2:
1327
1279
  version "1.30.2"
@@ -1473,7 +1425,7 @@ p-finally@^1.0.0:
1473
1425
  resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
1474
1426
  integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==
1475
1427
 
1476
- p-queue@^6.6.2:
1428
+ p-queue@6.6.2, p-queue@^6.6.2:
1477
1429
  version "6.6.2"
1478
1430
  resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426"
1479
1431
  integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==
@@ -1660,7 +1612,7 @@ safe-stable-stringify@^2.3.1:
1660
1612
  resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd"
1661
1613
  integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==
1662
1614
 
1663
- semver@^7.6.3, semver@^7.7.1:
1615
+ semver@^7.7.1:
1664
1616
  version "7.7.4"
1665
1617
  resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a"
1666
1618
  integrity sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==
@@ -1670,11 +1622,6 @@ siginfo@^2.0.0:
1670
1622
  resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30"
1671
1623
  integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==
1672
1624
 
1673
- simple-wcswidth@^1.1.2:
1674
- version "1.1.2"
1675
- resolved "https://registry.yarnpkg.com/simple-wcswidth/-/simple-wcswidth-1.1.2.tgz#66722f37629d5203f9b47c5477b1225b85d6525b"
1676
- integrity sha512-j7piyCjAeTDSjzTSQ7DokZtMNwNlEAyxqSZeCS+CXH7fJ4jx3FuJ/mTW3mE+6JLs4VJBbcll0Kjn+KXI5t21Iw==
1677
-
1678
1625
  source-map-js@^1.2.1:
1679
1626
  version "1.2.1"
1680
1627
  resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
@@ -1721,13 +1668,6 @@ superjson@^2.2.2:
1721
1668
  dependencies:
1722
1669
  copy-anything "^4"
1723
1670
 
1724
- supports-color@^7.1.0:
1725
- version "7.2.0"
1726
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
1727
- integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
1728
- dependencies:
1729
- has-flag "^4.0.0"
1730
-
1731
1671
  tailwindcss@4.1.18:
1732
1672
  version "4.1.18"
1733
1673
  resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-4.1.18.tgz#f488ba47853abdb5354daf9679d3e7791fc4f4e3"
@@ -1819,7 +1759,7 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2:
1819
1759
  resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
1820
1760
  integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
1821
1761
 
1822
- uuid@^10.0.0:
1762
+ uuid@10.0.0, uuid@^10.0.0:
1823
1763
  version "10.0.0"
1824
1764
  resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294"
1825
1765
  integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==
@@ -80,7 +80,10 @@ class AddPrefixedEnvVars:
80
80
  return event_dict
81
81
 
82
82
 
83
- class AddApiVersion:
83
+ class AddStaticMetadata:
84
+ def __init__(self) -> None:
85
+ self._has_deepagents = os.getenv("DEEPAGENTS_VERSION", "") != ""
86
+
84
87
  def __call__(
85
88
  self, logger: logging.Logger, method_name: str, event_dict: EventDict
86
89
  ) -> EventDict:
@@ -90,6 +93,8 @@ class AddApiVersion:
90
93
  event_dict["langgraph_api_version"] = __version__
91
94
  except ImportError:
92
95
  pass
96
+ if self._has_deepagents:
97
+ event_dict["has_deepagents"] = "true"
93
98
  return event_dict
94
99
 
95
100
 
@@ -171,7 +176,7 @@ shared_processors = [
171
176
  structlog.stdlib.PositionalArgumentsFormatter(),
172
177
  structlog.stdlib.ExtraAdder(),
173
178
  AddPrefixedEnvVars("LANGSMITH_LANGGRAPH_"), # injected by docker build
174
- AddApiVersion(),
179
+ AddStaticMetadata(),
175
180
  structlog.processors.TimeStamper(fmt="iso", utc=True),
176
181
  structlog.processors.StackInfoRenderer(),
177
182
  structlog.processors.format_exc_info,
@@ -235,6 +235,10 @@ class DatadogMetricsReporter:
235
235
  "k8s.deployment.name": os.getenv(
236
236
  "LANGSMITH_HOST_PROJECT_NAME", ""
237
237
  ),
238
+ "has_deepagents": "true"
239
+ if os.getenv("DEEPAGENTS_VERSION", "") != ""
240
+ else "false",
241
+ "deployment_type": os.getenv("LSD_DEPLOYMENT_TYPE", ""),
238
242
  }
239
243
  )
240
244
  base_exporter = OTLPMetricExporter(
@@ -6,7 +6,8 @@ across the API-to-worker boundary in distributed LangGraph deployments.
6
6
 
7
7
  from __future__ import annotations
8
8
 
9
- from contextlib import contextmanager
9
+ import sys
10
+ from contextlib import ExitStack, contextmanager
10
11
  from typing import TYPE_CHECKING, Any
11
12
 
12
13
  import structlog
@@ -142,7 +143,7 @@ def restore_otel_trace_context(
142
143
 
143
144
  Note:
144
145
  - No-ops if OTEL is disabled or unavailable
145
- - Never raises - tracing failures won't break run execution
146
+ - Tracing setup failures won't break run execution
146
147
  """
147
148
  if not config.OTEL_ENABLED or not _check_otel_available():
148
149
  yield
@@ -153,6 +154,7 @@ def restore_otel_trace_context(
153
154
  yield
154
155
  return
155
156
 
157
+ stack: ExitStack | None = None
156
158
  try:
157
159
  from opentelemetry import trace # noqa: PLC0415
158
160
 
@@ -164,20 +166,45 @@ def restore_otel_trace_context(
164
166
  # Extract context from carrier
165
167
  ctx = _get_propagator().extract(carrier=carrier)
166
168
 
167
- with _get_tracer().start_as_current_span(
168
- "worker.stream_run",
169
- context=ctx,
170
- kind=trace.SpanKind.CONSUMER,
171
- ) as span:
172
- if run_id:
173
- span.set_attribute(OTEL_RUN_ID_ATTR_NAME, run_id)
174
- if thread_id:
175
- span.set_attribute(OTEL_THREAD_ID_ATTR_NAME, thread_id)
176
-
177
- yield
169
+ stack = ExitStack()
170
+ span = stack.enter_context(
171
+ _get_tracer().start_as_current_span(
172
+ "worker.stream_run",
173
+ context=ctx,
174
+ kind=trace.SpanKind.CONSUMER,
175
+ )
176
+ )
177
+ if run_id:
178
+ span.set_attribute(OTEL_RUN_ID_ATTR_NAME, run_id)
179
+ if thread_id:
180
+ span.set_attribute(OTEL_THREAD_ID_ATTR_NAME, thread_id)
178
181
  except Exception:
179
- logger.debug("Failed to restore OTEL trace context", exc_info=True)
182
+ logger.debug("Failed to initialize OTEL worker span context", exc_info=True)
183
+ if stack is not None:
184
+ try:
185
+ stack.close()
186
+ except Exception:
187
+ logger.warning("Failed to close OTEL worker span", exc_info=True)
188
+ yield
189
+ return
190
+
191
+ try:
180
192
  yield
193
+ except BaseException:
194
+ # Preserve exception metadata when unwinding managed contexts so OTEL
195
+ # can record body errors on the span.
196
+ exc_type, exc, tb = sys.exc_info()
197
+ try:
198
+ if stack.__exit__(exc_type, exc, tb):
199
+ return
200
+ except Exception:
201
+ logger.warning("Failed to close OTEL worker span", exc_info=True)
202
+ raise
203
+ else:
204
+ try:
205
+ stack.close()
206
+ except Exception:
207
+ logger.warning("Failed to close OTEL worker span", exc_info=True)
181
208
 
182
209
 
183
210
  def inject_otel_headers() -> dict[str, str]:
@@ -327,7 +327,7 @@ if __name__ == "__main__":
327
327
  loaded_config = json.load(file)
328
328
  logging.config.dictConfig(loaded_config)
329
329
  try:
330
- import uvloop # type: ignore[unresolved-import]
330
+ import uvloop
331
331
 
332
332
  uvloop.install()
333
333
  except ImportError:
@@ -225,7 +225,8 @@ class GrpcCheckpointer(BaseCheckpointSaver):
225
225
 
226
226
  response = await self._call("alist", _request)
227
227
  for proto_tuple in response.checkpoint_tuples:
228
- yield ckpt_conv.checkpoint_tuple_from_proto(proto_tuple)
228
+ if (tup := ckpt_conv.checkpoint_tuple_from_proto(proto_tuple)) is not None:
229
+ yield tup
229
230
 
230
231
  def delete_thread(self, thread_id: str) -> None:
231
232
  self._run_sync(self.adelete_thread(thread_id))
@@ -52,13 +52,15 @@ try:
52
52
  Runtime,
53
53
  )
54
54
  except ImportError: # langgraph < 0.5/6
55
- from langgraph.pregel.algo import ( # type: ignore[unresolved-import]
55
+ from langgraph.pregel.algo import ( # type: ignore[unresolved-import] # ty: ignore[unresolved-import]
56
56
  PregelTaskWrites,
57
57
  _proc_input,
58
58
  _scratchpad,
59
59
  local_read,
60
60
  )
61
- from langgraph.pregel.read import PregelNode # type: ignore[unresolved-import]
61
+ from langgraph.pregel.read import ( # type: ignore[unresolved-import] # ty: ignore[unresolved-import]
62
+ PregelNode,
63
+ )
62
64
 
63
65
  CACHE_NS_WRITES = "__pregel_cache_ns_writes"
64
66
  CONF = "configurable"
@@ -71,7 +71,7 @@ def config_from_proto(
71
71
 
72
72
  if config_proto.extra_json:
73
73
  for k, v in config_proto.extra_json.items():
74
- config[k] = orjson.loads(v) # type: ignore[invalid-key]
74
+ config[k] = orjson.loads(v) # type: ignore[invalid-key] # ty: ignore[invalid-key]
75
75
 
76
76
  return config
77
77
 
@@ -292,7 +292,7 @@ def chat_message_from_proto(
292
292
  additional_kwargs = cast("dict[str, Any]", m.get("additional_kwargs") or {})
293
293
  additional_kwargs["__openai_role__"] = "developer"
294
294
  m["additional_kwargs"] = additional_kwargs
295
- return msg_cls(**m) # type: ignore[no-matching-overload, invalid-argument-type]
295
+ return msg_cls(**m) # type: ignore[no-matching-overload, invalid-argument-type] # ty: ignore[no-matching-overload, invalid-argument-type]
296
296
 
297
297
 
298
298
  _TUPLE_KEYS = (
@@ -18,6 +18,8 @@ dependencies = [
18
18
  "sse-starlette>=2.1.3,<3.4.0",
19
19
  "starlette>=0.38.6",
20
20
  "watchfiles>=0.13",
21
+ "uvloop>=0.18.0; platform_system != 'Windows'",
22
+ "httptools>=0.5.0; platform_system != 'Windows'",
21
23
  "langgraph>=0.4.10,<2",
22
24
  "langgraph-checkpoint>=3.0.1,<5",
23
25
  "orjson>=3.9.7",
@@ -38,9 +40,9 @@ dependencies = [
38
40
  "grpcio>=1.78.0,<1.79.0",
39
41
  "grpcio-tools==1.78.0", # Pinned: must match GRPC_GENERATED_VERSION in generated _pb2_grpc.py stubs
40
42
  "grpcio-health-checking>=1.78.0,<1.79.0",
41
- "opentelemetry-api>=1.37.0",
42
- "opentelemetry-sdk>=1.37.0",
43
- "opentelemetry-exporter-otlp-proto-http>=1.37.0",
43
+ "opentelemetry-api>=0.0.1",
44
+ "opentelemetry-sdk>=0.0.1",
45
+ "opentelemetry-exporter-otlp-proto-http>=0.0.1",
44
46
  "uuid-utils>=0.12.0",
45
47
  "zstandard>=0.23.0",
46
48
  ]