langgraph-api 0.5.3__tar.gz → 0.5.9__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.

Potentially problematic release.


This version of langgraph-api might be problematic. Click here for more details.

Files changed (160) hide show
  1. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/Makefile +3 -2
  2. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/PKG-INFO +3 -3
  3. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/benchmark-runners/assistant.js +2 -2
  4. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/benchmark-runners/benchmark-runner.js +1 -1
  5. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/burst.js +1 -1
  6. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/clean.js +1 -1
  7. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/ramp.js +2 -2
  8. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/update-revision.js +5 -0
  9. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/constraints.txt +1 -1
  10. langgraph_api-0.5.9/langgraph_api/__init__.py +1 -0
  11. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/api/a2a.py +3 -2
  12. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/api/assistants.py +1 -1
  13. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/api/meta.py +6 -0
  14. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/api/threads.py +1 -1
  15. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/asgi_transport.py +1 -1
  16. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/auth/custom.py +29 -24
  17. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/config.py +3 -0
  18. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/feature_flags.py +6 -0
  19. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/graph.py +1 -1
  20. {langgraph_api-0.5.3/langgraph_api/grpc_ops → langgraph_api-0.5.9/langgraph_api/grpc}/config_conversion.py +12 -9
  21. langgraph_api-0.5.9/langgraph_api/grpc/generated/core_api_pb2.py +273 -0
  22. {langgraph_api-0.5.3/langgraph_api/grpc_ops → langgraph_api-0.5.9/langgraph_api/grpc}/generated/core_api_pb2.pyi +21 -45
  23. langgraph_api-0.5.9/langgraph_api/grpc/generated/engine_common_pb2.py +185 -0
  24. {langgraph_api-0.5.3/langgraph_api/grpc_ops → langgraph_api-0.5.9/langgraph_api/grpc}/generated/engine_common_pb2.pyi +26 -54
  25. langgraph_api-0.5.9/langgraph_api/grpc/generated/enum_durability_pb2.py +37 -0
  26. langgraph_api-0.5.9/langgraph_api/grpc/generated/enum_durability_pb2.pyi +16 -0
  27. langgraph_api-0.5.9/langgraph_api/grpc/generated/enum_durability_pb2_grpc.py +24 -0
  28. langgraph_api-0.5.9/langgraph_api/grpc/generated/enum_multitask_strategy_pb2.py +37 -0
  29. langgraph_api-0.5.9/langgraph_api/grpc/generated/enum_multitask_strategy_pb2.pyi +16 -0
  30. langgraph_api-0.5.9/langgraph_api/grpc/generated/enum_multitask_strategy_pb2_grpc.py +24 -0
  31. langgraph_api-0.5.9/langgraph_api/grpc/generated/enum_run_status_pb2.py +37 -0
  32. langgraph_api-0.5.9/langgraph_api/grpc/generated/enum_run_status_pb2.pyi +22 -0
  33. langgraph_api-0.5.9/langgraph_api/grpc/generated/enum_run_status_pb2_grpc.py +24 -0
  34. langgraph_api-0.5.9/langgraph_api/grpc/ops/__init__.py +180 -0
  35. langgraph_api-0.5.9/langgraph_api/grpc/ops/assistants.py +419 -0
  36. langgraph_api-0.5.9/langgraph_api/grpc/ops/threads.py +505 -0
  37. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/ui.py +1 -1
  38. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/queue_entrypoint.py +2 -2
  39. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/schema.py +2 -2
  40. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/self_hosted_metrics.py +48 -2
  41. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/serde.py +3 -3
  42. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/worker.py +1 -1
  43. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/pyproject.toml +2 -2
  44. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/uv.lock +65 -65
  45. langgraph_api-0.5.3/langgraph_api/__init__.py +0 -1
  46. langgraph_api-0.5.3/langgraph_api/grpc_ops/generated/core_api_pb2.py +0 -275
  47. langgraph_api-0.5.3/langgraph_api/grpc_ops/generated/engine_common_pb2.py +0 -191
  48. langgraph_api-0.5.3/langgraph_api/grpc_ops/ops.py +0 -1045
  49. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/.gitignore +0 -0
  50. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/LICENSE +0 -0
  51. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/README.md +0 -0
  52. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/.gitignore +0 -0
  53. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/Makefile +0 -0
  54. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/README.md +0 -0
  55. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/benchmark-runners/benchmarks.js +0 -0
  56. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/benchmark-runners/stream_write.js +0 -0
  57. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/benchmark-runners/wait_write.js +0 -0
  58. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/capacity_k6.js +0 -0
  59. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/capacity_runner.mjs +0 -0
  60. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/capacity_urls.mjs +0 -0
  61. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/graphs.js +0 -0
  62. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/package.json +0 -0
  63. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/reporting/dd_reporting.py +0 -0
  64. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/benchmark/weather.js +0 -0
  65. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/forbidden.txt +0 -0
  66. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/healthcheck.py +0 -0
  67. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/api/__init__.py +0 -0
  68. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/api/mcp.py +0 -0
  69. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/api/openapi.py +0 -0
  70. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/api/runs.py +0 -0
  71. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/api/store.py +0 -0
  72. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/api/ui.py +0 -0
  73. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/asyncio.py +0 -0
  74. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/auth/__init__.py +0 -0
  75. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/auth/langsmith/__init__.py +0 -0
  76. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/auth/langsmith/backend.py +0 -0
  77. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/auth/langsmith/client.py +0 -0
  78. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/auth/middleware.py +0 -0
  79. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/auth/noop.py +0 -0
  80. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/auth/studio_user.py +0 -0
  81. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/cli.py +0 -0
  82. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/command.py +0 -0
  83. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/cron_scheduler.py +0 -0
  84. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/errors.py +0 -0
  85. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/executor_entrypoint.py +0 -0
  86. {langgraph_api-0.5.3/langgraph_api/grpc_ops → langgraph_api-0.5.9/langgraph_api/grpc}/__init__.py +0 -0
  87. {langgraph_api-0.5.3/langgraph_api/grpc_ops → langgraph_api-0.5.9/langgraph_api/grpc}/client.py +0 -0
  88. {langgraph_api-0.5.3/langgraph_api/grpc_ops → langgraph_api-0.5.9/langgraph_api/grpc}/generated/__init__.py +0 -0
  89. {langgraph_api-0.5.3/langgraph_api/grpc_ops → langgraph_api-0.5.9/langgraph_api/grpc}/generated/core_api_pb2_grpc.py +0 -0
  90. {langgraph_api-0.5.3/langgraph_api/grpc_ops → langgraph_api-0.5.9/langgraph_api/grpc}/generated/engine_common_pb2_grpc.py +0 -0
  91. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/http.py +0 -0
  92. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/http_metrics.py +0 -0
  93. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/http_metrics_utils.py +0 -0
  94. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/.gitignore +0 -0
  95. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/.prettierrc +0 -0
  96. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/__init__.py +0 -0
  97. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/base.py +0 -0
  98. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/build.mts +0 -0
  99. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/client.http.mts +0 -0
  100. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/client.mts +0 -0
  101. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/errors.py +0 -0
  102. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/global.d.ts +0 -0
  103. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/package.json +0 -0
  104. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/remote.py +0 -0
  105. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/schema.py +0 -0
  106. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/src/graph.mts +0 -0
  107. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/src/load.hooks.mjs +0 -0
  108. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/src/preload.mjs +0 -0
  109. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/src/utils/files.mts +0 -0
  110. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/src/utils/importMap.mts +0 -0
  111. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
  112. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/src/utils/serde.mts +0 -0
  113. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/sse.py +0 -0
  114. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/traceblock.mts +0 -0
  115. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/tsconfig.json +0 -0
  116. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/js/yarn.lock +0 -0
  117. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/logging.py +0 -0
  118. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/metadata.py +0 -0
  119. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/middleware/__init__.py +0 -0
  120. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/middleware/http_logger.py +0 -0
  121. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/middleware/private_network.py +0 -0
  122. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/middleware/request_id.py +0 -0
  123. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/models/__init__.py +0 -0
  124. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/models/run.py +0 -0
  125. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/patch.py +0 -0
  126. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/route.py +0 -0
  127. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/self_hosted_logs.py +0 -0
  128. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/server.py +0 -0
  129. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/sse.py +0 -0
  130. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/state.py +0 -0
  131. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/store.py +0 -0
  132. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/stream.py +0 -0
  133. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/thread_ttl.py +0 -0
  134. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/traceblock.py +0 -0
  135. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/tunneling/cloudflare.py +0 -0
  136. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/utils/__init__.py +0 -0
  137. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/utils/cache.py +0 -0
  138. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/utils/config.py +0 -0
  139. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/utils/errors.py +0 -0
  140. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/utils/future.py +0 -0
  141. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/utils/headers.py +0 -0
  142. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/utils/retriable_client.py +0 -0
  143. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/utils/stream_codec.py +0 -0
  144. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/utils/uuids.py +0 -0
  145. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/validation.py +0 -0
  146. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_api/webhook.py +0 -0
  147. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_license/__init__.py +0 -0
  148. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_license/validation.py +0 -0
  149. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_runtime/__init__.py +0 -0
  150. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_runtime/checkpoint.py +0 -0
  151. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_runtime/database.py +0 -0
  152. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_runtime/lifespan.py +0 -0
  153. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_runtime/metrics.py +0 -0
  154. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_runtime/ops.py +0 -0
  155. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_runtime/queue.py +0 -0
  156. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_runtime/retry.py +0 -0
  157. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/langgraph_runtime/store.py +0 -0
  158. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/logging.json +0 -0
  159. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/openapi.json +0 -0
  160. {langgraph_api-0.5.3 → langgraph_api-0.5.9}/scripts/create_license.py +0 -0
@@ -2,8 +2,8 @@
2
2
 
3
3
  # Environment variables
4
4
  FF_USE_CORE_API ?= false
5
- LANGSERVE_GRAPHS_ALL = '{"agent": "./tests/graphs/agent.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", "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"}'
6
- LANGSERVE_GRAPHS_AUTH = '{"agent": "./tests/graphs/agent.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"}'
5
+ LANGSERVE_GRAPHS_ALL = '{"agent": {"path": "./tests/graphs/agent.py:graph", "description": "agent"}, "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", "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"}'
6
+ LANGSERVE_GRAPHS_AUTH = '{"agent": {"path": "./tests/graphs/agent.py:graph", "description": "agent"}, "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", "functional_fibonacci": "./tests/graphs/functional_fibonacci.py:fibonacci", "state_graph_fibonacci": "./tests/graphs/state_graph_fibonacci.py:fibonacci"}'
7
7
 
8
8
  # Go server management
9
9
  build-go-server:
@@ -217,6 +217,7 @@ start-js-server:
217
217
  cd ../public-api-server-js && FF_USE_CORE_API=true \
218
218
  LANGSERVE_GRAPHS=$(LANGSERVE_GRAPHS_ALL) \
219
219
  LANGGRAPH_CONFIG='{"agent": {"configurable": {"model_name": "openai"}}}' \
220
+ FF_USE_JS_API=true \
220
221
  PORT=9123 yarn start
221
222
 
222
223
  VERSION_KIND ?= patch
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langgraph-api
3
- Version: 0.5.3
3
+ Version: 0.5.9
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
@@ -12,8 +12,8 @@ Requires-Dist: grpcio<2.0.0,>=1.75.0
12
12
  Requires-Dist: httpx>=0.25.0
13
13
  Requires-Dist: jsonschema-rs<0.30,>=0.20.0
14
14
  Requires-Dist: langchain-core>=0.3.64
15
- Requires-Dist: langgraph-checkpoint<4,>=3
16
- Requires-Dist: langgraph-runtime-inmem<0.17.0,>=0.16.0
15
+ Requires-Dist: langgraph-checkpoint<4,>=3.0.1
16
+ Requires-Dist: langgraph-runtime-inmem<0.18.0,>=0.17.0
17
17
  Requires-Dist: langgraph-sdk>=0.2.0
18
18
  Requires-Dist: langgraph<2,>=0.4.10
19
19
  Requires-Dist: langsmith>=0.3.45
@@ -59,7 +59,7 @@ export class Assistant extends BenchmarkRunner {
59
59
  'Patch response contains the correct assistant': (r) => r.patchResponse.json().assistant_id === result.assistantId,
60
60
  'Get response 2 contains the correct assistant': (r) => r.getResponse2.json().assistant_id === result.assistantId,
61
61
  'Get response 2 contains the new description': (r) => r.getResponse2.json().metadata.description != result.getResponse.json().metadata.description && result.getResponse2.json().metadata.description === result.patchResponse.json().metadata.description,
62
- 'Get response 2 contains the correct created_by': (r) => r.getResponse2.json().metadata.created_by === 'josh',
62
+ 'Get response 2 contains the correct created_by': (r) => r.getResponse2.json().metadata.created_by === 'benchmark',
63
63
  'Count response contains the correct number of assistants': (r) => parseInt(r.countResponse.json()) === 1,
64
64
  'Delete response is successful': (r) => r.deleteResponse.status === 204,
65
65
  });
@@ -68,7 +68,7 @@ export class Assistant extends BenchmarkRunner {
68
68
  }
69
69
 
70
70
  if (!success) {
71
- if (result.searchResponse.status >= 500 || result.getResponse.status >= 500 || result.patchResponse.status >= 500 || result.getResponse2.status >= 500 || result.countResponse.status >= 500 || result.deleteResponse.status >= 500) {
71
+ if (result.searchResponse.status == 502 || result.getResponse.status == 502 || result.patchResponse.status == 502 || result.getResponse2.status == 502 || result.countResponse.status == 502 || result.deleteResponse.status == 502) {
72
72
  errorMetrics.server_errors.add(1);
73
73
  console.log(`Server error: ${result.searchResponse.status}, ${result.getResponse.status}, ${result.patchResponse.status}, ${result.getResponse2.status}, ${result.countResponse.status}, ${result.deleteResponse.status}`);
74
74
  } else if (result.searchResponse.status === 408 || result.getResponse.status === 408 || result.patchResponse.status === 408 || result.getResponse2.status === 408 || result.countResponse.status === 408 || result.deleteResponse.status === 408) {
@@ -4,7 +4,7 @@
4
4
  export class BenchmarkRunner {
5
5
  /**
6
6
  * Run the benchmark type.
7
- * @param {string} baseUrl - The base URL of the LangGraph server.
7
+ * @param {string} baseUrl - The base URL of the Agent Server.
8
8
  * @param {any} requestParams - The parameters to use for the request. Includes headers and other config like timeout.
9
9
  * @param {any} benchmarkGraphOptions - The options for the benchmark graph.
10
10
  * @returns {any} - The result of the benchmark type. This format will vary by benchmark type.
@@ -13,7 +13,7 @@ const serverErrors = new Counter('server_errors');
13
13
  const otherErrors = new Counter('other_errors');
14
14
  const burstSuccessRate = new Rate('burst_success_rate');
15
15
 
16
- // URL of your LangGraph server
16
+ // URL of your Agent Server
17
17
  const BASE_URL = __ENV.BASE_URL || 'http://localhost:9123';
18
18
  // LangSmith API key only needed with a custom server endpoint
19
19
  const LANGSMITH_API_KEY = __ENV.LANGSMITH_API_KEY;
@@ -3,7 +3,7 @@
3
3
  * The default benchmark server has a thread TTL of one hour that should clean things up too so this doesn't run too long.
4
4
  */
5
5
 
6
- // URL of your LangGraph server
6
+ // URL of your Agent Server
7
7
  const BASE_URL = process.env.BASE_URL || 'http://localhost:9123';
8
8
  // LangSmith API key only needed with a custom server endpoint
9
9
  const LANGSMITH_API_KEY = process.env.LANGSMITH_API_KEY;
@@ -16,12 +16,12 @@ const otherErrors = new Counter('other_errors');
16
16
  const errorMetrics = {
17
17
  timeout_errors: timeoutErrors,
18
18
  connection_errors: connectionErrors,
19
- server_errors: serverErrors,
20
19
  missing_message_errors: missingMessageErrors,
21
20
  other_errors: otherErrors,
21
+ server_errors: serverErrors,
22
22
  }
23
23
 
24
- // URL of your LangGraph server
24
+ // URL of your Agent Server
25
25
  const BASE_URL = __ENV.BASE_URL || 'http://localhost:9123';
26
26
  // LangSmith API key only needed with a custom server endpoint
27
27
  const LANGSMITH_API_KEY = __ENV.LANGSMITH_API_KEY;
@@ -21,6 +21,11 @@ const REVISION_CONFIG = {
21
21
  name: "FF_LOG_DROPPED_EVENTS",
22
22
  value: "true",
23
23
  type: "secret"
24
+ },
25
+ {
26
+ name: "FF_USE_CORE_API",
27
+ value: "true",
28
+ type: "secret"
24
29
  }
25
30
  ],
26
31
  shareable: false
@@ -3,7 +3,7 @@
3
3
  # https://github.com/langchain-ai/langgraph/blob/main/docs/docs/cloud/deployment/setup_pyproject.md
4
4
  langgraph>=0.4.10,<2
5
5
  langgraph-sdk>=0.2.0
6
- langgraph-checkpoint>=3,<4
6
+ langgraph-checkpoint>=3.0.1,<4
7
7
  langchain-core>=0.3.64
8
8
  langsmith>=0.3.45
9
9
  orjson>=3.9.7,<3.10.17
@@ -0,0 +1 @@
1
+ __version__ = "0.5.9"
@@ -1035,7 +1035,6 @@ async def handle_tasks_get(
1035
1035
  assistant_id = run_info.get("assistant_id")
1036
1036
  if assistant_id:
1037
1037
  try:
1038
- # Verify that the assistant exists
1039
1038
  await _get_assistant(assistant_id, request.headers)
1040
1039
  except ValueError as e:
1041
1040
  return {
@@ -1053,7 +1052,9 @@ async def handle_tasks_get(
1053
1052
  a2a_state = "working"
1054
1053
  elif lg_status == "success":
1055
1054
  a2a_state = "completed"
1056
- elif lg_status in ["error", "timeout", "interrupted"]:
1055
+ elif lg_status == "interrupted":
1056
+ a2a_state = "input-required"
1057
+ elif lg_status in ["error", "timeout"]:
1057
1058
  a2a_state = "failed"
1058
1059
  else:
1059
1060
  a2a_state = "submitted"
@@ -16,7 +16,7 @@ from starlette.routing import BaseRoute
16
16
  from langgraph_api import store as api_store
17
17
  from langgraph_api.feature_flags import FF_USE_CORE_API, USE_RUNTIME_CONTEXT_API
18
18
  from langgraph_api.graph import get_assistant_id, get_graph
19
- from langgraph_api.grpc_ops.ops import Assistants as GrpcAssistants
19
+ from langgraph_api.grpc.ops import Assistants as GrpcAssistants
20
20
  from langgraph_api.js.base import BaseRemotePregel
21
21
  from langgraph_api.route import ApiRequest, ApiResponse, ApiRoute
22
22
  from langgraph_api.schema import ASSISTANT_FIELDS
@@ -86,6 +86,12 @@ async def meta_metrics(request: ApiRequest):
86
86
  "# HELP lg_api_num_running_runs The number of runs currently running.",
87
87
  "# TYPE lg_api_num_running_runs gauge",
88
88
  f'lg_api_num_running_runs{{project_id="{metadata.PROJECT_ID}", revision_id="{metadata.HOST_REVISION_ID}"}} {queue_stats["n_running"]}',
89
+ "# HELP lg_api_pending_runs_wait_time_max The maximum time a run has been pending, in seconds.",
90
+ "# TYPE lg_api_pending_runs_wait_time_max gauge",
91
+ 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}',
92
+ "# HELP lg_api_pending_runs_wait_time_med The median pending wait time across runs, in seconds.",
93
+ "# TYPE lg_api_pending_runs_wait_time_med gauge",
94
+ 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}',
89
95
  ]
90
96
  )
91
97
  except Exception as e:
@@ -6,7 +6,7 @@ from starlette.responses import Response
6
6
  from starlette.routing import BaseRoute
7
7
 
8
8
  from langgraph_api.feature_flags import FF_USE_CORE_API
9
- from langgraph_api.grpc_ops.ops import Threads as GrpcThreads
9
+ from langgraph_api.grpc.ops import Threads as GrpcThreads
10
10
  from langgraph_api.route import ApiRequest, ApiResponse, ApiRoute
11
11
  from langgraph_api.schema import THREAD_FIELDS, ThreadStreamMode
12
12
  from langgraph_api.sse import EventSourceResponse
@@ -152,7 +152,7 @@ class ASGITransport(ASGITransportBase):
152
152
 
153
153
  try:
154
154
  await call_soon_in_main_loop(self.app(scope, receive, send))
155
- except Exception: # noqa: PIE-786
155
+ except Exception: # noqa: BLE001
156
156
  if self.raise_app_exceptions:
157
157
  raise
158
158
 
@@ -355,34 +355,39 @@ def _solve_fastapi_dependencies(
355
355
  }
356
356
 
357
357
  async def decorator(scope: dict, request: Request):
358
- async with AsyncExitStack() as stack:
359
- all_solved = await asyncio.gather(
360
- *(
361
- solve_dependencies(
362
- request=request,
363
- dependant=dependent,
364
- async_exit_stack=stack,
365
- embed_body_fields=False,
358
+ async with AsyncExitStack() as request_stack:
359
+ scope["fastapi_inner_astack"] = request_stack
360
+ async with AsyncExitStack() as stack:
361
+ scope["fastapi_function_astack"] = stack
362
+ all_solved = await asyncio.gather(
363
+ *(
364
+ solve_dependencies(
365
+ request=request,
366
+ dependant=dependent,
367
+ async_exit_stack=stack,
368
+ embed_body_fields=False,
369
+ )
370
+ for dependent in dependents.values()
366
371
  )
367
- for dependent in dependents.values()
368
372
  )
369
- )
370
- all_injected = await asyncio.gather(
371
- *(
372
- _run_async(dependent.call, solved.values, is_async)
373
- for dependent, solved in zip(
374
- dependents.values(), all_solved, strict=False
373
+ all_injected = await asyncio.gather(
374
+ *(
375
+ _run_async(dependent.call, solved.values, is_async)
376
+ for dependent, solved in zip(
377
+ dependents.values(), all_solved, strict=False
378
+ )
375
379
  )
376
380
  )
377
- )
378
- kwargs = {
379
- name: value
380
- for name, value in zip(dependents.keys(), all_injected, strict=False)
381
- }
382
- other_params = _extract_arguments_from_scope(
383
- scope, _param_names, request=request
384
- )
385
- return await fn(**(kwargs | other_params))
381
+ kwargs = {
382
+ name: value
383
+ for name, value in zip(
384
+ dependents.keys(), all_injected, strict=False
385
+ )
386
+ }
387
+ other_params = _extract_arguments_from_scope(
388
+ scope, _param_names, request=request
389
+ )
390
+ return await fn(**(kwargs | other_params))
386
391
 
387
392
  return decorator
388
393
 
@@ -281,6 +281,9 @@ REDIS_URI = env("REDIS_URI", cast=str)
281
281
  REDIS_CLUSTER = env("REDIS_CLUSTER", cast=bool, default=False)
282
282
  REDIS_MAX_CONNECTIONS = env("REDIS_MAX_CONNECTIONS", cast=int, default=2000)
283
283
  REDIS_CONNECT_TIMEOUT = env("REDIS_CONNECT_TIMEOUT", cast=float, default=10.0)
284
+ REDIS_HEALTH_CHECK_INTERVAL = env(
285
+ "REDIS_HEALTH_CHECK_INTERVAL", cast=float, default=10.0
286
+ )
284
287
  REDIS_KEY_PREFIX = env("REDIS_KEY_PREFIX", cast=str, default="")
285
288
  RUN_STATS_CACHE_SECONDS = env("RUN_STATS_CACHE_SECONDS", cast=int, default=60)
286
289
 
@@ -16,3 +16,9 @@ FF_USE_CORE_API = os.getenv("FF_USE_CORE_API", "false").lower() in (
16
16
  "1",
17
17
  "yes",
18
18
  )
19
+ # Feature flag for using the JS native API
20
+ FF_USE_JS_API = os.getenv("FF_USE_JS_API", "false").lower() in (
21
+ "true",
22
+ "1",
23
+ "yes",
24
+ )
@@ -51,7 +51,7 @@ async def register_graph(
51
51
  description: str | None = None,
52
52
  ) -> None:
53
53
  """Register a graph."""
54
- from langgraph_api.grpc_ops.ops import Assistants as AssistantsGrpc
54
+ from langgraph_api.grpc.ops import Assistants as AssistantsGrpc
55
55
  from langgraph_runtime.database import connect
56
56
  from langgraph_runtime.ops import Assistants as AssistantsRuntime
57
57
 
@@ -8,7 +8,10 @@ from typing import Any, cast
8
8
  import orjson
9
9
  from langchain_core.runnables.config import RunnableConfig
10
10
 
11
- from langgraph_api.grpc_ops.generated import engine_common_pb2
11
+ from langgraph_api.grpc.generated import (
12
+ engine_common_pb2,
13
+ enum_durability_pb2,
14
+ )
12
15
 
13
16
  CONFIG_KEY_SEND = "__pregel_send"
14
17
  CONFIG_KEY_READ = "__pregel_read"
@@ -25,27 +28,27 @@ CONFIG_KEY_GRAPH_ID = "graph_id"
25
28
 
26
29
  def _durability_to_proto(
27
30
  durability: str,
28
- ) -> engine_common_pb2.Durability:
31
+ ) -> enum_durability_pb2.Durability:
29
32
  match durability:
30
33
  case "async":
31
- return engine_common_pb2.Durability.ASYNC
34
+ return enum_durability_pb2.Durability.ASYNC
32
35
  case "sync":
33
- return engine_common_pb2.Durability.SYNC
36
+ return enum_durability_pb2.Durability.SYNC
34
37
  case "exit":
35
- return engine_common_pb2.Durability.EXIT
38
+ return enum_durability_pb2.Durability.EXIT
36
39
  case _:
37
40
  raise ValueError(f"invalid durability: {durability}")
38
41
 
39
42
 
40
43
  def _durability_from_proto(
41
- durability: engine_common_pb2.Durability,
44
+ durability: enum_durability_pb2.Durability,
42
45
  ) -> str:
43
46
  match durability:
44
- case engine_common_pb2.Durability.ASYNC:
47
+ case enum_durability_pb2.Durability.ASYNC:
45
48
  return "async"
46
- case engine_common_pb2.Durability.SYNC:
49
+ case enum_durability_pb2.Durability.SYNC:
47
50
  return "sync"
48
- case engine_common_pb2.Durability.EXIT:
51
+ case enum_durability_pb2.Durability.EXIT:
49
52
  return "exit"
50
53
  case _:
51
54
  raise ValueError(f"invalid durability: {durability}")