langgraph-api 0.8.6__tar.gz → 0.8.7__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 (292) hide show
  1. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/Makefile +1 -1
  2. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/PKG-INFO +4 -6
  3. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/continuous/uv.lock +8 -8
  4. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/constraints.txt +3 -3
  5. langgraph_api-0.8.7/langgraph_api/__init__.py +1 -0
  6. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/api/__init__.py +0 -4
  7. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/auth/custom.py +1 -19
  8. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/auth/middleware.py +1 -1
  9. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/config/__init__.py +0 -15
  10. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/feature_flags.py +3 -8
  11. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/graph.py +0 -51
  12. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/grpc/ops/threads.py +1 -24
  13. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/metrics_datadog.py +0 -19
  14. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/route.py +1 -34
  15. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/schema.py +0 -2
  16. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/stream.py +10 -227
  17. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.py +1 -1
  18. langgraph_api-0.8.7/langgraph_grpc_common/proto/core_api_pb2.py +272 -0
  19. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/core_api_pb2.pyi +5 -127
  20. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/core_api_pb2_grpc.py +1 -1
  21. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/encryption_pb2.pyi +3 -13
  22. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/encryption_pb2_grpc.py +1 -1
  23. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/engine_common_pb2.pyi +3 -119
  24. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/engine_common_pb2_grpc.py +1 -1
  25. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.py +1 -1
  26. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.py +1 -1
  27. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.py +1 -1
  28. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.py +1 -1
  29. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.py +1 -1
  30. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.py +1 -1
  31. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2_grpc.py +1 -1
  32. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.py +1 -1
  33. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.py +1 -1
  34. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.py +1 -1
  35. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/errors_pb2_grpc.py +1 -1
  36. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/openapi.json +0 -311
  37. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/pyproject.toml +3 -9
  38. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/uv.lock +370 -473
  39. langgraph_api-0.8.6/langgraph_api/__init__.py +0 -1
  40. langgraph_api-0.8.6/langgraph_api/api/protocol.py +0 -376
  41. langgraph_api-0.8.6/langgraph_api/protocol/__init__.py +0 -1
  42. langgraph_api-0.8.6/langgraph_api/protocol/capabilities.py +0 -123
  43. langgraph_api-0.8.6/langgraph_api/protocol/constants.py +0 -43
  44. langgraph_api-0.8.6/langgraph_api/protocol/event_normalizers.py +0 -89
  45. langgraph_api-0.8.6/langgraph_api/protocol/namespace.py +0 -48
  46. langgraph_api-0.8.6/langgraph_api/protocol/service.py +0 -900
  47. langgraph_api-0.8.6/langgraph_api/protocol/session.py +0 -1764
  48. langgraph_api-0.8.6/langgraph_api/protocol/state_normalizers.py +0 -385
  49. langgraph_api-0.8.6/langgraph_api/protocol/types.py +0 -168
  50. langgraph_api-0.8.6/langgraph_api/utils/messages.py +0 -62
  51. langgraph_api-0.8.6/langgraph_grpc_common/proto/core_api_pb2.py +0 -272
  52. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/.gitignore +0 -0
  53. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/LICENSE +0 -0
  54. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/README.md +0 -0
  55. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/.gitignore +0 -0
  56. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/Makefile +0 -0
  57. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/README.md +0 -0
  58. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/benchmark-runners/assistant.ts +0 -0
  59. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/benchmark-runners/benchmark-runner.ts +0 -0
  60. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/benchmark-runners/benchmark_profiles.ts +0 -0
  61. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/benchmark-runners/benchmarks.ts +0 -0
  62. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/benchmark-runners/cancel_first_second_completes.ts +0 -0
  63. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/benchmark-runners/enqueued_runs_order.ts +0 -0
  64. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/benchmark-runners/log-failure.ts +0 -0
  65. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/benchmark-runners/meta_workload.ts +0 -0
  66. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/benchmark-runners/stream_write.ts +0 -0
  67. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/benchmark-runners/thread.ts +0 -0
  68. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/benchmark-runners/thread_runs_metadata_search.ts +0 -0
  69. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/benchmark-runners/threads_search_metadata.ts +0 -0
  70. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/benchmark-runners/types.ts +0 -0
  71. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/benchmark-runners/wait_write.ts +0 -0
  72. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/capacity_dd_report.py +0 -0
  73. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/capacity_k6.js +0 -0
  74. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/capacity_runner.mjs +0 -0
  75. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/capacity_slack_report.py +0 -0
  76. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/capacity_urls.mjs +0 -0
  77. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/clean-cli.js +0 -0
  78. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/clean.js +0 -0
  79. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/continuous/README.md +0 -0
  80. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/continuous/pyproject.toml +0 -0
  81. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/continuous/runner.py +0 -0
  82. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/graphs.js +0 -0
  83. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/mixed_workload_k6.js +0 -0
  84. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/mixed_workload_runner.mjs +0 -0
  85. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/package.json +0 -0
  86. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/ramp.js +0 -0
  87. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/reporting/dd_reporting.py +0 -0
  88. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/reporting/slack_slowest_runs.py +0 -0
  89. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/reporting/slack_summary.py +0 -0
  90. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/run_local.sh +0 -0
  91. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/staircase.py +0 -0
  92. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/staircase_step_k6.js +0 -0
  93. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/tsconfig.json +0 -0
  94. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/update-revision.js +0 -0
  95. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/benchmark/weather.js +0 -0
  96. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/custom_store.sql +0 -0
  97. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/forbidden.txt +0 -0
  98. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/hatch_build.py +0 -0
  99. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/healthcheck.py +0 -0
  100. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph-cloud-debugging-20260210132856.zip +0 -0
  101. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/_checkpointer/__init__.py +0 -0
  102. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/_checkpointer/_adapter.py +0 -0
  103. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/_checkpointer/protocol.py +0 -0
  104. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/_factory_utils.py +0 -0
  105. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/api/a2a.py +0 -0
  106. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/api/assistants.py +0 -0
  107. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/api/mcp/__init__.py +0 -0
  108. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/api/mcp/_constants.py +0 -0
  109. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/api/mcp/_handlers.py +0 -0
  110. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/api/mcp/_models.py +0 -0
  111. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/api/mcp/_routes.py +0 -0
  112. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/api/mcp/_sanitizers.py +0 -0
  113. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/api/meta.py +0 -0
  114. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/api/openapi.py +0 -0
  115. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/api/profile.py +0 -0
  116. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/api/runs.py +0 -0
  117. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/api/store.py +0 -0
  118. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/api/threads.py +0 -0
  119. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/api/ui.py +0 -0
  120. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/asgi_transport.py +0 -0
  121. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/asyncio.py +0 -0
  122. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/auth/__init__.py +0 -0
  123. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/auth/errors.py +0 -0
  124. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/auth/langsmith/__init__.py +0 -0
  125. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/auth/langsmith/backend.py +0 -0
  126. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/auth/langsmith/client.py +0 -0
  127. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/auth/noop.py +0 -0
  128. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/auth/studio_user.py +0 -0
  129. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/cache.py +0 -0
  130. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/cli.py +0 -0
  131. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/command.py +0 -0
  132. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/config/_parse.py +0 -0
  133. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/config/schemas.py +0 -0
  134. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/cron_scheduler.py +0 -0
  135. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/encryption/__init__.py +0 -0
  136. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/encryption/aes_json.py +0 -0
  137. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/encryption/context.py +0 -0
  138. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/encryption/custom.py +0 -0
  139. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/encryption/middleware.py +0 -0
  140. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/encryption/shared.py +0 -0
  141. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/errors.py +0 -0
  142. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/grpc/__init__.py +0 -0
  143. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/grpc/client.py +0 -0
  144. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/grpc/generated/core_api_pb2.pyi +0 -0
  145. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/grpc/ops/__init__.py +0 -0
  146. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/grpc/ops/assistants.py +0 -0
  147. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/grpc/ops/cache.py +0 -0
  148. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/grpc/ops/crons.py +0 -0
  149. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/grpc/ops/runs.py +0 -0
  150. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/grpc/server.py +0 -0
  151. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/grpc/servicers/__init__.py +0 -0
  152. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/grpc/servicers/checkpointer.py +0 -0
  153. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/grpc/servicers/encryption.py +0 -0
  154. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/http.py +0 -0
  155. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/http_metrics.py +0 -0
  156. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/http_metrics_utils.py +0 -0
  157. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/js/.gitignore +0 -0
  158. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/js/.prettierrc +0 -0
  159. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/js/__init__.py +0 -0
  160. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/js/base.py +0 -0
  161. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/js/build.mts +0 -0
  162. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/js/client.http.mts +0 -0
  163. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/js/client.mts +0 -0
  164. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/js/errors.py +0 -0
  165. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/js/global.d.ts +0 -0
  166. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/js/package.json +0 -0
  167. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/js/remote.py +0 -0
  168. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/js/schema.py +0 -0
  169. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/js/src/graph.mts +0 -0
  170. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/js/src/load.hooks.mjs +0 -0
  171. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/js/src/preload.mjs +0 -0
  172. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/js/src/utils/experiment-tracing.mts +0 -0
  173. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/js/src/utils/files.mts +0 -0
  174. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/js/src/utils/importMap.mts +0 -0
  175. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
  176. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/js/src/utils/serde.mts +0 -0
  177. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/js/sse.py +0 -0
  178. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/js/traceblock.mts +0 -0
  179. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/js/tsconfig.json +0 -0
  180. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/js/ui.py +0 -0
  181. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/js/yarn.lock +0 -0
  182. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/lc_security/__init__.py +0 -0
  183. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/lc_security/exceptions.py +0 -0
  184. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/lc_security/policy.py +0 -0
  185. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/lc_security/transport.py +0 -0
  186. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/logging.py +0 -0
  187. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/metadata.py +0 -0
  188. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/middleware/__init__.py +0 -0
  189. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/middleware/ensure_store.py +0 -0
  190. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/middleware/http_logger.py +0 -0
  191. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/middleware/private_network.py +0 -0
  192. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/middleware/request_id.py +0 -0
  193. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/models/__init__.py +0 -0
  194. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/models/run.py +0 -0
  195. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/otel_context.py +0 -0
  196. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/patch.py +0 -0
  197. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/queue_entrypoint.py +0 -0
  198. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/release_tags.py +0 -0
  199. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/self_hosted_logs.py +0 -0
  200. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/self_hosted_metrics.py +0 -0
  201. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/serde.py +0 -0
  202. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/server.py +0 -0
  203. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/sse.py +0 -0
  204. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/state.py +0 -0
  205. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/store.py +0 -0
  206. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/timing/__init__.py +0 -0
  207. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/timing/profiler.py +0 -0
  208. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/timing/timer.py +0 -0
  209. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/traceblock.py +0 -0
  210. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/tunneling/cloudflare.py +0 -0
  211. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/utils/__init__.py +0 -0
  212. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/utils/cache.py +0 -0
  213. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/utils/config.py +0 -0
  214. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/utils/errors.py +0 -0
  215. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/utils/extract.py +0 -0
  216. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/utils/future.py +0 -0
  217. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/utils/headers.py +0 -0
  218. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/utils/network.py +0 -0
  219. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/utils/retriable_client.py +0 -0
  220. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/utils/stream_codec.py +0 -0
  221. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/utils/uuids.py +0 -0
  222. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/validation.py +0 -0
  223. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/webhook.py +0 -0
  224. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_api/worker.py +0 -0
  225. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/__init__.py +0 -0
  226. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/checkpointer.py +0 -0
  227. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/conversion/__init__.py +0 -0
  228. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/conversion/_compat.py +0 -0
  229. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/conversion/checkpoint.py +0 -0
  230. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/conversion/config.py +0 -0
  231. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/conversion/durability.py +0 -0
  232. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/conversion/struct.py +0 -0
  233. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/conversion/value.py +0 -0
  234. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/__init__.py +0 -0
  235. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/checkpointer_pb2.py +0 -0
  236. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/checkpointer_pb2.pyi +0 -0
  237. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.pyi +0 -0
  238. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/core_api_pb2_grpc.pyi +0 -0
  239. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/encryption_pb2.py +0 -0
  240. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/encryption_pb2_grpc.pyi +0 -0
  241. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/engine_common_pb2.py +0 -0
  242. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/engine_common_pb2_grpc.pyi +0 -0
  243. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.py +0 -0
  244. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.pyi +0 -0
  245. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.pyi +0 -0
  246. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_control_signal_pb2.py +0 -0
  247. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_control_signal_pb2.pyi +0 -0
  248. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.pyi +0 -0
  249. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.py +0 -0
  250. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.pyi +0 -0
  251. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.pyi +0 -0
  252. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_durability_pb2.py +0 -0
  253. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_durability_pb2.pyi +0 -0
  254. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.pyi +0 -0
  255. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.py +0 -0
  256. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.pyi +0 -0
  257. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.pyi +0 -0
  258. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_run_status_pb2.py +0 -0
  259. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_run_status_pb2.pyi +0 -0
  260. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.pyi +0 -0
  261. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2.py +0 -0
  262. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2.pyi +0 -0
  263. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_store_operation_entry_type_pb2_grpc.pyi +0 -0
  264. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_stream_mode_pb2.py +0 -0
  265. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_stream_mode_pb2.pyi +0 -0
  266. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.pyi +0 -0
  267. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_thread_status_pb2.py +0 -0
  268. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_thread_status_pb2.pyi +0 -0
  269. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.pyi +0 -0
  270. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.py +0 -0
  271. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.pyi +0 -0
  272. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.pyi +0 -0
  273. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/errors_pb2.py +0 -0
  274. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/errors_pb2.pyi +0 -0
  275. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/proto/errors_pb2_grpc.pyi +0 -0
  276. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_grpc_common/serde.py +0 -0
  277. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_license/__init__.py +0 -0
  278. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_license/validation.py +0 -0
  279. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_runtime/__init__.py +0 -0
  280. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_runtime/checkpoint.py +0 -0
  281. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_runtime/database.py +0 -0
  282. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_runtime/lifespan.py +0 -0
  283. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_runtime/metrics.py +0 -0
  284. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_runtime/ops.py +0 -0
  285. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_runtime/queue.py +0 -0
  286. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_runtime/retry.py +0 -0
  287. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_runtime/routes.py +0 -0
  288. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/langgraph_runtime/store.py +0 -0
  289. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/logging.json +0 -0
  290. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/scripts/build_wheel.py +0 -0
  291. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/scripts/create_license.py +0 -0
  292. {langgraph_api-0.8.6 → langgraph_api-0.8.7}/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", "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"}'
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"}'
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,20 +1,19 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langgraph-api
3
- Version: 0.8.6
3
+ Version: 0.8.7
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.81.0,>=1.80.0
11
- Requires-Dist: grpcio-tools==1.80.0
12
- Requires-Dist: grpcio<1.81.0,>=1.80.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
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
18
17
  Requires-Dist: langgraph-checkpoint<5,>=3.0.1
19
18
  Requires-Dist: langgraph-runtime-inmem<0.29.0,>=0.28.0
20
19
  Requires-Dist: langgraph-sdk>=0.3.5
@@ -35,7 +34,6 @@ Requires-Dist: uuid-utils>=0.12.0
35
34
  Requires-Dist: uvicorn>=0.26.0
36
35
  Requires-Dist: uvloop>=0.18.0; platform_system != 'Windows'
37
36
  Requires-Dist: watchfiles>=0.13
38
- Requires-Dist: websockets>=13.0
39
37
  Requires-Dist: zstandard>=0.23.0
40
38
  Description-Content-Type: text/markdown
41
39
 
@@ -25,14 +25,14 @@ wheels = [
25
25
 
26
26
  [[package]]
27
27
  name = "click"
28
- version = "8.3.3"
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/bb/63/f9e1ea081ce35720d8b92acde70daaedace594dc93b693c869e0d5910718/click-8.3.3.tar.gz", hash = "sha256:398329ad4837b2ff7cbe1dd166a4c0f8900c3ca3a218de04466f38f6497f18a2", size = 328061, upload-time = "2026-04-22T15:11:27.506Z" }
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/ae/44/c1221527f6a71a01ec6fbad7fa78f1d50dfa02217385cf0fa3eec7087d59/click-8.3.3-py3-none-any.whl", hash = "sha256:a2bf429bb3033c89fa4936ffb35d5cb471e3719e1f3c8a7c3fff0b8314305613", size = 110502, upload-time = "2026-04-22T15:11:25.044Z" },
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,25 +120,25 @@ dependencies = [
120
120
 
121
121
  [package.metadata]
122
122
  requires-dist = [
123
- { name = "click", specifier = ">=8.3.3" },
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
- { name = "langgraph-sdk", specifier = ">=0.3.13" },
126
+ { name = "langgraph-sdk", specifier = ">=0.2.10" },
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.13"
133
+ version = "0.3.12"
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/0e/db/77a45127dddcfea5e4256ba916182903e4c31dc4cfca305b8c386f0a9e53/langgraph_sdk-0.3.13.tar.gz", hash = "sha256:419ca5663eec3cec192ad194ac0647c0c826866b446073eb40f384f950986cd5", size = 196360, upload-time = "2026-04-07T20:34:18.766Z" }
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" }
140
140
  wheels = [
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" },
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" },
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.80.0,<1.81.0
22
- grpcio-tools>=1.80.0,<1.81.0
23
- grpcio-health-checking>=1.80.0,<1.81.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
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.7"
@@ -19,7 +19,6 @@ 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
23
22
  from langgraph_api.api.runs import runs_routes
24
23
  from langgraph_api.api.store import store_routes
25
24
  from langgraph_api.api.threads import threads_routes
@@ -132,8 +131,6 @@ if HTTP_CONFIG:
132
131
  protected_routes.extend(mcp_routes)
133
132
  if not HTTP_CONFIG.get("disable_a2a"):
134
133
  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)
137
134
  else:
138
135
  protected_routes.extend(assistants_routes)
139
136
  protected_routes.extend(runs_routes)
@@ -144,7 +141,6 @@ else:
144
141
  protected_routes.extend(ui_routes)
145
142
  protected_routes.extend(mcp_routes)
146
143
  protected_routes.extend(a2a_routes)
147
- protected_routes.extend(protocol_routes)
148
144
 
149
145
 
150
146
  def _metadata_fn(app_import: str) -> dict[str, str]:
@@ -178,26 +178,8 @@ class CustomAuthBackend(AuthenticationBackend):
178
178
  if self.fn is None:
179
179
  return None
180
180
  try:
181
- # ``starlette.requests.Request`` asserts ``scope["type"] ==
182
- # "http"`` in its constructor, so constructing one from a
183
- # WebSocket scope raises ``AssertionError``. Only build it
184
- # when the handler actually declared a ``request`` parameter
185
- # AND the scope is HTTP; reject WebSocket scopes with a
186
- # clear auth-layer error when the handler asks for one.
187
- request_obj: Request | None = None
188
- if self._param_names and "request" in self._param_names:
189
- if conn.scope.get("type") == "http":
190
- request_obj = Request(conn.scope)
191
- else:
192
- raise AuthError(
193
- "Custom auth handler declares `request: Request`, "
194
- "which is not supported for WebSocket connections. "
195
- "Use `headers`, `authorization`, `scope`, or "
196
- "`scopes` parameters instead.",
197
- status_code=403,
198
- )
199
181
  args = _extract_arguments_from_scope(
200
- conn.scope, self._param_names, request=request_obj
182
+ conn.scope, self._param_names, request=Request(conn.scope)
201
183
  )
202
184
  response = await self.fn(**args)
203
185
  return _normalize_auth_response(response)
@@ -52,7 +52,7 @@ class ConditionalAuthenticationMiddleware(AuthenticationMiddleware):
52
52
  await self.app(scope, receive, send)
53
53
  return
54
54
 
55
- if scope["path"].startswith("/ui") and scope.get("method") == "GET":
55
+ if scope["path"].startswith("/ui") and scope["method"] == "GET":
56
56
  # disable auth for UI asset requests
57
57
  await self.app(scope, receive, send)
58
58
  return
@@ -182,21 +182,6 @@ LSD_GRPC_SERVER_MAX_SEND_MSG_BYTES = env(
182
182
  "LSD_GRPC_SERVER_MAX_SEND_MSG_BYTES", cast=int, default=300 * 1024 * 1024
183
183
  )
184
184
  LSD_PUBLISH_QUEUE_SIZE = env("LSD_PUBLISH_QUEUE_SIZE", cast=int, default=512)
185
- # Per-run protocol v2 event buffer size. Each ``RunProtocolSession``
186
- # retains at most this many normalized protocol events for
187
- # reconnecting clients to replay via ``since`` / ``Last-Event-ID``.
188
- # When the limit is exceeded, oldest events are evicted; reconnects
189
- # whose cursor falls behind the buffer head receive a ``resume_gap``
190
- # error. Operators running graphs that emit >10k events per run can
191
- # bump this to avoid gaps on flaky networks, at the cost of memory
192
- # (roughly ``size * avg_event_bytes`` per active run). See
193
- # ``langgraph_api.protocol.constants.DEFAULT_MAX_BUFFER_SIZE``.
194
- _DEFAULT_PROTOCOL_V2_BUFFER_SIZE = 10_000
195
- LSD_PROTOCOL_V2_BUFFER_SIZE = env(
196
- "LSD_PROTOCOL_V2_BUFFER_SIZE",
197
- cast=int,
198
- default=_DEFAULT_PROTOCOL_V2_BUFFER_SIZE,
199
- )
200
185
  # Not in public docs: infrastructure, set by platform
201
186
  GRPC_CLIENT_MAX_RECV_MSG_BYTES = env(
202
187
  "GRPC_CLIENT_MAX_RECV_MSG_BYTES", cast=int, default=300 * 1024 * 1024
@@ -1,5 +1,4 @@
1
1
  import os
2
- import re
3
2
 
4
3
  from langgraph.version import __version__
5
4
 
@@ -25,13 +24,9 @@ FF_USE_JS_API = os.getenv("FF_USE_JS_API", "false").lower() in (
25
24
  )
26
25
 
27
26
  # In langgraph <= 1.0.3, we automatically subscribed to updates stream events to surface interrupts. In langgraph 1.0.4 we include interrupts in values events (which we are automatically subscribed to), so we no longer need to implicitly subscribe to updates stream events
28
- # Strip prerelease suffixes (e.g. "0a5" -> 0) so versions like 1.2.0a5 still
29
- # parse correctly; fall back to (0, 0, 0) only if no leading digits at all.
30
- _LEADING_DIGITS = re.compile(r"^\d+")
27
+ # If the version is not valid, e.g. rc/alpha/etc., we default to 0.0.0
31
28
  try:
32
- LANGGRAPH_PY_PATCH = tuple(
33
- int(_LEADING_DIGITS.match(p).group()) for p in __version__.split(".")[:3]
34
- )
35
- except (AttributeError, ValueError):
29
+ LANGGRAPH_PY_PATCH = tuple(map(int, __version__.split(".")[:3]))
30
+ except ValueError:
36
31
  LANGGRAPH_PY_PATCH = (0, 0, 0)
37
32
  UPDATES_NEEDED_FOR_INTERRUPTS = LANGGRAPH_PY_PATCH <= (1, 0, 3)
@@ -56,20 +56,6 @@ GRAPHS: dict[str, GraphValue] = {}
56
56
  NAMESPACE_GRAPH = UUID("6ba7b821-9dad-11d1-80b4-00c04fd430c8")
57
57
  SYSTEM_ASSISTANT_IDS: set[str] = set()
58
58
 
59
- # Map of graph_id → zero-arg factory returning a fresh list of custom
60
- # ``StreamTransformer`` instances, populated from a module-level
61
- # ``stream_transformers`` symbol on the graph's source module. Used by
62
- # the Protocol v2 streaming path in ``stream.py`` to wire user-supplied
63
- # projections (``StreamChannel`` / ``EventLog``) into ``StreamingHandler``
64
- # so events from the user's transformers surface on ``custom:<name>``
65
- # subscriptions on the wire.
66
- #
67
- # We require a factory (rather than accepting raw transformer instances)
68
- # because transformers are stateful — sharing one instance across
69
- # concurrent runs would cause state bleed. The factory is invoked once
70
- # per run and the returned list is handed straight to ``StreamMux``.
71
- GRAPH_STREAM_TRANSFORMERS: dict[str, Callable[[], list[Any]]] = {}
72
-
73
59
 
74
60
  async def register_graph(
75
61
  graph_id: str,
@@ -843,46 +829,9 @@ def _graph_from_spec(spec: GraphSpec) -> GraphValue:
843
829
  f"Could not find a Graph in module at path: {spec.path}"
844
830
  )
845
831
 
846
- _register_stream_transformers_from_module(spec.id, module)
847
832
  return graph
848
833
 
849
834
 
850
- def _register_stream_transformers_from_module(graph_id: str, module: Any) -> None:
851
- """Populate ``GRAPH_STREAM_TRANSFORMERS`` from an optional module export.
852
-
853
- Graph authors opt in by defining a ``stream_transformers`` symbol
854
- at module scope. The symbol must be a zero-arg callable that returns
855
- a fresh list of either:
856
-
857
- * ``langgraph.stream.StreamTransformer`` **factories** — callables of
858
- the shape ``(scope: tuple[str, ...]) -> StreamTransformer``
859
- (``StreamTransformer`` subclasses are themselves valid factories).
860
- This is the preferred form and mirrors the JS
861
- ``streamTransformers: [createMyTransformer]`` convention.
862
- * ``StreamTransformer`` **instances** — back-compat form. Each bare
863
- instance is auto-wrapped by :func:`_coerce_stream_transformer_factory`
864
- into a factory that returns the same instance for every mux scope,
865
- so a single ``custom:<name>`` channel is shared across the whole
866
- run (rather than fragmenting into a fresh channel per subgraph).
867
-
868
- Anything else is ignored (with a warning on local dev) so bad
869
- wiring doesn't break the graph.
870
- """
871
- factory = getattr(module, "stream_transformers", None)
872
- if factory is None:
873
- return
874
- if not callable(factory):
875
- logger.warning(
876
- "Module exports ``stream_transformers`` but it is not a callable — "
877
- "ignoring. Define it as ``def stream_transformers(): return [...]`` "
878
- "returning a fresh list of StreamTransformer instances per call.",
879
- graph_id=graph_id,
880
- kind=type(factory).__name__,
881
- )
882
- return
883
- GRAPH_STREAM_TRANSFORMERS[graph_id] = factory
884
-
885
-
886
835
  @functools.lru_cache(maxsize=1)
887
836
  def _get_init_embeddings() -> Callable[[str, ...], "Embeddings"] | None:
888
837
  try:
@@ -933,28 +933,6 @@ class Threads(Authenticated):
933
933
  Yields:
934
934
  Tuples of (event_bytes, message_bytes, stream_id_bytes|None)
935
935
  """
936
- async for (
937
- event_bytes,
938
- message_bytes,
939
- stream_id_bytes,
940
- _run_id,
941
- ) in Threads.Stream.join_protocol(
942
- thread_id,
943
- stream_modes=stream_modes,
944
- last_event_id=last_event_id,
945
- ctx=ctx,
946
- ):
947
- yield (event_bytes, message_bytes, stream_id_bytes)
948
-
949
- @staticmethod
950
- async def join_protocol(
951
- thread_id: UUID | str,
952
- *,
953
- stream_modes: list[str] | None = None,
954
- last_event_id: str | None = None,
955
- ctx: Any = None,
956
- ):
957
- """Stream thread events with their run id for protocol demux."""
958
936
  auth_filters = await Threads.Stream.handle_event(
959
937
  ctx,
960
938
  "read",
@@ -983,13 +961,12 @@ class Threads(Authenticated):
983
961
  if event.HasField("stream_id")
984
962
  else None
985
963
  )
986
- run_id = event.run_id if event.HasField("run_id") else None
987
964
 
988
965
  # Transform error events from gRPC format to older Python format
989
966
  if event.event_type == "error":
990
967
  message_bytes = transform_grpc_error_event(message_bytes)
991
968
 
992
- yield (event_bytes, message_bytes, stream_id_bytes, run_id)
969
+ yield (event_bytes, message_bytes, stream_id_bytes)
993
970
  except Exception as e:
994
971
  if isinstance(e, AioRpcError):
995
972
  _handle_grpc_error(e)
@@ -130,18 +130,6 @@ COUNTER_SERVER_REQUESTED_TO_STOP = def_counter(
130
130
  "server_requested_to_stop_counter", METRIC_TIER_INFO
131
131
  )
132
132
  COUNTER_SERVER_STOPPED = def_counter("server_stopped_counter", METRIC_TIER_INFO)
133
- COUNTER_PROTOCOL_V2_BUFFER_EVICTED = def_counter(
134
- "protocol_v2_buffer_evicted_counter", METRIC_TIER_INFO
135
- )
136
- COUNTER_PROTOCOL_V2_EVENT_EMITTED = def_counter(
137
- "protocol_v2_event_emitted_counter", METRIC_TIER_DEBUG
138
- )
139
- COUNTER_PROTOCOL_V2_RESUME_GAP = def_counter(
140
- "protocol_v2_resume_gap_counter", METRIC_TIER_INFO
141
- )
142
- COUNTER_PROTOCOL_V2_TRANSPORT_SEND_FAILURE = def_counter(
143
- "protocol_v2_transport_send_failure_counter", METRIC_TIER_INFO
144
- )
145
133
 
146
134
  # Pre-defined latency metrics.
147
135
  LATENCY_RUN_EXECUTION = def_latency("run_execution_latency", METRIC_TIER_INFO)
@@ -159,17 +147,10 @@ GAUGE_WORKERS_AVAILABLE = def_gauge("workers_available", METRIC_TIER_CRITICAL)
159
147
  GAUGE_PUBLISH_QUEUE_AVAILABILITY = def_gauge(
160
148
  "publish_queue_availability", METRIC_TIER_CRITICAL
161
149
  )
162
- # Protocol v2 sessions retain a bounded replay buffer per run. Track the
163
- # observed occupancy so operators can tune LSD_PROTOCOL_V2_BUFFER_SIZE before
164
- # reconnects start seeing resume gaps.
165
- GAUGE_PROTOCOL_V2_BUFFER_SIZE = def_gauge("protocol_v2_buffer_size", METRIC_TIER_DEBUG)
166
150
 
167
151
 
168
152
  # Pre-defined histogram metrics.
169
153
  HISTOGRAM_STREAM_DATA_SIZE = def_histogram("stream_data_size_bytes", METRIC_TIER_DEBUG)
170
- HISTOGRAM_PROTOCOL_V2_REPLAYED_EVENTS = def_histogram(
171
- "protocol_v2_replayed_events", METRIC_TIER_DEBUG
172
- )
173
154
 
174
155
 
175
156
  def _normalize_emitting_tier(value: int) -> int:
@@ -12,7 +12,7 @@ from starlette.exceptions import HTTPException
12
12
  from starlette.middleware import Middleware
13
13
  from starlette.requests import Request
14
14
  from starlette.responses import JSONResponse
15
- from starlette.routing import Route, WebSocketRoute, compile_path, get_name
15
+ from starlette.routing import Route, compile_path, get_name
16
16
  from starlette.types import ASGIApp, Receive, Scope, Send
17
17
 
18
18
  from langgraph_api import config
@@ -172,39 +172,6 @@ class ApiRoute(Route):
172
172
  return await super().handle(scope, receive, send)
173
173
 
174
174
 
175
- class ApiWebSocketRoute(WebSocketRoute):
176
- """WebSocket route that propagates the auth context var.
177
-
178
- Mirrors ``ApiRoute.handle`` for WebSocket handlers: starlette's
179
- ``AuthenticationMiddleware`` populates ``scope["user"]`` and
180
- ``scope["auth"]`` on the upgrade, but code that reads auth via
181
- the ``AuthContext`` ContextVar (``get_auth_ctx``) still sees
182
- ``None`` because the default ``WebSocketRoute.handle`` does not
183
- enter the ``with_user`` context manager.
184
-
185
- Without this wrapper, ops like ``Runs.search`` / ``Threads.State.get``
186
- invoked from the WebSocket handler path read ``None`` for the user
187
- and silently return empty results or fail authorization. This is the
188
- WebSocket analog of ``ApiRoute`` and must be used for any WS route
189
- that reaches the ops layer.
190
- """
191
-
192
- async def handle(self, scope: Scope, receive: Receive, send: Send) -> None:
193
- from langgraph_api.logging import set_logging_context # noqa: PLC0415
194
-
195
- scope["route"] = self.path
196
- set_logging_context({"path": self.path, "method": "WEBSOCKET"})
197
- route_pattern = f"{scope.get('root_path', '')}{self.path}"
198
- _name_otel_span(scope, route_pattern)
199
- ctx = get_auth_ctx()
200
- if ctx:
201
- user, auth = ctx.user, ctx.permissions
202
- else:
203
- user, auth = scope.get("user"), scope.get("auth")
204
- async with with_user(user, auth):
205
- return await super().handle(scope, receive, send)
206
-
207
-
208
175
  def _name_otel_span(scope: Scope, route_pattern: str):
209
176
  """Best-effort rename of the active OTEL server span to include the route.
210
177
 
@@ -25,8 +25,6 @@ StreamMode = Literal[
25
25
  "checkpoints",
26
26
  "custom",
27
27
  "messages-tuple",
28
- "tools",
29
- "lifecycle",
30
28
  ]
31
29
 
32
30
  ThreadStreamMode = Literal["lifecycle", "run_modes", "state_update"]