langgraph-api 0.12.0.dev14__tar.gz → 0.12.0.dev15__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 (284) hide show
  1. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/Makefile +1 -1
  2. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/PKG-INFO +2 -2
  3. langgraph_api-0.12.0.dev15/langgraph_api/__init__.py +1 -0
  4. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/config/__init__.py +4 -0
  5. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/grpc/ops/__init__.py +19 -4
  6. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/stream.py +20 -1
  7. langgraph_api-0.12.0.dev15/langgraph_grpc_common/conversion/store.py +208 -0
  8. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/__init__.py +4 -0
  9. langgraph_api-0.12.0.dev15/langgraph_grpc_common/proto/store_pb2.py +54 -0
  10. langgraph_api-0.12.0.dev15/langgraph_grpc_common/proto/store_pb2.pyi +246 -0
  11. langgraph_api-0.12.0.dev15/langgraph_grpc_common/proto/store_pb2_grpc.py +101 -0
  12. langgraph_api-0.12.0.dev15/langgraph_grpc_common/proto/store_pb2_grpc.pyi +58 -0
  13. langgraph_api-0.12.0.dev15/langgraph_grpc_common/store.py +109 -0
  14. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/pyproject.toml +1 -1
  15. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/uv.lock +6 -5
  16. langgraph_api-0.12.0.dev14/langgraph_api/__init__.py +0 -1
  17. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/.gitignore +0 -0
  18. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/LICENSE +0 -0
  19. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/README.md +0 -0
  20. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/.gitignore +0 -0
  21. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/Makefile +0 -0
  22. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/README.md +0 -0
  23. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/benchmark-runners/assistant.ts +0 -0
  24. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/benchmark-runners/benchmark-runner.ts +0 -0
  25. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/benchmark-runners/benchmark_profiles.ts +0 -0
  26. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/benchmark-runners/benchmarks.ts +0 -0
  27. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/benchmark-runners/cancel_first_second_completes.ts +0 -0
  28. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/benchmark-runners/enqueued_runs_order.ts +0 -0
  29. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/benchmark-runners/log-failure.ts +0 -0
  30. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/benchmark-runners/meta_workload.ts +0 -0
  31. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/benchmark-runners/stream_write.ts +0 -0
  32. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/benchmark-runners/thread.ts +0 -0
  33. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/benchmark-runners/thread_runs_metadata_search.ts +0 -0
  34. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/benchmark-runners/threads_search_metadata.ts +0 -0
  35. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/benchmark-runners/types.ts +0 -0
  36. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/benchmark-runners/wait_write.ts +0 -0
  37. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/clean-cli.js +0 -0
  38. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/clean.js +0 -0
  39. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/continuous/README.md +0 -0
  40. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/continuous/pyproject.toml +0 -0
  41. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/continuous/runner.py +0 -0
  42. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/continuous/uv.lock +0 -0
  43. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/graphs.js +0 -0
  44. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/package.json +0 -0
  45. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/ramp.js +0 -0
  46. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/reporting/dd_reporting.py +0 -0
  47. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/staircase.py +0 -0
  48. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/staircase_step_k6.js +0 -0
  49. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/tsconfig.json +0 -0
  50. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/update-revision.js +0 -0
  51. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/benchmark/weather.js +0 -0
  52. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/constraints.txt +0 -0
  53. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/custom_store.sql +0 -0
  54. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/forbidden.txt +0 -0
  55. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/hatch_build.py +0 -0
  56. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/healthcheck.py +0 -0
  57. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph-cloud-debugging-20260210132856.zip +0 -0
  58. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/_checkpointer/__init__.py +0 -0
  59. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/_checkpointer/_adapter.py +0 -0
  60. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/_checkpointer/protocol.py +0 -0
  61. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/_factory_utils.py +0 -0
  62. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/api/__init__.py +0 -0
  63. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/api/a2a.py +0 -0
  64. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/api/assistants.py +0 -0
  65. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/api/event_streaming.py +0 -0
  66. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/api/mcp/__init__.py +0 -0
  67. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/api/mcp/_constants.py +0 -0
  68. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/api/mcp/_handlers.py +0 -0
  69. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/api/mcp/_models.py +0 -0
  70. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/api/mcp/_routes.py +0 -0
  71. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/api/mcp/_sanitizers.py +0 -0
  72. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/api/meta.py +0 -0
  73. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/api/openapi.py +0 -0
  74. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/api/profile.py +0 -0
  75. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/api/runs.py +0 -0
  76. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/api/store.py +0 -0
  77. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/api/threads.py +0 -0
  78. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/api/ui.py +0 -0
  79. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/asgi_transport.py +0 -0
  80. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/asyncio.py +0 -0
  81. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/auth/__init__.py +0 -0
  82. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/auth/custom.py +0 -0
  83. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/auth/errors.py +0 -0
  84. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/auth/langsmith/__init__.py +0 -0
  85. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/auth/langsmith/backend.py +0 -0
  86. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/auth/langsmith/client.py +0 -0
  87. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/auth/middleware.py +0 -0
  88. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/auth/noop.py +0 -0
  89. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/auth/studio_user.py +0 -0
  90. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/cache.py +0 -0
  91. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/cli.py +0 -0
  92. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/command.py +0 -0
  93. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/config/_parse.py +0 -0
  94. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/config/schemas.py +0 -0
  95. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/cron_scheduler.py +0 -0
  96. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/encryption/__init__.py +0 -0
  97. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/encryption/aes_json.py +0 -0
  98. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/encryption/context.py +0 -0
  99. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/encryption/custom.py +0 -0
  100. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/encryption/middleware.py +0 -0
  101. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/encryption/shared.py +0 -0
  102. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/errors.py +0 -0
  103. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/event_streaming/__init__.py +0 -0
  104. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/event_streaming/capabilities.py +0 -0
  105. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/event_streaming/constants.py +0 -0
  106. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/event_streaming/event_normalizers.py +0 -0
  107. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/event_streaming/namespace.py +0 -0
  108. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/event_streaming/service.py +0 -0
  109. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/event_streaming/session.py +0 -0
  110. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/event_streaming/state_normalizers.py +0 -0
  111. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/event_streaming/types.py +0 -0
  112. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/feature_flags.py +0 -0
  113. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/graph.py +0 -0
  114. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/grpc/__init__.py +0 -0
  115. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/grpc/client.py +0 -0
  116. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/grpc/generated/core_api_pb2.pyi +0 -0
  117. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/grpc/ops/assistants.py +0 -0
  118. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/grpc/ops/cache.py +0 -0
  119. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/grpc/ops/crons.py +0 -0
  120. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/grpc/ops/runs.py +0 -0
  121. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/grpc/ops/threads.py +0 -0
  122. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/grpc/server.py +0 -0
  123. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/grpc/servicers/__init__.py +0 -0
  124. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/grpc/servicers/checkpointer.py +0 -0
  125. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/grpc/servicers/encryption.py +0 -0
  126. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/http.py +0 -0
  127. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/http_metrics.py +0 -0
  128. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/http_metrics_utils.py +0 -0
  129. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/js/.gitignore +0 -0
  130. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/js/.prettierrc +0 -0
  131. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/js/__init__.py +0 -0
  132. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/js/base.py +0 -0
  133. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/js/build.mts +0 -0
  134. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/js/client.http.mts +0 -0
  135. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/js/client.mts +0 -0
  136. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/js/errors.py +0 -0
  137. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/js/global.d.ts +0 -0
  138. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/js/package.json +0 -0
  139. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/js/remote.py +0 -0
  140. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/js/schema.py +0 -0
  141. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/js/src/graph.mts +0 -0
  142. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/js/src/load.hooks.mjs +0 -0
  143. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/js/src/preload.mjs +0 -0
  144. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/js/src/utils/experiment-tracing.mts +0 -0
  145. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/js/src/utils/files.mts +0 -0
  146. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/js/src/utils/importMap.mts +0 -0
  147. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
  148. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/js/src/utils/serde.mts +0 -0
  149. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/js/sse.py +0 -0
  150. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/js/traceblock.mts +0 -0
  151. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/js/tsconfig.json +0 -0
  152. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/js/ui.py +0 -0
  153. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/js/yarn.lock +0 -0
  154. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/lc_security/__init__.py +0 -0
  155. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/lc_security/exceptions.py +0 -0
  156. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/lc_security/policy.py +0 -0
  157. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/lc_security/transport.py +0 -0
  158. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/logging.py +0 -0
  159. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/metadata.py +0 -0
  160. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/metrics_collector.py +0 -0
  161. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/metrics_otlp.py +0 -0
  162. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/middleware/__init__.py +0 -0
  163. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/middleware/ensure_store.py +0 -0
  164. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/middleware/http_logger.py +0 -0
  165. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/middleware/private_network.py +0 -0
  166. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/middleware/request_id.py +0 -0
  167. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/models/__init__.py +0 -0
  168. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/models/run.py +0 -0
  169. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/otel_context.py +0 -0
  170. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/patch.py +0 -0
  171. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/queue_entrypoint.py +0 -0
  172. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/release_tags.py +0 -0
  173. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/route.py +0 -0
  174. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/schema.py +0 -0
  175. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/self_hosted_logs.py +0 -0
  176. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/self_hosted_metrics.py +0 -0
  177. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/serde.py +0 -0
  178. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/server.py +0 -0
  179. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/sse.py +0 -0
  180. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/state.py +0 -0
  181. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/store.py +0 -0
  182. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/stream_v2.py +0 -0
  183. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/timing/__init__.py +0 -0
  184. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/timing/profiler.py +0 -0
  185. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/timing/timer.py +0 -0
  186. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/traceblock.py +0 -0
  187. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/tunneling/cloudflare.py +0 -0
  188. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/utils/__init__.py +0 -0
  189. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/utils/cache.py +0 -0
  190. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/utils/config.py +0 -0
  191. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/utils/errors.py +0 -0
  192. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/utils/extract.py +0 -0
  193. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/utils/future.py +0 -0
  194. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/utils/headers.py +0 -0
  195. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/utils/network.py +0 -0
  196. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/utils/retriable_client.py +0 -0
  197. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/utils/stream_codec.py +0 -0
  198. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/utils/uuids.py +0 -0
  199. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/validation.py +0 -0
  200. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/webhook.py +0 -0
  201. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_api/worker.py +0 -0
  202. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/__init__.py +0 -0
  203. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/checkpointer.py +0 -0
  204. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/conversion/__init__.py +0 -0
  205. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/conversion/_compat.py +0 -0
  206. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/conversion/checkpoint.py +0 -0
  207. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/conversion/config.py +0 -0
  208. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/conversion/durability.py +0 -0
  209. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/conversion/struct.py +0 -0
  210. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/conversion/value.py +0 -0
  211. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/checkpointer_pb2.py +0 -0
  212. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/checkpointer_pb2.pyi +0 -0
  213. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.py +0 -0
  214. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.pyi +0 -0
  215. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/core_api_pb2.py +0 -0
  216. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/core_api_pb2.pyi +0 -0
  217. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/core_api_pb2_grpc.py +0 -0
  218. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/core_api_pb2_grpc.pyi +0 -0
  219. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/encryption_pb2.py +0 -0
  220. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/encryption_pb2.pyi +0 -0
  221. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/encryption_pb2_grpc.py +0 -0
  222. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/encryption_pb2_grpc.pyi +0 -0
  223. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/engine_common_pb2.py +0 -0
  224. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/engine_common_pb2.pyi +0 -0
  225. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/engine_common_pb2_grpc.py +0 -0
  226. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/engine_common_pb2_grpc.pyi +0 -0
  227. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.py +0 -0
  228. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.pyi +0 -0
  229. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.py +0 -0
  230. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.pyi +0 -0
  231. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_control_signal_pb2.py +0 -0
  232. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_control_signal_pb2.pyi +0 -0
  233. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.py +0 -0
  234. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.pyi +0 -0
  235. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.py +0 -0
  236. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.pyi +0 -0
  237. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.py +0 -0
  238. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.pyi +0 -0
  239. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_durability_pb2.py +0 -0
  240. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_durability_pb2.pyi +0 -0
  241. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.py +0 -0
  242. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.pyi +0 -0
  243. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.py +0 -0
  244. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.pyi +0 -0
  245. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.py +0 -0
  246. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.pyi +0 -0
  247. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_run_status_pb2.py +0 -0
  248. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_run_status_pb2.pyi +0 -0
  249. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.py +0 -0
  250. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.pyi +0 -0
  251. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_stream_mode_pb2.py +0 -0
  252. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_stream_mode_pb2.pyi +0 -0
  253. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.py +0 -0
  254. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.pyi +0 -0
  255. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_thread_status_pb2.py +0 -0
  256. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_thread_status_pb2.pyi +0 -0
  257. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.py +0 -0
  258. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.pyi +0 -0
  259. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.py +0 -0
  260. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.pyi +0 -0
  261. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.py +0 -0
  262. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.pyi +0 -0
  263. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/errors_pb2.py +0 -0
  264. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/errors_pb2.pyi +0 -0
  265. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/errors_pb2_grpc.py +0 -0
  266. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/proto/errors_pb2_grpc.pyi +0 -0
  267. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_grpc_common/serde.py +0 -0
  268. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_license/__init__.py +0 -0
  269. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_license/validation.py +0 -0
  270. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_runtime/__init__.py +0 -0
  271. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_runtime/checkpoint.py +0 -0
  272. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_runtime/database.py +0 -0
  273. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_runtime/lifespan.py +0 -0
  274. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_runtime/metrics.py +0 -0
  275. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_runtime/ops.py +0 -0
  276. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_runtime/queue.py +0 -0
  277. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_runtime/retry.py +0 -0
  278. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_runtime/routes.py +0 -0
  279. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/langgraph_runtime/store.py +0 -0
  280. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/logging.json +0 -0
  281. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/openapi.json +0 -0
  282. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/scripts/build_wheel.py +0 -0
  283. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/scripts/create_license.py +0 -0
  284. {langgraph_api-0.12.0.dev14 → langgraph_api-0.12.0.dev15}/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 test-auth-read-only-assistant
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", "delta_channel": "./tests/graphs/delta_channel.py:graph", "delta_channel_freq": "./tests/graphs/delta_channel_freq.py:graph", "delta_channel_files": "./tests/graphs/delta_channel_files.py:graph", "delta_channel_files_freq": "./tests/graphs/delta_channel_files_freq.py:graph", "delta_channel_legacy": "./tests/graphs/delta_channel_migration.py:graph_legacy", "delta_channel_delta": "./tests/graphs/delta_channel_migration.py:graph_delta", "delta_channel_delta_filter": "./tests/graphs/delta_channel_migration.py:graph_delta_filter", "delta_channel_messages_freq": "./tests/graphs/delta_channel_messages.py:graph_freq", "delta_channel_messages": "./tests/graphs/delta_channel_messages.py:graph", "delta_channel_messages_legacy": "./tests/graphs/delta_channel_messages.py:graph_legacy", "delta_channel_messages_remove": "./tests/graphs/delta_channel_messages.py:graph_remove", "delta_channel_messages_update": "./tests/graphs/delta_channel_messages.py:graph_update", "delta_channel_messages_delta": "./tests/graphs/delta_channel_messages.py:graph_delta"}'
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", "delta_channel": "./tests/graphs/delta_channel.py:graph", "delta_channel_freq": "./tests/graphs/delta_channel_freq.py:graph", "delta_channel_files": "./tests/graphs/delta_channel_files.py:graph", "delta_channel_files_freq": "./tests/graphs/delta_channel_files_freq.py:graph", "delta_channel_legacy": "./tests/graphs/delta_channel_migration.py:graph_legacy", "delta_channel_delta": "./tests/graphs/delta_channel_migration.py:graph_delta", "delta_channel_delta_filter": "./tests/graphs/delta_channel_migration.py:graph_delta_filter", "delta_channel_messages_freq": "./tests/graphs/delta_channel_messages.py:graph_freq", "delta_channel_messages": "./tests/graphs/delta_channel_messages.py:graph", "delta_channel_messages_legacy": "./tests/graphs/delta_channel_messages.py:graph_legacy", "delta_channel_messages_remove": "./tests/graphs/delta_channel_messages.py:graph_remove", "delta_channel_messages_update": "./tests/graphs/delta_channel_messages.py:graph_update", "delta_channel_messages_delta": "./tests/graphs/delta_channel_messages.py:graph_delta", "store_e2e_async": "./tests/graphs/store_e2e.py:graph_async", "store_e2e_sync": "./tests/graphs/store_e2e.py:graph_sync"}'
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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langgraph-api
3
- Version: 0.12.0.dev14
3
+ Version: 0.12.0.dev15
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
@@ -29,7 +29,7 @@ Requires-Dist: prometheus-client>=0.0.1
29
29
  Requires-Dist: protobuf<7.0.0,>=6.32.1
30
30
  Requires-Dist: pyjwt>=2.13.0
31
31
  Requires-Dist: sse-starlette<3.4.0,>=2.1.3
32
- Requires-Dist: starlette>=0.38.6
32
+ Requires-Dist: starlette>=1.3.1
33
33
  Requires-Dist: structlog<26,>=24.1.0
34
34
  Requires-Dist: tenacity>=8.0.0
35
35
  Requires-Dist: truststore>=0.1
@@ -0,0 +1 @@
1
+ __version__ = "0.12.0.dev15"
@@ -243,6 +243,8 @@ WEBHOOKS_ENABLED = HTTP_CONFIG and HTTP_CONFIG.get("disable_webhooks")
243
243
  STORE_CONFIG = env(
244
244
  "LANGGRAPH_STORE", cast=_parse.parse_schema(StoreConfig), default=None
245
245
  )
246
+ LANGGRAPH_STORE_BACKEND = env("LANGGRAPH_STORE_BACKEND", cast=str, default="python")
247
+ USE_GRPC_STORE = LANGGRAPH_STORE_BACKEND == "grpc"
246
248
 
247
249
 
248
250
  def _validate_mount_prefix(mount_prefix: str | None) -> str | None:
@@ -668,6 +670,7 @@ __all__ = [
668
670
  "LANGGRAPH_METRICS_ENDPOINT",
669
671
  "LANGGRAPH_METRICS_EXPORT_INTERVAL_MS",
670
672
  "LANGGRAPH_POSTGRES_EXTENSIONS",
673
+ "LANGGRAPH_STORE_BACKEND",
671
674
  "LANGSMITH_API_KEY",
672
675
  "LANGSMITH_AUTH_ENDPOINT",
673
676
  "LANGSMITH_AUTH_VERIFY_TENANT_ID",
@@ -715,6 +718,7 @@ __all__ = [
715
718
  "USES_STORE_TTL",
716
719
  "USES_THREAD_TTL",
717
720
  "USE_CUSTOM_CHECKPOINTER",
721
+ "USE_GRPC_STORE",
718
722
  "AuthConfig",
719
723
  "CheckpointerConfig",
720
724
  "CorsConfig",
@@ -39,6 +39,7 @@ GRPC_STATUS_TO_HTTP_STATUS = {
39
39
  StatusCode.INVALID_ARGUMENT: HTTPStatus.UNPROCESSABLE_ENTITY,
40
40
  StatusCode.PERMISSION_DENIED: HTTPStatus.FORBIDDEN,
41
41
  StatusCode.UNAUTHENTICATED: HTTPStatus.UNAUTHORIZED,
42
+ StatusCode.RESOURCE_EXHAUSTED: HTTPStatus.TOO_MANY_REQUESTS,
42
43
  }
43
44
 
44
45
 
@@ -187,19 +188,33 @@ def _handle_grpc_error(error: AioRpcError) -> None:
187
188
  Always return detail as a string here.
188
189
  """
189
190
  error_details = error.details()
191
+ retry_after_seconds = None
190
192
  if error_details is not None:
191
193
  try:
192
194
  details = orjson.loads(error_details)
193
- error_details = orjson.dumps(details.get("message", "")).decode()
195
+ retry_after_seconds = details.get("retry_after_seconds")
196
+ message = details.get("message", "")
197
+ # A string message is the detail verbatim; only re-encode structured
198
+ # (non-string) messages as JSON.
199
+ error_details = (
200
+ message if isinstance(message, str) else orjson.dumps(message).decode()
201
+ )
194
202
  except orjson.JSONDecodeError:
195
203
  # error details is not json, so just retun it as is
196
204
  pass
197
205
 
206
+ status_code = GRPC_STATUS_TO_HTTP_STATUS.get(
207
+ error.code(), HTTPStatus.INTERNAL_SERVER_ERROR
208
+ )
209
+ headers = None
210
+ if status_code == HTTPStatus.TOO_MANY_REQUESTS and retry_after_seconds:
211
+ # The Go core carries Retry-After as a structured integer (seconds).
212
+ headers = {"Retry-After": str(int(retry_after_seconds))}
213
+
198
214
  raise HTTPException(
199
- status_code=GRPC_STATUS_TO_HTTP_STATUS.get(
200
- error.code(), HTTPStatus.INTERNAL_SERVER_ERROR
201
- ),
215
+ status_code=status_code,
202
216
  detail=error_details,
217
+ headers=headers,
203
218
  )
204
219
 
205
220
 
@@ -339,7 +339,26 @@ async def astream_state(
339
339
  ):
340
340
  yield event["name"], event["data"]
341
341
  # TODO support messages-tuple for js graphs
342
- if event["event"] == "on_chain_stream" and event["run_id"] == run_id:
342
+ # For JS (BaseRemotePregel) with subgraphs=True, subgraph events
343
+ # carry the subgraph's own run_id. Accept them if the chunk is a
344
+ # proper 3-tuple [ns, mode, chunk] — that's the sidecar's
345
+ # normalized format. Limit this bypass to remote graphs only;
346
+ # Python child events must fall through to the raw "events"
347
+ # fallback below when the client requests stream_mode="events".
348
+ _chunk_data = (
349
+ event["data"].get("chunk")
350
+ if event["event"] == "on_chain_stream"
351
+ else None
352
+ )
353
+ if event["event"] == "on_chain_stream" and (
354
+ event["run_id"] == run_id
355
+ or (
356
+ subgraphs
357
+ and is_remote_pregel
358
+ and isinstance(_chunk_data, (list, tuple))
359
+ and len(_chunk_data) == 3
360
+ )
361
+ ):
343
362
  if subgraphs:
344
363
  ns, mode, chunk = event["data"]["chunk"]
345
364
  else:
@@ -0,0 +1,208 @@
1
+ """Marshal langgraph.store.base GetOp/PutOp/Item/Result to and from store.proto."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from datetime import datetime
6
+ from typing import TYPE_CHECKING, Any, cast
7
+
8
+ import orjson
9
+ from google.protobuf import empty_pb2
10
+ from langgraph.store.base import (
11
+ GetOp,
12
+ IndexConfig,
13
+ Item,
14
+ Op,
15
+ PutOp,
16
+ Result,
17
+ ensure_embeddings,
18
+ get_text_at_path,
19
+ tokenize_path,
20
+ )
21
+
22
+ from langgraph_grpc_common.proto import store_pb2
23
+
24
+ if TYPE_CHECKING:
25
+ from collections.abc import Sequence
26
+
27
+ from langchain_core.embeddings import Embeddings
28
+
29
+
30
+ def _ensure_index_config(
31
+ index_config: IndexConfig,
32
+ ) -> tuple[Embeddings | None, IndexConfig]:
33
+ # Vendored from langgraph.store.postgres.base so grpc_common_py stays
34
+ # backend-agnostic (no langgraph-checkpoint-postgres / psycopg dependency).
35
+ index_config = index_config.copy()
36
+ tokenized: list[tuple[str, str | list[str]]] = []
37
+ tot = 0
38
+ fields = index_config.get("fields") or ["$"]
39
+ if isinstance(fields, str):
40
+ fields = [fields]
41
+ if not isinstance(fields, list):
42
+ raise ValueError(f"Text fields must be a list or a string. Got {fields}")
43
+ for p in fields:
44
+ if p == "$":
45
+ tokenized.append((p, "$"))
46
+ tot += 1
47
+ else:
48
+ toks = tokenize_path(p)
49
+ tokenized.append((p, toks))
50
+ tot += len(toks)
51
+ index_config["__tokenized_fields"] = tokenized # ty: ignore[invalid-key]
52
+ index_config["__estimated_num_vectors"] = tot # ty: ignore[invalid-key]
53
+ embeddings = ensure_embeddings(index_config.get("embed"))
54
+ return embeddings, index_config
55
+
56
+
57
+ def _ttl_to_proto_minutes(ttl: float | None) -> int:
58
+ if ttl is None:
59
+ return 0
60
+ if ttl != int(ttl):
61
+ raise ValueError(
62
+ f"gRPC store only supports integer-minute TTL; got fractional ttl={ttl}"
63
+ )
64
+ return int(ttl)
65
+
66
+
67
+ def op_to_proto(
68
+ op: Op,
69
+ *,
70
+ vectors: Sequence[store_pb2.VectorValue] | None = None,
71
+ ) -> store_pb2.Op:
72
+ if isinstance(op, GetOp):
73
+ return store_pb2.Op(
74
+ get=store_pb2.GetOp(
75
+ namespace=list(op.namespace),
76
+ key=str(op.key),
77
+ refreshTTL=op.refresh_ttl,
78
+ )
79
+ )
80
+ if isinstance(op, PutOp):
81
+ if op.value is None:
82
+ raise TypeError(
83
+ "PutOp with value=None (delete) is not supported by gRPC store"
84
+ )
85
+ put_kwargs: dict[str, Any] = {
86
+ "namespace": list(op.namespace),
87
+ "key": str(op.key),
88
+ "value_json": orjson.dumps(op.value),
89
+ "ttlMinutes": _ttl_to_proto_minutes(op.ttl),
90
+ }
91
+ if vectors is not None:
92
+ put_kwargs["vectors"] = list(vectors)
93
+ return store_pb2.Op(put=store_pb2.PutOp(**put_kwargs))
94
+ raise TypeError(f"unsupported op: {type(op).__name__}")
95
+
96
+
97
+ def op_from_proto(msg: store_pb2.Op) -> Op:
98
+ kind = msg.WhichOneof("op")
99
+ if kind == "get":
100
+ g = msg.get
101
+ return GetOp(
102
+ namespace=tuple(g.namespace),
103
+ key=g.key,
104
+ refresh_ttl=g.refreshTTL,
105
+ )
106
+ if kind == "put":
107
+ p = msg.put
108
+ ttl: float | None = None
109
+ if p.ttlMinutes:
110
+ ttl = float(p.ttlMinutes)
111
+ return PutOp(
112
+ namespace=tuple(p.namespace),
113
+ key=p.key,
114
+ value=orjson.loads(p.value_json),
115
+ ttl=ttl,
116
+ )
117
+ raise ValueError("empty Op message (no oneof set)")
118
+
119
+
120
+ def result_to_proto(result: Result, op: Op) -> store_pb2.OpResult:
121
+ if isinstance(op, GetOp):
122
+ if result is None:
123
+ return store_pb2.OpResult(none=empty_pb2.Empty())
124
+ if not isinstance(result, Item):
125
+ raise TypeError(
126
+ f"expected Item for GetOp result, got {type(result).__name__}"
127
+ )
128
+ return store_pb2.OpResult(item=_item_to_proto(result))
129
+ if isinstance(op, PutOp):
130
+ return store_pb2.OpResult(none=empty_pb2.Empty())
131
+ raise TypeError(f"unsupported op for result encoding: {type(op).__name__}")
132
+
133
+
134
+ def result_from_proto(msg: store_pb2.OpResult) -> Result:
135
+ kind = msg.WhichOneof("result")
136
+ if kind == "none":
137
+ return None
138
+ if kind == "item":
139
+ return _item_from_proto(msg.item)
140
+ raise ValueError("empty OpResult message (no oneof set)")
141
+
142
+
143
+ def _item_to_proto(item: Item) -> store_pb2.Item:
144
+ return store_pb2.Item(
145
+ namespace=list(item.namespace),
146
+ key=item.key,
147
+ value_json=orjson.dumps(item.value),
148
+ created_at=_format_dt(item.created_at),
149
+ updated_at=_format_dt(item.updated_at),
150
+ )
151
+
152
+
153
+ def _item_from_proto(msg: store_pb2.Item) -> Item:
154
+ return Item(
155
+ namespace=tuple(msg.namespace),
156
+ key=msg.key,
157
+ value=orjson.loads(msg.value_json),
158
+ created_at=datetime.fromisoformat(msg.created_at),
159
+ updated_at=datetime.fromisoformat(msg.updated_at),
160
+ )
161
+
162
+
163
+ def _format_dt(dt: datetime) -> str:
164
+ return dt.isoformat()
165
+
166
+
167
+ async def vectors_for_put_op(
168
+ op: PutOp,
169
+ index_config: IndexConfig,
170
+ embeddings: Embeddings,
171
+ ) -> list[store_pb2.VectorValue]:
172
+ if op.index is False or op.value is None:
173
+ return []
174
+
175
+ value = op.value
176
+ if op.index is None:
177
+ paths = cast(
178
+ "list[tuple[str, str | list[str]]]",
179
+ index_config["__tokenized_fields"], # ty: ignore[invalid-key]
180
+ )
181
+ else:
182
+ paths = [(ix, tokenize_path(ix)) for ix in op.index]
183
+
184
+ texts: list[str] = []
185
+ pathnames: list[str] = []
186
+ for path, tokenized_path in paths:
187
+ extracted = get_text_at_path(value, tokenized_path)
188
+ for i, text in enumerate(extracted):
189
+ pathname = f"{path}.{i}" if len(extracted) > 1 else path
190
+ pathnames.append(pathname)
191
+ texts.append(text)
192
+
193
+ if not texts:
194
+ return []
195
+
196
+ vectors = await embeddings.aembed_documents(texts)
197
+ return [
198
+ store_pb2.VectorValue(valuePath=pathname, embedding=vector)
199
+ for pathname, vector in zip(pathnames, vectors, strict=False)
200
+ ]
201
+
202
+
203
+ def normalize_index_config(
204
+ index: IndexConfig | None,
205
+ ) -> tuple[Embeddings | None, IndexConfig | None]:
206
+ if not index:
207
+ return None, None
208
+ return _ensure_index_config(index)
@@ -15,6 +15,8 @@ from . import engine_common_pb2
15
15
  from . import engine_common_pb2_grpc
16
16
  from . import checkpointer_pb2
17
17
  from . import checkpointer_pb2_grpc
18
+ from . import store_pb2
19
+ from . import store_pb2_grpc
18
20
  from . import encryption_pb2
19
21
  from . import encryption_pb2_grpc
20
22
  from . import errors_pb2
@@ -27,6 +29,8 @@ __all__ = [
27
29
  "engine_common_pb2_grpc",
28
30
  "checkpointer_pb2",
29
31
  "checkpointer_pb2_grpc",
32
+ "store_pb2",
33
+ "store_pb2_grpc",
30
34
  "encryption_pb2",
31
35
  "encryption_pb2_grpc",
32
36
  "errors_pb2",
@@ -0,0 +1,54 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: store.proto
5
+ # Protobuf Python Version: 6.31.1
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 6,
15
+ 31,
16
+ 1,
17
+ '',
18
+ 'store.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+ from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
26
+
27
+
28
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0bstore.proto\x12\x05store\x1a\x1bgoogle/protobuf/empty.proto\"&\n\x0c\x42\x61tchRequest\x12\x16\n\x03ops\x18\x01 \x03(\x0b\x32\t.store.Op\"1\n\rBatchResponse\x12 \n\x07results\x18\x01 \x03(\x0b\x32\x0f.store.OpResult\"D\n\x02Op\x12\x1b\n\x03get\x18\x01 \x01(\x0b\x32\x0c.store.GetOpH\x00\x12\x1b\n\x03put\x18\x02 \x01(\x0b\x32\x0c.store.PutOpH\x00\x42\x04\n\x02op\";\n\x05GetOp\x12\x11\n\tnamespace\x18\x01 \x03(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\x12\n\nrefreshTTL\x18\x03 \x01(\x08\"3\n\x0bVectorValue\x12\x11\n\tvaluePath\x18\x01 \x01(\t\x12\x11\n\tembedding\x18\x02 \x03(\x02\"t\n\x05PutOp\x12\x11\n\tnamespace\x18\x01 \x03(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\x12\n\nvalue_json\x18\x03 \x01(\x0c\x12\x12\n\nttlMinutes\x18\x04 \x01(\x05\x12#\n\x07vectors\x18\x05 \x03(\x0b\x32\x12.store.VectorValue\"Y\n\x08OpResult\x12\x1b\n\x04item\x18\x01 \x01(\x0b\x32\x0b.store.ItemH\x00\x12&\n\x04none\x18\x02 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x42\x08\n\x06result\"b\n\x04Item\x12\x11\n\tnamespace\x18\x01 \x03(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\x12\n\nvalue_json\x18\x03 \x01(\x0c\x12\x12\n\ncreated_at\x18\x04 \x01(\t\x12\x12\n\nupdated_at\x18\x05 \x01(\t2;\n\x05Store\x12\x32\n\x05\x42\x61tch\x12\x13.store.BatchRequest\x1a\x14.store.BatchResponseB?Z=github.com/langchain-ai/langgraph-api/core/internal/engine/pbb\x06proto3')
29
+
30
+ _globals = globals()
31
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
32
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'store_pb2', _globals)
33
+ if not _descriptor._USE_C_DESCRIPTORS:
34
+ _globals['DESCRIPTOR']._loaded_options = None
35
+ _globals['DESCRIPTOR']._serialized_options = b'Z=github.com/langchain-ai/langgraph-api/core/internal/engine/pb'
36
+ _globals['_BATCHREQUEST']._serialized_start=51
37
+ _globals['_BATCHREQUEST']._serialized_end=89
38
+ _globals['_BATCHRESPONSE']._serialized_start=91
39
+ _globals['_BATCHRESPONSE']._serialized_end=140
40
+ _globals['_OP']._serialized_start=142
41
+ _globals['_OP']._serialized_end=210
42
+ _globals['_GETOP']._serialized_start=212
43
+ _globals['_GETOP']._serialized_end=271
44
+ _globals['_VECTORVALUE']._serialized_start=273
45
+ _globals['_VECTORVALUE']._serialized_end=324
46
+ _globals['_PUTOP']._serialized_start=326
47
+ _globals['_PUTOP']._serialized_end=442
48
+ _globals['_OPRESULT']._serialized_start=444
49
+ _globals['_OPRESULT']._serialized_end=533
50
+ _globals['_ITEM']._serialized_start=535
51
+ _globals['_ITEM']._serialized_end=633
52
+ _globals['_STORE']._serialized_start=635
53
+ _globals['_STORE']._serialized_end=694
54
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,246 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+
6
+ from collections import abc as _abc
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import empty_pb2 as _empty_pb2
9
+ from google.protobuf import message as _message
10
+ from google.protobuf.internal import containers as _containers
11
+ import builtins as _builtins
12
+ import sys
13
+ import typing as _typing
14
+
15
+ if sys.version_info >= (3, 11):
16
+ from typing import TypeAlias as _TypeAlias, Never as _Never
17
+ else:
18
+ from typing_extensions import TypeAlias as _TypeAlias, Never as _Never
19
+
20
+ DESCRIPTOR: _descriptor.FileDescriptor
21
+
22
+ @_typing.final
23
+ class BatchRequest(_message.Message):
24
+ DESCRIPTOR: _descriptor.Descriptor
25
+
26
+ OPS_FIELD_NUMBER: _builtins.int
27
+ @_builtins.property
28
+ def ops(self) -> _containers.RepeatedCompositeFieldContainer[Global___Op]: ...
29
+ def __init__(
30
+ self,
31
+ *,
32
+ ops: _abc.Iterable[Global___Op] | None = ...,
33
+ ) -> None: ...
34
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
35
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
36
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["ops", b"ops"] # noqa: Y015
37
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
38
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
39
+
40
+ Global___BatchRequest: _TypeAlias = BatchRequest # noqa: Y015
41
+
42
+ @_typing.final
43
+ class BatchResponse(_message.Message):
44
+ DESCRIPTOR: _descriptor.Descriptor
45
+
46
+ RESULTS_FIELD_NUMBER: _builtins.int
47
+ @_builtins.property
48
+ def results(self) -> _containers.RepeatedCompositeFieldContainer[Global___OpResult]:
49
+ """Same length as BatchRequest.ops, same order."""
50
+
51
+ def __init__(
52
+ self,
53
+ *,
54
+ results: _abc.Iterable[Global___OpResult] | None = ...,
55
+ ) -> None: ...
56
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
57
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
58
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["results", b"results"] # noqa: Y015
59
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
60
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
61
+
62
+ Global___BatchResponse: _TypeAlias = BatchResponse # noqa: Y015
63
+
64
+ @_typing.final
65
+ class Op(_message.Message):
66
+ DESCRIPTOR: _descriptor.Descriptor
67
+
68
+ GET_FIELD_NUMBER: _builtins.int
69
+ PUT_FIELD_NUMBER: _builtins.int
70
+ @_builtins.property
71
+ def get(self) -> Global___GetOp: ...
72
+ @_builtins.property
73
+ def put(self) -> Global___PutOp: ...
74
+ def __init__(
75
+ self,
76
+ *,
77
+ get: Global___GetOp | None = ...,
78
+ put: Global___PutOp | None = ...,
79
+ ) -> None: ...
80
+ _HasFieldArgType: _TypeAlias = _typing.Literal["get", b"get", "op", b"op", "put", b"put"] # noqa: Y015
81
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
82
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["get", b"get", "op", b"op", "put", b"put"] # noqa: Y015
83
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
84
+ _WhichOneofReturnType_op: _TypeAlias = _typing.Literal["get", "put"] # noqa: Y015
85
+ _WhichOneofArgType_op: _TypeAlias = _typing.Literal["op", b"op"] # noqa: Y015
86
+ def WhichOneof(self, oneof_group: _WhichOneofArgType_op) -> _WhichOneofReturnType_op | None: ...
87
+
88
+ Global___Op: _TypeAlias = Op # noqa: Y015
89
+
90
+ @_typing.final
91
+ class GetOp(_message.Message):
92
+ DESCRIPTOR: _descriptor.Descriptor
93
+
94
+ NAMESPACE_FIELD_NUMBER: _builtins.int
95
+ KEY_FIELD_NUMBER: _builtins.int
96
+ REFRESHTTL_FIELD_NUMBER: _builtins.int
97
+ key: _builtins.str
98
+ refreshTTL: _builtins.bool
99
+ @_builtins.property
100
+ def namespace(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]:
101
+ """Hierarchical namespace path, e.g. ["users", "profiles"]."""
102
+
103
+ def __init__(
104
+ self,
105
+ *,
106
+ namespace: _abc.Iterable[_builtins.str] | None = ...,
107
+ key: _builtins.str = ...,
108
+ refreshTTL: _builtins.bool = ...,
109
+ ) -> None: ...
110
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
111
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
112
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["key", b"key", "namespace", b"namespace", "refreshTTL", b"refreshTTL"] # noqa: Y015
113
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
114
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
115
+
116
+ Global___GetOp: _TypeAlias = GetOp # noqa: Y015
117
+
118
+ @_typing.final
119
+ class VectorValue(_message.Message):
120
+ """Vector value for embedding support"""
121
+
122
+ DESCRIPTOR: _descriptor.Descriptor
123
+
124
+ VALUEPATH_FIELD_NUMBER: _builtins.int
125
+ EMBEDDING_FIELD_NUMBER: _builtins.int
126
+ valuePath: _builtins.str
127
+ """path to the value in the document"""
128
+ @_builtins.property
129
+ def embedding(self) -> _containers.RepeatedScalarFieldContainer[_builtins.float]:
130
+ """embedding vector"""
131
+
132
+ def __init__(
133
+ self,
134
+ *,
135
+ valuePath: _builtins.str = ...,
136
+ embedding: _abc.Iterable[_builtins.float] | None = ...,
137
+ ) -> None: ...
138
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
139
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
140
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["embedding", b"embedding", "valuePath", b"valuePath"] # noqa: Y015
141
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
142
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
143
+
144
+ Global___VectorValue: _TypeAlias = VectorValue # noqa: Y015
145
+
146
+ @_typing.final
147
+ class PutOp(_message.Message):
148
+ DESCRIPTOR: _descriptor.Descriptor
149
+
150
+ NAMESPACE_FIELD_NUMBER: _builtins.int
151
+ KEY_FIELD_NUMBER: _builtins.int
152
+ VALUE_JSON_FIELD_NUMBER: _builtins.int
153
+ TTLMINUTES_FIELD_NUMBER: _builtins.int
154
+ VECTORS_FIELD_NUMBER: _builtins.int
155
+ key: _builtins.str
156
+ value_json: _builtins.bytes
157
+ """JSON-encoded value (orjson)."""
158
+ ttlMinutes: _builtins.int
159
+ @_builtins.property
160
+ def namespace(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ...
161
+ @_builtins.property
162
+ def vectors(self) -> _containers.RepeatedCompositeFieldContainer[Global___VectorValue]:
163
+ """array of vector values for embedding support"""
164
+
165
+ def __init__(
166
+ self,
167
+ *,
168
+ namespace: _abc.Iterable[_builtins.str] | None = ...,
169
+ key: _builtins.str = ...,
170
+ value_json: _builtins.bytes = ...,
171
+ ttlMinutes: _builtins.int = ...,
172
+ vectors: _abc.Iterable[Global___VectorValue] | None = ...,
173
+ ) -> None: ...
174
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
175
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
176
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["key", b"key", "namespace", b"namespace", "ttlMinutes", b"ttlMinutes", "value_json", b"value_json", "vectors", b"vectors"] # noqa: Y015
177
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
178
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
179
+
180
+ Global___PutOp: _TypeAlias = PutOp # noqa: Y015
181
+
182
+ @_typing.final
183
+ class OpResult(_message.Message):
184
+ """Result corresponds to langgraph.store.base.Result.
185
+ Kind is derived from the originating op:
186
+ GetOp -> item (or none if missing)
187
+ PutOp -> none
188
+ """
189
+
190
+ DESCRIPTOR: _descriptor.Descriptor
191
+
192
+ ITEM_FIELD_NUMBER: _builtins.int
193
+ NONE_FIELD_NUMBER: _builtins.int
194
+ @_builtins.property
195
+ def item(self) -> Global___Item: ...
196
+ @_builtins.property
197
+ def none(self) -> _empty_pb2.Empty: ...
198
+ def __init__(
199
+ self,
200
+ *,
201
+ item: Global___Item | None = ...,
202
+ none: _empty_pb2.Empty | None = ...,
203
+ ) -> None: ...
204
+ _HasFieldArgType: _TypeAlias = _typing.Literal["item", b"item", "none", b"none", "result", b"result"] # noqa: Y015
205
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
206
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["item", b"item", "none", b"none", "result", b"result"] # noqa: Y015
207
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
208
+ _WhichOneofReturnType_result: _TypeAlias = _typing.Literal["item", "none"] # noqa: Y015
209
+ _WhichOneofArgType_result: _TypeAlias = _typing.Literal["result", b"result"] # noqa: Y015
210
+ def WhichOneof(self, oneof_group: _WhichOneofArgType_result) -> _WhichOneofReturnType_result | None: ...
211
+
212
+ Global___OpResult: _TypeAlias = OpResult # noqa: Y015
213
+
214
+ @_typing.final
215
+ class Item(_message.Message):
216
+ DESCRIPTOR: _descriptor.Descriptor
217
+
218
+ NAMESPACE_FIELD_NUMBER: _builtins.int
219
+ KEY_FIELD_NUMBER: _builtins.int
220
+ VALUE_JSON_FIELD_NUMBER: _builtins.int
221
+ CREATED_AT_FIELD_NUMBER: _builtins.int
222
+ UPDATED_AT_FIELD_NUMBER: _builtins.int
223
+ key: _builtins.str
224
+ value_json: _builtins.bytes
225
+ """JSON-encoded value (orjson)."""
226
+ created_at: _builtins.str
227
+ """RFC 3339 / ISO 8601 strings, matching Item.dict()."""
228
+ updated_at: _builtins.str
229
+ @_builtins.property
230
+ def namespace(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ...
231
+ def __init__(
232
+ self,
233
+ *,
234
+ namespace: _abc.Iterable[_builtins.str] | None = ...,
235
+ key: _builtins.str = ...,
236
+ value_json: _builtins.bytes = ...,
237
+ created_at: _builtins.str = ...,
238
+ updated_at: _builtins.str = ...,
239
+ ) -> None: ...
240
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
241
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
242
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["created_at", b"created_at", "key", b"key", "namespace", b"namespace", "updated_at", b"updated_at", "value_json", b"value_json"] # noqa: Y015
243
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
244
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
245
+
246
+ Global___Item: _TypeAlias = Item # noqa: Y015