langgraph-api 0.8.5__tar.gz → 0.8.6__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.8.5 → langgraph_api-0.8.6}/Makefile +1 -1
  2. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/PKG-INFO +6 -4
  3. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/continuous/pyproject.toml +2 -2
  4. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/continuous/uv.lock +8 -8
  5. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/constraints.txt +3 -3
  6. langgraph_api-0.8.6/langgraph_api/__init__.py +1 -0
  7. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/__init__.py +4 -0
  8. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/a2a.py +31 -1
  9. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/meta.py +31 -19
  10. langgraph_api-0.8.6/langgraph_api/api/protocol.py +376 -0
  11. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/auth/custom.py +19 -1
  12. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/auth/middleware.py +1 -1
  13. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/cli.py +6 -11
  14. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/config/__init__.py +15 -0
  15. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/feature_flags.py +8 -3
  16. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/graph.py +51 -0
  17. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/grpc/ops/threads.py +24 -1
  18. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/http_metrics.py +5 -4
  19. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/client.mts +15 -0
  20. langgraph_api-0.8.6/langgraph_api/js/src/utils/experiment-tracing.mts +51 -0
  21. langgraph_api-0.8.6/langgraph_api/js/yarn.lock +1321 -0
  22. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/metadata.py +1 -0
  23. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/metrics_datadog.py +19 -0
  24. langgraph_api-0.8.6/langgraph_api/protocol/__init__.py +1 -0
  25. langgraph_api-0.8.6/langgraph_api/protocol/capabilities.py +123 -0
  26. langgraph_api-0.8.6/langgraph_api/protocol/constants.py +43 -0
  27. langgraph_api-0.8.6/langgraph_api/protocol/event_normalizers.py +89 -0
  28. langgraph_api-0.8.6/langgraph_api/protocol/namespace.py +48 -0
  29. langgraph_api-0.8.6/langgraph_api/protocol/service.py +900 -0
  30. langgraph_api-0.8.6/langgraph_api/protocol/session.py +1764 -0
  31. langgraph_api-0.8.6/langgraph_api/protocol/state_normalizers.py +385 -0
  32. langgraph_api-0.8.6/langgraph_api/protocol/types.py +168 -0
  33. langgraph_api-0.8.6/langgraph_api/release_tags.py +206 -0
  34. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/route.py +34 -1
  35. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/schema.py +2 -0
  36. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/stream.py +227 -10
  37. langgraph_api-0.8.6/langgraph_api/utils/messages.py +62 -0
  38. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.py +1 -1
  39. langgraph_api-0.8.6/langgraph_grpc_common/proto/core_api_pb2.py +272 -0
  40. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/core_api_pb2.pyi +127 -5
  41. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/core_api_pb2_grpc.py +1 -1
  42. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/encryption_pb2.pyi +13 -3
  43. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/encryption_pb2_grpc.py +1 -1
  44. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/engine_common_pb2.pyi +119 -3
  45. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/engine_common_pb2_grpc.py +1 -1
  46. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.py +1 -1
  47. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.py +1 -1
  48. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.py +1 -1
  49. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.py +1 -1
  50. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.py +1 -1
  51. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.py +1 -1
  52. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2_grpc.py +1 -1
  53. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.py +1 -1
  54. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.py +1 -1
  55. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.py +1 -1
  56. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/errors_pb2_grpc.py +1 -1
  57. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/openapi.json +311 -0
  58. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/pyproject.toml +12 -6
  59. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/uv.lock +482 -379
  60. langgraph_api-0.8.5/langgraph_api/__init__.py +0 -1
  61. langgraph_api-0.8.5/langgraph_api/js/yarn.lock +0 -1894
  62. langgraph_api-0.8.5/langgraph_grpc_common/proto/core_api_pb2.py +0 -272
  63. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/.gitignore +0 -0
  64. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/LICENSE +0 -0
  65. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/README.md +0 -0
  66. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/.gitignore +0 -0
  67. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/Makefile +0 -0
  68. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/README.md +0 -0
  69. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/assistant.ts +0 -0
  70. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/benchmark-runner.ts +0 -0
  71. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/benchmark_profiles.ts +0 -0
  72. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/benchmarks.ts +0 -0
  73. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/cancel_first_second_completes.ts +0 -0
  74. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/enqueued_runs_order.ts +0 -0
  75. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/log-failure.ts +0 -0
  76. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/meta_workload.ts +0 -0
  77. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/stream_write.ts +0 -0
  78. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/thread.ts +0 -0
  79. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/thread_runs_metadata_search.ts +0 -0
  80. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/threads_search_metadata.ts +0 -0
  81. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/types.ts +0 -0
  82. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/benchmark-runners/wait_write.ts +0 -0
  83. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/capacity_dd_report.py +0 -0
  84. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/capacity_k6.js +0 -0
  85. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/capacity_runner.mjs +0 -0
  86. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/capacity_slack_report.py +0 -0
  87. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/capacity_urls.mjs +0 -0
  88. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/clean-cli.js +0 -0
  89. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/clean.js +0 -0
  90. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/continuous/README.md +0 -0
  91. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/continuous/runner.py +0 -0
  92. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/graphs.js +0 -0
  93. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/mixed_workload_k6.js +0 -0
  94. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/mixed_workload_runner.mjs +0 -0
  95. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/package.json +0 -0
  96. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/ramp.js +0 -0
  97. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/reporting/dd_reporting.py +0 -0
  98. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/reporting/slack_slowest_runs.py +0 -0
  99. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/reporting/slack_summary.py +0 -0
  100. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/run_local.sh +0 -0
  101. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/staircase.py +0 -0
  102. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/staircase_step_k6.js +0 -0
  103. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/tsconfig.json +0 -0
  104. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/update-revision.js +0 -0
  105. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/benchmark/weather.js +0 -0
  106. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/custom_store.sql +0 -0
  107. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/forbidden.txt +0 -0
  108. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/hatch_build.py +0 -0
  109. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/healthcheck.py +0 -0
  110. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph-cloud-debugging-20260210132856.zip +0 -0
  111. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/_checkpointer/__init__.py +0 -0
  112. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/_checkpointer/_adapter.py +0 -0
  113. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/_checkpointer/protocol.py +0 -0
  114. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/_factory_utils.py +0 -0
  115. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/assistants.py +0 -0
  116. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/mcp/__init__.py +0 -0
  117. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/mcp/_constants.py +0 -0
  118. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/mcp/_handlers.py +0 -0
  119. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/mcp/_models.py +0 -0
  120. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/mcp/_routes.py +0 -0
  121. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/mcp/_sanitizers.py +0 -0
  122. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/openapi.py +0 -0
  123. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/profile.py +0 -0
  124. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/runs.py +0 -0
  125. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/store.py +0 -0
  126. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/threads.py +0 -0
  127. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/api/ui.py +0 -0
  128. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/asgi_transport.py +0 -0
  129. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/asyncio.py +0 -0
  130. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/auth/__init__.py +0 -0
  131. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/auth/errors.py +0 -0
  132. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/auth/langsmith/__init__.py +0 -0
  133. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/auth/langsmith/backend.py +0 -0
  134. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/auth/langsmith/client.py +0 -0
  135. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/auth/noop.py +0 -0
  136. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/auth/studio_user.py +0 -0
  137. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/cache.py +0 -0
  138. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/command.py +0 -0
  139. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/config/_parse.py +0 -0
  140. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/config/schemas.py +0 -0
  141. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/cron_scheduler.py +0 -0
  142. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/encryption/__init__.py +0 -0
  143. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/encryption/aes_json.py +0 -0
  144. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/encryption/context.py +0 -0
  145. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/encryption/custom.py +0 -0
  146. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/encryption/middleware.py +0 -0
  147. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/encryption/shared.py +0 -0
  148. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/errors.py +0 -0
  149. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/grpc/__init__.py +0 -0
  150. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/grpc/client.py +0 -0
  151. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/grpc/generated/core_api_pb2.pyi +0 -0
  152. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/grpc/ops/__init__.py +0 -0
  153. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/grpc/ops/assistants.py +0 -0
  154. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/grpc/ops/cache.py +0 -0
  155. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/grpc/ops/crons.py +0 -0
  156. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/grpc/ops/runs.py +0 -0
  157. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/grpc/server.py +0 -0
  158. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/grpc/servicers/__init__.py +0 -0
  159. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/grpc/servicers/checkpointer.py +0 -0
  160. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/grpc/servicers/encryption.py +0 -0
  161. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/http.py +0 -0
  162. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/http_metrics_utils.py +0 -0
  163. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/.gitignore +0 -0
  164. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/.prettierrc +0 -0
  165. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/__init__.py +0 -0
  166. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/base.py +0 -0
  167. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/build.mts +0 -0
  168. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/client.http.mts +0 -0
  169. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/errors.py +0 -0
  170. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/global.d.ts +0 -0
  171. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/package.json +0 -0
  172. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/remote.py +0 -0
  173. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/schema.py +0 -0
  174. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/src/graph.mts +0 -0
  175. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/src/load.hooks.mjs +0 -0
  176. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/src/preload.mjs +0 -0
  177. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/src/utils/files.mts +0 -0
  178. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/src/utils/importMap.mts +0 -0
  179. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
  180. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/src/utils/serde.mts +0 -0
  181. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/sse.py +0 -0
  182. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/traceblock.mts +0 -0
  183. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/tsconfig.json +0 -0
  184. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/js/ui.py +0 -0
  185. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/lc_security/__init__.py +0 -0
  186. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/lc_security/exceptions.py +0 -0
  187. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/lc_security/policy.py +0 -0
  188. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/lc_security/transport.py +0 -0
  189. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/logging.py +0 -0
  190. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/middleware/__init__.py +0 -0
  191. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/middleware/ensure_store.py +0 -0
  192. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/middleware/http_logger.py +0 -0
  193. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/middleware/private_network.py +0 -0
  194. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/middleware/request_id.py +0 -0
  195. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/models/__init__.py +0 -0
  196. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/models/run.py +0 -0
  197. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/otel_context.py +0 -0
  198. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/patch.py +0 -0
  199. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/queue_entrypoint.py +0 -0
  200. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/self_hosted_logs.py +0 -0
  201. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/self_hosted_metrics.py +0 -0
  202. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/serde.py +0 -0
  203. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/server.py +0 -0
  204. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/sse.py +0 -0
  205. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/state.py +0 -0
  206. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/store.py +0 -0
  207. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/timing/__init__.py +0 -0
  208. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/timing/profiler.py +0 -0
  209. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/timing/timer.py +0 -0
  210. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/traceblock.py +0 -0
  211. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/tunneling/cloudflare.py +0 -0
  212. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/utils/__init__.py +0 -0
  213. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/utils/cache.py +0 -0
  214. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/utils/config.py +0 -0
  215. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/utils/errors.py +0 -0
  216. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/utils/extract.py +0 -0
  217. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/utils/future.py +0 -0
  218. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/utils/headers.py +0 -0
  219. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/utils/network.py +0 -0
  220. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/utils/retriable_client.py +0 -0
  221. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/utils/stream_codec.py +0 -0
  222. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/utils/uuids.py +0 -0
  223. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/validation.py +0 -0
  224. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/webhook.py +0 -0
  225. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_api/worker.py +0 -0
  226. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/__init__.py +0 -0
  227. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/checkpointer.py +0 -0
  228. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/conversion/__init__.py +0 -0
  229. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/conversion/_compat.py +0 -0
  230. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/conversion/checkpoint.py +0 -0
  231. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/conversion/config.py +0 -0
  232. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/conversion/durability.py +0 -0
  233. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/conversion/struct.py +0 -0
  234. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/conversion/value.py +0 -0
  235. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/__init__.py +0 -0
  236. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/checkpointer_pb2.py +0 -0
  237. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/checkpointer_pb2.pyi +0 -0
  238. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.pyi +0 -0
  239. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/core_api_pb2_grpc.pyi +0 -0
  240. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/encryption_pb2.py +0 -0
  241. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/encryption_pb2_grpc.pyi +0 -0
  242. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/engine_common_pb2.py +0 -0
  243. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/engine_common_pb2_grpc.pyi +0 -0
  244. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.py +0 -0
  245. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.pyi +0 -0
  246. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.pyi +0 -0
  247. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_control_signal_pb2.py +0 -0
  248. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_control_signal_pb2.pyi +0 -0
  249. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.pyi +0 -0
  250. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.py +0 -0
  251. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.pyi +0 -0
  252. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.pyi +0 -0
  253. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_durability_pb2.py +0 -0
  254. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_durability_pb2.pyi +0 -0
  255. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.pyi +0 -0
  256. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.py +0 -0
  257. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.pyi +0 -0
  258. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.pyi +0 -0
  259. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_run_status_pb2.py +0 -0
  260. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_run_status_pb2.pyi +0 -0
  261. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.pyi +0 -0
  262. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2.py +0 -0
  263. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2.pyi +0 -0
  264. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2_grpc.pyi +0 -0
  265. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_stream_mode_pb2.py +0 -0
  266. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_stream_mode_pb2.pyi +0 -0
  267. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.pyi +0 -0
  268. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_thread_status_pb2.py +0 -0
  269. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_thread_status_pb2.pyi +0 -0
  270. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.pyi +0 -0
  271. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.py +0 -0
  272. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.pyi +0 -0
  273. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.pyi +0 -0
  274. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/errors_pb2.py +0 -0
  275. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/errors_pb2.pyi +0 -0
  276. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/proto/errors_pb2_grpc.pyi +0 -0
  277. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_grpc_common/serde.py +0 -0
  278. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_license/__init__.py +0 -0
  279. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_license/validation.py +0 -0
  280. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_runtime/__init__.py +0 -0
  281. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_runtime/checkpoint.py +0 -0
  282. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_runtime/database.py +0 -0
  283. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_runtime/lifespan.py +0 -0
  284. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_runtime/metrics.py +0 -0
  285. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_runtime/ops.py +0 -0
  286. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_runtime/queue.py +0 -0
  287. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_runtime/retry.py +0 -0
  288. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_runtime/routes.py +0 -0
  289. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/langgraph_runtime/store.py +0 -0
  290. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/logging.json +0 -0
  291. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/scripts/build_wheel.py +0 -0
  292. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/scripts/create_license.py +0 -0
  293. {langgraph_api-0.8.5 → langgraph_api-0.8.6}/scripts/run_a2a_tck.py +0 -0
@@ -1,7 +1,7 @@
1
1
  .PHONY: build release lint format test test_watch start start-inmem start-inmem-license-oss start start-js-server build-go-server start-go-server stop-go-server check-version check-base-imports test-a2a-tck test-a2a-tck-mandatory start-test-a2a-tck start-test-a2a-tck-mandatory start-test-a2a-tck-watch test-mcp-conformance start-test-mcp-conformance list-mcp-scenarios
2
2
 
3
3
  # Environment variables
4
- LANGSERVE_GRAPHS_ALL = '{"agent": {"path": "./tests/graphs/agent.py:graph", "description": "agent"}, "assistant_id_runtime": "./tests/graphs/assistant_id_runtime.py:graph", "custom_lifespan": "./tests/graphs/my_router.py:graph", "single_node": "./tests/graphs/single_node.py:graph", "benchmark": "./tests/graphs/benchmark.py:graph", "config_graph": "./tests/graphs/config_graph.py:graph", "other": "./tests/graphs/other.py:make_graph", "weather": "./tests/graphs/weather.py:mk_weather_graph", "searchy": "./tests/graphs/searchy.py:graph", "agent_simple": "./tests/graphs/agent_simple.py:graph", "simple_runtime": "./tests/graphs/simple_runtime.py:graph", "agent_interrupt": "./tests/graphs/agent_interrupt.py:graph", "agent_parallel_interrupt": "./tests/graphs/agent_parallel_interrupt.py:graph", "message_type_test": "./tests/graphs/message_type_test.py:graph", "remote_subgraph_parent": "./tests/graphs/remote_subgraph_parent.py:graph", "simple_remote": "./tests/graphs/simple_remote.py:graph", "nested_subgraphs": "./tests/graphs/nested_subgraphs.py:graph", "functional_fibonacci": "./tests/graphs/functional_fibonacci.py:fibonacci", "state_graph_fibonacci": "./tests/graphs/state_graph_fibonacci.py:fibonacci", "max_concurrency_graph": "./tests/graphs/max_concurrency_graph.py:graph", "unserializable_subgraph": "./tests/graphs/unserializable_subgraph.py:graph", "agent_interrupt_text": "./tests/graphs/agent_interrupt_text.py:graph", "agent_echo_stream": "./tests/graphs/agent_echo_stream.py:graph", "runtime_graph": "./tests/graphs/runtime_graph.py:graph", "tool_call_chunk_stream": "./tests/graphs/tool_call_chunk_stream.py:graph", "ui_tool_call_stream": "./tests/graphs/ui_tool_call_stream.py:graph"}'
4
+ LANGSERVE_GRAPHS_ALL = '{"agent": {"path": "./tests/graphs/agent.py:graph", "description": "agent"}, "assistant_id_runtime": "./tests/graphs/assistant_id_runtime.py:graph", "custom_lifespan": "./tests/graphs/my_router.py:graph", "single_node": "./tests/graphs/single_node.py:graph", "benchmark": "./tests/graphs/benchmark.py:graph", "config_graph": "./tests/graphs/config_graph.py:graph", "other": "./tests/graphs/other.py:make_graph", "weather": "./tests/graphs/weather.py:mk_weather_graph", "searchy": "./tests/graphs/searchy.py:graph", "agent_simple": "./tests/graphs/agent_simple.py:graph", "simple_runtime": "./tests/graphs/simple_runtime.py:graph", "agent_interrupt": "./tests/graphs/agent_interrupt.py:graph", "agent_parallel_interrupt": "./tests/graphs/agent_parallel_interrupt.py:graph", "message_type_test": "./tests/graphs/message_type_test.py:graph", "remote_subgraph_parent": "./tests/graphs/remote_subgraph_parent.py:graph", "simple_remote": "./tests/graphs/simple_remote.py:graph", "nested_subgraphs": "./tests/graphs/nested_subgraphs.py:graph", "functional_fibonacci": "./tests/graphs/functional_fibonacci.py:fibonacci", "state_graph_fibonacci": "./tests/graphs/state_graph_fibonacci.py:fibonacci", "max_concurrency_graph": "./tests/graphs/max_concurrency_graph.py:graph", "unserializable_subgraph": "./tests/graphs/unserializable_subgraph.py:graph", "agent_interrupt_text": "./tests/graphs/agent_interrupt_text.py:graph", "agent_echo_stream": "./tests/graphs/agent_echo_stream.py:graph", "agent_tool_stream": "./tests/graphs/agent_tool_stream.py:graph", "runtime_graph": "./tests/graphs/runtime_graph.py:graph", "tool_call_chunk_stream": "./tests/graphs/tool_call_chunk_stream.py:graph", "ui_tool_call_stream": "./tests/graphs/ui_tool_call_stream.py:graph", "agent_metrics_stream": "./tests/graphs/agent_metrics_stream.py:graph", "agent_multimodal_stream": "./tests/graphs/agent_multimodal_stream.py:graph", "agent_bedtime_story": "./tests/graphs/agent_bedtime_story.py:graph"}'
5
5
  LANGSERVE_GRAPHS_AUTH = '{"agent": {"path": "./tests/graphs/agent.py:graph", "description": "agent"}, "assistant_id_runtime": "./tests/graphs/assistant_id_runtime.py:graph", "config_graph": "./tests/graphs/config_graph.py:graph", "other": "./tests/graphs/other.py:make_graph", "weather": "./tests/graphs/weather.py:mk_weather_graph", "searchy": "./tests/graphs/searchy.py:graph", "agent_simple": "./tests/graphs/agent_simple.py:graph", "simple_runtime": "./tests/graphs/simple_runtime.py:graph", "agent_parallel_interrupt": "./tests/graphs/agent_parallel_interrupt.py:graph", "functional_fibonacci": "./tests/graphs/functional_fibonacci.py:fibonacci", "state_graph_fibonacci": "./tests/graphs/state_graph_fibonacci.py:fibonacci", "runtime_graph": "./tests/graphs/runtime_graph.py:graph"}'
6
6
 
7
7
  # Go server management
@@ -1,19 +1,20 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langgraph-api
3
- Version: 0.8.5
3
+ Version: 0.8.6
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
7
7
  Requires-Python: >=3.11
8
8
  Requires-Dist: cloudpickle>=3.0.0
9
9
  Requires-Dist: cryptography<47.0,>=42.0.0
10
- Requires-Dist: grpcio-health-checking<1.79.0,>=1.78.0
11
- Requires-Dist: grpcio-tools==1.78.0
12
- Requires-Dist: grpcio<1.79.0,>=1.78.0
10
+ Requires-Dist: grpcio-health-checking<1.81.0,>=1.80.0
11
+ Requires-Dist: grpcio-tools==1.80.0
12
+ Requires-Dist: grpcio<1.81.0,>=1.80.0
13
13
  Requires-Dist: httptools>=0.5.0; platform_system != 'Windows'
14
14
  Requires-Dist: httpx>=0.25.0
15
15
  Requires-Dist: jsonschema-rs<0.45,>=0.20.0
16
16
  Requires-Dist: langchain-core>=0.3.64
17
+ Requires-Dist: langchain-protocol<0.1,>=0.0.15
17
18
  Requires-Dist: langgraph-checkpoint<5,>=3.0.1
18
19
  Requires-Dist: langgraph-runtime-inmem<0.29.0,>=0.28.0
19
20
  Requires-Dist: langgraph-sdk>=0.3.5
@@ -34,6 +35,7 @@ Requires-Dist: uuid-utils>=0.12.0
34
35
  Requires-Dist: uvicorn>=0.26.0
35
36
  Requires-Dist: uvloop>=0.18.0; platform_system != 'Windows'
36
37
  Requires-Dist: watchfiles>=0.13
38
+ Requires-Dist: websockets>=13.0
37
39
  Requires-Dist: zstandard>=0.23.0
38
40
  Description-Content-Type: text/markdown
39
41
 
@@ -4,8 +4,8 @@ version = "0.1.0"
4
4
  description = "Continuous stress test for Agent Server"
5
5
  requires-python = ">=3.13"
6
6
  dependencies = [
7
- "langgraph-sdk>=0.2.10",
8
- "click>=8.3.2",
7
+ "langgraph-sdk>=0.3.13",
8
+ "click>=8.3.3",
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.2"
28
+ version = "8.3.3"
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/57/75/31212c6bf2503fdf920d87fee5d7a86a2e3bcf444984126f13d8e4016804/click-8.3.2.tar.gz", hash = "sha256:14162b8b3b3550a7d479eafa77dfd3c38d9dc8951f6f69c78913a8f9a7540fd5", size = 302856, upload-time = "2026-04-03T19:14:45.118Z" }
33
+ sdist = { url = "https://files.pythonhosted.org/packages/bb/63/f9e1ea081ce35720d8b92acde70daaedace594dc93b693c869e0d5910718/click-8.3.3.tar.gz", hash = "sha256:398329ad4837b2ff7cbe1dd166a4c0f8900c3ca3a218de04466f38f6497f18a2", size = 328061, upload-time = "2026-04-22T15:11:27.506Z" }
34
34
  wheels = [
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" },
35
+ { url = "https://files.pythonhosted.org/packages/ae/44/c1221527f6a71a01ec6fbad7fa78f1d50dfa02217385cf0fa3eec7087d59/click-8.3.3-py3-none-any.whl", hash = "sha256:a2bf429bb3033c89fa4936ffb35d5cb471e3719e1f3c8a7c3fff0b8314305613", size = 110502, upload-time = "2026-04-22T15:11:25.044Z" },
36
36
  ]
37
37
 
38
38
  [[package]]
@@ -120,25 +120,25 @@ dependencies = [
120
120
 
121
121
  [package.metadata]
122
122
  requires-dist = [
123
- { name = "click", specifier = ">=8.3.2" },
123
+ { name = "click", specifier = ">=8.3.3" },
124
124
  { name = "datadog-api-client", specifier = ">=2.0.0" },
125
125
  { name = "httpx", specifier = ">=0.27.0" },
126
- { name = "langgraph-sdk", specifier = ">=0.2.10" },
126
+ { name = "langgraph-sdk", specifier = ">=0.3.13" },
127
127
  { name = "python-dateutil", specifier = ">=2.8.0" },
128
128
  { name = "structlog", specifier = ">=24.1.0" },
129
129
  ]
130
130
 
131
131
  [[package]]
132
132
  name = "langgraph-sdk"
133
- version = "0.3.12"
133
+ version = "0.3.13"
134
134
  source = { registry = "https://pypi.org/simple" }
135
135
  dependencies = [
136
136
  { name = "httpx" },
137
137
  { name = "orjson" },
138
138
  ]
139
- sdist = { url = "https://files.pythonhosted.org/packages/fd/a1/012f0e0f5c9fd26f92bdc9d244756ad673c428230156ef668e6ec7c18cee/langgraph_sdk-0.3.12.tar.gz", hash = "sha256:c9c9ec22b3c0fcd352e2b8f32a815164f69446b8648ca22606329f4ff4c59a71", size = 194932, upload-time = "2026-03-18T22:15:54.592Z" }
139
+ sdist = { url = "https://files.pythonhosted.org/packages/0e/db/77a45127dddcfea5e4256ba916182903e4c31dc4cfca305b8c386f0a9e53/langgraph_sdk-0.3.13.tar.gz", hash = "sha256:419ca5663eec3cec192ad194ac0647c0c826866b446073eb40f384f950986cd5", size = 196360, upload-time = "2026-04-07T20:34:18.766Z" }
140
140
  wheels = [
141
- { url = "https://files.pythonhosted.org/packages/17/4d/4f796e86b03878ab20d9b30aaed1ad459eda71a5c5b67f7cfe712f3548f2/langgraph_sdk-0.3.12-py3-none-any.whl", hash = "sha256:44323804965d6ec2a07127b3cf08a0428ea6deaeb172c2d478d5cd25540e3327", size = 95834, upload-time = "2026-03-18T22:15:53.545Z" },
141
+ { url = "https://files.pythonhosted.org/packages/fe/ef/64d64e9f8eea47ce7b939aa6da6863b674c8d418647813c20111645fcc62/langgraph_sdk-0.3.13-py3-none-any.whl", hash = "sha256:aee09e345c90775f6de9d6f4c7b847cfc652e49055c27a2aed0d981af2af3bd0", size = 96668, upload-time = "2026-04-07T20:34:17.866Z" },
142
142
  ]
143
143
 
144
144
  [[package]]
@@ -18,9 +18,9 @@ structlog>=24.1.0
18
18
  cloudpickle>=3.0.0
19
19
  truststore>=0.1
20
20
  protobuf>=6.32.1,<7.0.0
21
- grpcio>=1.78.0,<1.79.0
22
- grpcio-tools>=1.78.0,<1.79.0
23
- grpcio-health-checking>=1.78.0,<1.79.0
21
+ grpcio>=1.80.0,<1.81.0
22
+ grpcio-tools>=1.80.0,<1.81.0
23
+ grpcio-health-checking>=1.80.0,<1.81.0
24
24
  opentelemetry-api>=0.0.1
25
25
  opentelemetry-sdk>=0.0.1
26
26
  opentelemetry-exporter-otlp-proto-http>=0.0.1
@@ -0,0 +1 @@
1
+ __version__ = "0.8.6"
@@ -19,6 +19,7 @@ from langgraph_api.api.mcp import mcp_routes
19
19
  from langgraph_api.api.meta import meta_info, meta_metrics
20
20
  from langgraph_api.api.openapi import get_openapi_spec
21
21
  from langgraph_api.api.profile import profile_routes
22
+ from langgraph_api.api.protocol import protocol_routes
22
23
  from langgraph_api.api.runs import runs_routes
23
24
  from langgraph_api.api.store import store_routes
24
25
  from langgraph_api.api.threads import threads_routes
@@ -131,6 +132,8 @@ if HTTP_CONFIG:
131
132
  protected_routes.extend(mcp_routes)
132
133
  if not HTTP_CONFIG.get("disable_a2a"):
133
134
  protected_routes.extend(a2a_routes)
135
+ if not HTTP_CONFIG.get("disable_runs") and not HTTP_CONFIG.get("disable_protocol"):
136
+ protected_routes.extend(protocol_routes)
134
137
  else:
135
138
  protected_routes.extend(assistants_routes)
136
139
  protected_routes.extend(runs_routes)
@@ -141,6 +144,7 @@ else:
141
144
  protected_routes.extend(ui_routes)
142
145
  protected_routes.extend(mcp_routes)
143
146
  protected_routes.extend(a2a_routes)
147
+ protected_routes.extend(protocol_routes)
144
148
 
145
149
 
146
150
  def _metadata_fn(app_import: str) -> dict[str, str]:
@@ -552,6 +552,22 @@ def _create_interrupt_artifact(interrupts: list[dict[str, Any]]) -> dict[str, An
552
552
  }
553
553
 
554
554
 
555
+ def _tool_result_data(it: dict[str, Any]) -> dict[str, Any] | None:
556
+ tool_call_id = it.get("tool_call_id")
557
+ if not isinstance(tool_call_id, str) or not tool_call_id:
558
+ return None
559
+
560
+ result: dict[str, Any] = {"toolCallId": tool_call_id}
561
+ content = it.get("content")
562
+ if content not in (None, ""):
563
+ result["content"] = content
564
+ for key in ("name", "status"):
565
+ value = it.get(key)
566
+ if isinstance(value, str) and value:
567
+ result[key] = value
568
+ return result
569
+
570
+
555
571
  def _lc_stream_items_to_a2a_message(
556
572
  items: list[dict[str, Any]],
557
573
  *,
@@ -604,6 +620,9 @@ def _lc_stream_items_to_a2a_message(
604
620
  tc = it.get("tool_calls")
605
621
  if isinstance(tc, list) and tc:
606
622
  extra_data.setdefault("tool_calls", tc)
623
+ tool_result = _tool_result_data(it)
624
+ if tool_result is not None:
625
+ extra_data.setdefault("tool_results", []).append(tool_result)
607
626
 
608
627
  parts: list[dict[str, Any]] = []
609
628
  if text_parts:
@@ -809,10 +828,21 @@ def _convert_messages_to_a2a_format(
809
828
  else "ROLE_AGENT"
810
829
  )
811
830
 
831
+ parts: list[dict[str, Any]] = [{"kind": "text", "text": str(content)}]
832
+ extra_data: dict[str, Any] = {}
833
+ tc = msg.get("tool_calls")
834
+ if isinstance(tc, list) and tc:
835
+ extra_data["tool_calls"] = tc
836
+ tool_result = _tool_result_data(msg)
837
+ if tool_result is not None:
838
+ extra_data["tool_results"] = [tool_result]
839
+ if extra_data:
840
+ parts.append({"kind": "data", "data": extra_data})
841
+
812
842
  a2a_message = {
813
843
  "kind": "message",
814
844
  "role": a2a_role,
815
- "parts": [{"kind": "text", "text": str(content)}],
845
+ "parts": parts,
816
846
  "messageId": id,
817
847
  "taskId": task_id,
818
848
  "contextId": context_id,
@@ -47,9 +47,13 @@ def _merge_pool_stats(local: PoolStats, remote: PoolStats) -> PoolStats:
47
47
 
48
48
 
49
49
  def _pool_stats_to_prometheus_lines(
50
- stats: PoolStats, project_id: str | None, revision_id: str | None
50
+ stats: PoolStats,
51
+ project_id: str | None,
52
+ revision_id: str | None,
53
+ deployment_type: str = "",
51
54
  ) -> list[str]:
52
55
  """Format merged pool stats as Prometheus text lines (same format as langgraph_runtime.database.pool_stats)."""
56
+ labels = f'project_id="{project_id}", revision_id="{revision_id}", deployment_type="{deployment_type}"'
53
57
  lines = []
54
58
  if "postgres" in stats:
55
59
  pg = stats["postgres"]
@@ -57,19 +61,19 @@ def _pool_stats_to_prometheus_lines(
57
61
  [
58
62
  "# HELP lg_api_pg_pool_max The maximum size of the postgres connection pool.",
59
63
  "# TYPE lg_api_pg_pool_max gauge",
60
- f'lg_api_pg_pool_max{{project_id="{project_id}", revision_id="{revision_id}"}} {pg.get("pool_max", 0)}',
64
+ f"lg_api_pg_pool_max{{{labels}}} {pg.get('pool_max', 0)}",
61
65
  "# HELP lg_api_pg_pool_size Number of connections currently managed by the postgres connection pool (in the pool, given to clients, being prepared)",
62
66
  "# TYPE lg_api_pg_pool_size gauge",
63
- f'lg_api_pg_pool_size{{project_id="{project_id}", revision_id="{revision_id}"}} {pg.get("pool_size", 0)}',
67
+ f"lg_api_pg_pool_size{{{labels}}} {pg.get('pool_size', 0)}",
64
68
  "# HELP lg_api_pg_pool_available Number of connections currently idle in the postgres connection pool",
65
69
  "# TYPE lg_api_pg_pool_available gauge",
66
- f'lg_api_pg_pool_available{{project_id="{project_id}", revision_id="{revision_id}"}} {pg.get("pool_available", 0)}',
70
+ f"lg_api_pg_pool_available{{{labels}}} {pg.get('pool_available', 0)}",
67
71
  "# HELP lg_api_pg_pool_requests_queued Number of postgres connection requests queued because a postgres connection wasn't immediately available in the pool",
68
72
  "# TYPE lg_api_pg_pool_requests_queued counter",
69
- f'lg_api_pg_pool_requests_queued{{project_id="{project_id}", revision_id="{revision_id}"}} {pg.get("requests_queued", 0)}',
73
+ f"lg_api_pg_pool_requests_queued{{{labels}}} {pg.get('requests_queued', 0)}",
70
74
  "# HELP lg_api_pg_pool_requests_errors Number of postgres connection requests resulting in an error (timeouts, queue full...)",
71
75
  "# TYPE lg_api_pg_pool_requests_errors counter",
72
- f'lg_api_pg_pool_requests_errors{{project_id="{project_id}", revision_id="{revision_id}"}} {pg.get("requests_errors", 0)}',
76
+ f"lg_api_pg_pool_requests_errors{{{labels}}} {pg.get('requests_errors', 0)}",
73
77
  ]
74
78
  )
75
79
  if "redis" in stats:
@@ -78,13 +82,13 @@ def _pool_stats_to_prometheus_lines(
78
82
  [
79
83
  "# HELP lg_api_redis_pool_available Number of connections currently idle in the redis connection pool",
80
84
  "# TYPE lg_api_redis_pool_available gauge",
81
- f'lg_api_redis_pool_available{{project_id="{project_id}", revision_id="{revision_id}"}} {rd.get("idle_connections", 0)}',
85
+ f"lg_api_redis_pool_available{{{labels}}} {rd.get('idle_connections', 0)}",
82
86
  "# HELP lg_api_redis_pool_size Number of connections currently in use in the redis connection pool",
83
87
  "# TYPE lg_api_redis_pool_size gauge",
84
- f'lg_api_redis_pool_size{{project_id="{project_id}", revision_id="{revision_id}"}} {rd.get("in_use_connections", 0)}',
88
+ f"lg_api_redis_pool_size{{{labels}}} {rd.get('in_use_connections', 0)}",
85
89
  "# HELP lg_api_redis_pool_max The maximum size of the redis connection pool.",
86
90
  "# TYPE lg_api_redis_pool_max gauge",
87
- f'lg_api_redis_pool_max{{project_id="{project_id}", revision_id="{revision_id}"}} {rd.get("max_connections", 0)}',
91
+ f"lg_api_redis_pool_max{{{labels}}} {rd.get('max_connections', 0)}",
88
92
  ]
89
93
  )
90
94
  return lines
@@ -111,7 +115,10 @@ async def meta_pool_stats(metrics_format: str) -> PoolStats | list[str]:
111
115
  merged_pool_stats = _merge_pool_stats(local_pool_stats, grpc_pool_stats)
112
116
  if metrics_format == "prometheus":
113
117
  return _pool_stats_to_prometheus_lines(
114
- merged_pool_stats, metadata.PROJECT_ID, metadata.HOST_REVISION_ID
118
+ merged_pool_stats,
119
+ metadata.PROJECT_ID,
120
+ metadata.HOST_REVISION_ID,
121
+ metadata.DEPLOYMENT_TYPE,
115
122
  )
116
123
  else:
117
124
  return merged_pool_stats
@@ -154,7 +161,10 @@ async def meta_metrics(request: ApiRequest):
154
161
  workers_available = worker_metrics["available"]
155
162
 
156
163
  http_metrics = HTTP_METRICS_COLLECTOR.get_metrics(
157
- metadata.PROJECT_ID, metadata.HOST_REVISION_ID, metrics_format
164
+ metadata.PROJECT_ID,
165
+ metadata.HOST_REVISION_ID,
166
+ metrics_format,
167
+ metadata.DEPLOYMENT_TYPE,
158
168
  )
159
169
 
160
170
  merged_pool_stats = await meta_pool_stats(metrics_format)
@@ -175,23 +185,24 @@ async def meta_metrics(request: ApiRequest):
175
185
  async with connect() as conn:
176
186
  queue_stats = await Runs.stats(conn)
177
187
 
188
+ labels = f'project_id="{metadata.PROJECT_ID}", revision_id="{metadata.HOST_REVISION_ID}", deployment_type="{metadata.DEPLOYMENT_TYPE}"'
178
189
  metrics.extend(
179
190
  [
180
191
  "# HELP lg_api_num_pending_runs The number of runs currently pending.",
181
192
  "# TYPE lg_api_num_pending_runs gauge",
182
- f'lg_api_num_pending_runs{{project_id="{metadata.PROJECT_ID}", revision_id="{metadata.HOST_REVISION_ID}"}} {queue_stats["n_pending"]}',
193
+ f"lg_api_num_pending_runs{{{labels}}} {queue_stats['n_pending']}",
183
194
  "# HELP lg_api_num_running_runs The number of runs currently running.",
184
195
  "# TYPE lg_api_num_running_runs gauge",
185
- f'lg_api_num_running_runs{{project_id="{metadata.PROJECT_ID}", revision_id="{metadata.HOST_REVISION_ID}"}} {queue_stats["n_running"]}',
196
+ f"lg_api_num_running_runs{{{labels}}} {queue_stats['n_running']}",
186
197
  "# HELP lg_api_pending_runs_wait_time_max The maximum time a run has been pending, in seconds.",
187
198
  "# TYPE lg_api_pending_runs_wait_time_max gauge",
188
- f'lg_api_pending_runs_wait_time_max{{project_id="{metadata.PROJECT_ID}", revision_id="{metadata.HOST_REVISION_ID}"}} {queue_stats.get("pending_runs_wait_time_max_secs") or 0}',
199
+ f"lg_api_pending_runs_wait_time_max{{{labels}}} {queue_stats.get('pending_runs_wait_time_max_secs') or 0}",
189
200
  "# HELP lg_api_pending_runs_wait_time_med The median pending wait time across runs, in seconds.",
190
201
  "# TYPE lg_api_pending_runs_wait_time_med gauge",
191
- f'lg_api_pending_runs_wait_time_med{{project_id="{metadata.PROJECT_ID}", revision_id="{metadata.HOST_REVISION_ID}"}} {queue_stats.get("pending_runs_wait_time_med_secs") or 0}',
202
+ f"lg_api_pending_runs_wait_time_med{{{labels}}} {queue_stats.get('pending_runs_wait_time_med_secs') or 0}",
192
203
  "# HELP lg_api_pending_unblocked_runs_wait_time_max The maximum time a run has been pending excluding runs blocked by another run on the same thread, in seconds.",
193
204
  "# TYPE lg_api_pending_unblocked_runs_wait_time_max gauge",
194
- f'lg_api_pending_unblocked_runs_wait_time_max{{project_id="{metadata.PROJECT_ID}", revision_id="{metadata.HOST_REVISION_ID}"}} {queue_stats.get("pending_unblocked_runs_wait_time_max_secs") or 0}',
205
+ f"lg_api_pending_unblocked_runs_wait_time_max{{{labels}}} {queue_stats.get('pending_unblocked_runs_wait_time_max_secs') or 0}",
195
206
  ]
196
207
  )
197
208
  except Exception as e:
@@ -200,17 +211,18 @@ async def meta_metrics(request: ApiRequest):
200
211
  )
201
212
 
202
213
  if config.N_JOBS_PER_WORKER > 0:
214
+ worker_labels = f'project_id="{metadata.PROJECT_ID}", revision_id="{metadata.HOST_REVISION_ID}", deployment_type="{metadata.DEPLOYMENT_TYPE}"'
203
215
  metrics.extend(
204
216
  [
205
217
  "# HELP lg_api_workers_max The maximum number of workers available.",
206
218
  "# TYPE lg_api_workers_max gauge",
207
- f'lg_api_workers_max{{project_id="{metadata.PROJECT_ID}", revision_id="{metadata.HOST_REVISION_ID}"}} {workers_max}',
219
+ f"lg_api_workers_max{{{worker_labels}}} {workers_max}",
208
220
  "# HELP lg_api_workers_active The number of currently active workers.",
209
221
  "# TYPE lg_api_workers_active gauge",
210
- f'lg_api_workers_active{{project_id="{metadata.PROJECT_ID}", revision_id="{metadata.HOST_REVISION_ID}"}} {workers_active}',
222
+ f"lg_api_workers_active{{{worker_labels}}} {workers_active}",
211
223
  "# HELP lg_api_workers_available The number of available (idle) workers.",
212
224
  "# TYPE lg_api_workers_available gauge",
213
- f'lg_api_workers_available{{project_id="{metadata.PROJECT_ID}", revision_id="{metadata.HOST_REVISION_ID}"}} {workers_available}',
225
+ f"lg_api_workers_available{{{worker_labels}}} {workers_available}",
214
226
  ]
215
227
  )
216
228