langgraph-api 0.17.0.dev2__tar.gz → 0.17.0.dev3__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 (327) hide show
  1. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/PKG-INFO +1 -1
  2. langgraph_api-0.17.0.dev3/langgraph_api/__init__.py +1 -0
  3. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/encryption/aes_json.py +47 -6
  4. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/encryption/custom.py +13 -1
  5. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/store.py +17 -11
  6. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/checkpointer.py +6 -3
  7. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/conversion/store.py +8 -6
  8. langgraph_api-0.17.0.dev3/langgraph_grpc_common/proto/checkpointer_pb2.py +99 -0
  9. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/checkpointer_pb2.pyi +76 -5
  10. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/store_pb2.py +25 -25
  11. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/store_pb2.pyi +6 -1
  12. langgraph_api-0.17.0.dev2/langgraph_api/__init__.py +0 -1
  13. langgraph_api-0.17.0.dev2/langgraph_grpc_common/proto/checkpointer_pb2.py +0 -87
  14. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/.gitignore +0 -0
  15. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/LICENSE +0 -0
  16. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/Makefile +0 -0
  17. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/README.md +0 -0
  18. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/.gitignore +0 -0
  19. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/Makefile +0 -0
  20. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/README.md +0 -0
  21. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/REPORTS.md +0 -0
  22. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/benchmark-runners/assistant.ts +0 -0
  23. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/benchmark-runners/benchmark-runner.ts +0 -0
  24. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/benchmark-runners/benchmark_profiles.ts +0 -0
  25. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/benchmark-runners/benchmarks.ts +0 -0
  26. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/benchmark-runners/cancel_first_second_completes.ts +0 -0
  27. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/benchmark-runners/classify-error.test.js +0 -0
  28. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/benchmark-runners/classify-error.ts +0 -0
  29. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/benchmark-runners/delta-turns-lib.test.js +0 -0
  30. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/benchmark-runners/delta-turns-lib.ts +0 -0
  31. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/benchmark-runners/delta_turns.ts +0 -0
  32. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/benchmark-runners/enqueued_runs_order.ts +0 -0
  33. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/benchmark-runners/interrupt_resume.ts +0 -0
  34. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/benchmark-runners/log-failure.ts +0 -0
  35. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/benchmark-runners/meta_workload.ts +0 -0
  36. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/benchmark-runners/store.ts +0 -0
  37. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/benchmark-runners/stream_write.ts +0 -0
  38. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/benchmark-runners/thread.ts +0 -0
  39. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/benchmark-runners/thread_runs_metadata_search.ts +0 -0
  40. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/benchmark-runners/threads_search_metadata.ts +0 -0
  41. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/benchmark-runners/types.ts +0 -0
  42. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/benchmark-runners/wait_write.ts +0 -0
  43. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/capacity-ci.js +0 -0
  44. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/capacity-ci.test.js +0 -0
  45. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/clean-cli.js +0 -0
  46. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/clean.js +0 -0
  47. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/continuous/README.md +0 -0
  48. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/continuous/pyproject.toml +0 -0
  49. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/continuous/runner.py +0 -0
  50. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/continuous/uv.lock +0 -0
  51. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/daily-report.js +0 -0
  52. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/daily-report.test.js +0 -0
  53. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/delta-report.js +0 -0
  54. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/delta-report.test.js +0 -0
  55. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/graphs.js +0 -0
  56. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/history.js +0 -0
  57. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/history.test.js +0 -0
  58. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/host-v2.js +0 -0
  59. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/host-v2.test.js +0 -0
  60. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/multer.test.js +0 -0
  61. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/package.json +0 -0
  62. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/ramp.js +0 -0
  63. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/reporting/dd_reporting.py +0 -0
  64. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/runner-descriptions.js +0 -0
  65. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/server-metrics.js +0 -0
  66. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/server-metrics.test.js +0 -0
  67. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/slack.js +0 -0
  68. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/staircase.py +0 -0
  69. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/staircase_step_k6.js +0 -0
  70. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/tsconfig.json +0 -0
  71. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/update-revision.js +0 -0
  72. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/weather.js +0 -0
  73. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/benchmark/yarn.lock +0 -0
  74. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/constraints.txt +0 -0
  75. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/custom_store.sql +0 -0
  76. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/forbidden.txt +0 -0
  77. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/hatch_build.py +0 -0
  78. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/healthcheck.py +0 -0
  79. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph-cloud-debugging-20260210132856.zip +0 -0
  80. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/_checkpointer/__init__.py +0 -0
  81. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/_checkpointer/_adapter.py +0 -0
  82. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/_checkpointer/protocol.py +0 -0
  83. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/_factory_utils.py +0 -0
  84. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/api/__init__.py +0 -0
  85. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/api/a2a.py +0 -0
  86. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/api/a2ui.py +0 -0
  87. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/api/a2ui_schemas/README.md +0 -0
  88. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/api/a2ui_schemas/client_capabilities.json +0 -0
  89. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/api/a2ui_schemas/client_data_model.json +0 -0
  90. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/api/a2ui_schemas/client_to_server.json +0 -0
  91. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/api/a2ui_schemas/server_to_client.json +0 -0
  92. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/api/assistants.py +0 -0
  93. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/api/event_streaming.py +0 -0
  94. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/api/mcp/__init__.py +0 -0
  95. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/api/mcp/_constants.py +0 -0
  96. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/api/mcp/_handlers.py +0 -0
  97. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/api/mcp/_models.py +0 -0
  98. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/api/mcp/_routes.py +0 -0
  99. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/api/mcp/_sanitizers.py +0 -0
  100. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/api/meta.py +0 -0
  101. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/api/openapi.py +0 -0
  102. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/api/profile.py +0 -0
  103. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/api/runs.py +0 -0
  104. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/api/store.py +0 -0
  105. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/api/threads.py +0 -0
  106. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/api/ui.py +0 -0
  107. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/asgi_transport.py +0 -0
  108. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/asyncio.py +0 -0
  109. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/auth/__init__.py +0 -0
  110. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/auth/custom.py +0 -0
  111. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/auth/errors.py +0 -0
  112. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/auth/langsmith/__init__.py +0 -0
  113. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/auth/langsmith/backend.py +0 -0
  114. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/auth/langsmith/client.py +0 -0
  115. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/auth/middleware.py +0 -0
  116. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/auth/noop.py +0 -0
  117. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/auth/studio_user.py +0 -0
  118. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/beacon_data_plane_jwt_auth.py +0 -0
  119. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/cache.py +0 -0
  120. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/cli.py +0 -0
  121. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/command.py +0 -0
  122. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/config/__init__.py +0 -0
  123. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/config/_parse.py +0 -0
  124. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/config/schemas.py +0 -0
  125. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/cron_scheduler.py +0 -0
  126. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/encryption/__init__.py +0 -0
  127. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/encryption/context.py +0 -0
  128. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/encryption/middleware.py +0 -0
  129. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/encryption/shared.py +0 -0
  130. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/errors.py +0 -0
  131. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/event_streaming/__init__.py +0 -0
  132. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/event_streaming/capabilities.py +0 -0
  133. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/event_streaming/constants.py +0 -0
  134. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/event_streaming/event_normalizers.py +0 -0
  135. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/event_streaming/namespace.py +0 -0
  136. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/event_streaming/service.py +0 -0
  137. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/event_streaming/session.py +0 -0
  138. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/event_streaming/state_normalizers.py +0 -0
  139. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/event_streaming/types.py +0 -0
  140. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/feature_flags.py +0 -0
  141. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/graph.py +0 -0
  142. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/grpc/__init__.py +0 -0
  143. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/grpc/client.py +0 -0
  144. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/grpc/generated/core_api_pb2.pyi +0 -0
  145. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/grpc/ops/__init__.py +0 -0
  146. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/grpc/ops/assistants.py +0 -0
  147. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/grpc/ops/cache.py +0 -0
  148. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/grpc/ops/crons.py +0 -0
  149. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/grpc/ops/runs.py +0 -0
  150. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/grpc/ops/threads.py +0 -0
  151. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/grpc/server.py +0 -0
  152. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/grpc/servicers/__init__.py +0 -0
  153. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/grpc/servicers/checkpointer.py +0 -0
  154. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/grpc/servicers/encryption.py +0 -0
  155. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/http.py +0 -0
  156. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/http_metrics.py +0 -0
  157. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/http_metrics_utils.py +0 -0
  158. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/js/.gitignore +0 -0
  159. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/js/.prettierrc +0 -0
  160. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/js/.yarnclean +0 -0
  161. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/js/__init__.py +0 -0
  162. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/js/base.py +0 -0
  163. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/js/build.mts +0 -0
  164. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/js/client.http.mts +0 -0
  165. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/js/client.mts +0 -0
  166. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/js/errors.py +0 -0
  167. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/js/global.d.ts +0 -0
  168. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/js/package.json +0 -0
  169. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/js/remote.py +0 -0
  170. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/js/schema.py +0 -0
  171. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/js/src/auth-mutations.mts +0 -0
  172. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/js/src/graph.mts +0 -0
  173. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/js/src/load.hooks.mjs +0 -0
  174. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/js/src/preload.mjs +0 -0
  175. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/js/src/utils/experiment-tracing.mts +0 -0
  176. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/js/src/utils/files.mts +0 -0
  177. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/js/src/utils/importMap.mts +0 -0
  178. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
  179. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/js/src/utils/serde.mts +0 -0
  180. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/js/sse.py +0 -0
  181. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/js/traceblock.mts +0 -0
  182. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/js/tsconfig.json +0 -0
  183. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/js/ui.py +0 -0
  184. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/js/yarn.lock +0 -0
  185. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/lc_security/__init__.py +0 -0
  186. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/lc_security/exceptions.py +0 -0
  187. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/lc_security/policy.py +0 -0
  188. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/lc_security/transport.py +0 -0
  189. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/logging.py +0 -0
  190. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/metadata.py +0 -0
  191. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/metrics_collector.py +0 -0
  192. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/metrics_otlp.py +0 -0
  193. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/middleware/__init__.py +0 -0
  194. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/middleware/ensure_store.py +0 -0
  195. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/middleware/http_logger.py +0 -0
  196. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/middleware/private_network.py +0 -0
  197. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/middleware/request_id.py +0 -0
  198. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/models/__init__.py +0 -0
  199. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/models/run.py +0 -0
  200. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/otel_context.py +0 -0
  201. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/patch.py +0 -0
  202. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/queue_entrypoint.py +0 -0
  203. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/release_tags.py +0 -0
  204. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/route.py +0 -0
  205. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/runner/__init__.py +0 -0
  206. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/runner/__main__.py +0 -0
  207. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/schema.py +0 -0
  208. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/self_hosted_logs.py +0 -0
  209. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/self_hosted_metrics.py +0 -0
  210. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/serde.py +0 -0
  211. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/server.py +0 -0
  212. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/sse.py +0 -0
  213. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/state.py +0 -0
  214. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/stream.py +0 -0
  215. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/stream_v2.py +0 -0
  216. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/timing/__init__.py +0 -0
  217. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/timing/profiler.py +0 -0
  218. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/timing/timer.py +0 -0
  219. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/traceblock.py +0 -0
  220. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/tracing_session.py +0 -0
  221. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/tunneling/cloudflare.py +0 -0
  222. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/utils/__init__.py +0 -0
  223. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/utils/cache.py +0 -0
  224. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/utils/config.py +0 -0
  225. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/utils/errors.py +0 -0
  226. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/utils/extract.py +0 -0
  227. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/utils/future.py +0 -0
  228. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/utils/headers.py +0 -0
  229. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/utils/network.py +0 -0
  230. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/utils/retriable_client.py +0 -0
  231. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/utils/stream_codec.py +0 -0
  232. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/utils/uuids.py +0 -0
  233. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/validation.py +0 -0
  234. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/webhook.py +0 -0
  235. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/worker.py +0 -0
  236. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_api/worker_runtime.py +0 -0
  237. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/__init__.py +0 -0
  238. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/conversion/__init__.py +0 -0
  239. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/conversion/_compat.py +0 -0
  240. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/conversion/checkpoint.py +0 -0
  241. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/conversion/config.py +0 -0
  242. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/conversion/durability.py +0 -0
  243. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/conversion/struct.py +0 -0
  244. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/conversion/value.py +0 -0
  245. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/__init__.py +0 -0
  246. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.py +0 -0
  247. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/checkpointer_pb2_grpc.pyi +0 -0
  248. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/core_api_pb2.py +0 -0
  249. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/core_api_pb2.pyi +0 -0
  250. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/core_api_pb2_grpc.py +0 -0
  251. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/core_api_pb2_grpc.pyi +0 -0
  252. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/encryption_pb2.py +0 -0
  253. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/encryption_pb2.pyi +0 -0
  254. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/encryption_pb2_grpc.py +0 -0
  255. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/encryption_pb2_grpc.pyi +0 -0
  256. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/engine_common_pb2.py +0 -0
  257. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/engine_common_pb2.pyi +0 -0
  258. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/engine_common_pb2_grpc.py +0 -0
  259. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/engine_common_pb2_grpc.pyi +0 -0
  260. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.py +0 -0
  261. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2.pyi +0 -0
  262. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.py +0 -0
  263. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_cancel_run_action_pb2_grpc.pyi +0 -0
  264. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_control_signal_pb2.py +0 -0
  265. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_control_signal_pb2.pyi +0 -0
  266. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.py +0 -0
  267. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_control_signal_pb2_grpc.pyi +0 -0
  268. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.py +0 -0
  269. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2.pyi +0 -0
  270. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.py +0 -0
  271. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_cron_on_run_completed_pb2_grpc.pyi +0 -0
  272. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_durability_pb2.py +0 -0
  273. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_durability_pb2.pyi +0 -0
  274. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.py +0 -0
  275. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_durability_pb2_grpc.pyi +0 -0
  276. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.py +0 -0
  277. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2.pyi +0 -0
  278. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.py +0 -0
  279. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_multitask_strategy_pb2_grpc.pyi +0 -0
  280. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_run_status_pb2.py +0 -0
  281. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_run_status_pb2.pyi +0 -0
  282. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.py +0 -0
  283. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_run_status_pb2_grpc.pyi +0 -0
  284. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_stream_mode_pb2.py +0 -0
  285. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_stream_mode_pb2.pyi +0 -0
  286. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.py +0 -0
  287. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_stream_mode_pb2_grpc.pyi +0 -0
  288. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_thread_status_pb2.py +0 -0
  289. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_thread_status_pb2.pyi +0 -0
  290. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.py +0 -0
  291. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_thread_status_pb2_grpc.pyi +0 -0
  292. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.py +0 -0
  293. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2.pyi +0 -0
  294. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.py +0 -0
  295. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/enum_thread_stream_mode_pb2_grpc.pyi +0 -0
  296. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/errors_pb2.py +0 -0
  297. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/errors_pb2.pyi +0 -0
  298. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/errors_pb2_grpc.py +0 -0
  299. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/errors_pb2_grpc.pyi +0 -0
  300. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/runner_pb2.py +0 -0
  301. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/runner_pb2.pyi +0 -0
  302. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/runner_pb2_grpc.py +0 -0
  303. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/runner_pb2_grpc.pyi +0 -0
  304. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/store_pb2_grpc.py +0 -0
  305. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/proto/store_pb2_grpc.pyi +0 -0
  306. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/serde.py +0 -0
  307. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_grpc_common/store.py +0 -0
  308. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_license/__init__.py +0 -0
  309. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_license/validation.py +0 -0
  310. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_runtime/__init__.py +0 -0
  311. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_runtime/checkpoint.py +0 -0
  312. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_runtime/database.py +0 -0
  313. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_runtime/encryption.py +0 -0
  314. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_runtime/lifespan.py +0 -0
  315. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_runtime/metrics.py +0 -0
  316. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_runtime/ops.py +0 -0
  317. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_runtime/queue.py +0 -0
  318. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_runtime/retry.py +0 -0
  319. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_runtime/routes.py +0 -0
  320. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/langgraph_runtime/store.py +0 -0
  321. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/logging.json +0 -0
  322. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/openapi.json +0 -0
  323. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/pyproject.toml +0 -0
  324. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/scripts/build_wheel.py +0 -0
  325. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/scripts/create_license.py +0 -0
  326. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/scripts/run_a2a_tck.py +0 -0
  327. {langgraph_api-0.17.0.dev2 → langgraph_api-0.17.0.dev3}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: langgraph-api
3
- Version: 0.17.0.dev2
3
+ Version: 0.17.0.dev3
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
@@ -0,0 +1 @@
1
+ __version__ = "0.17.0.dev3"
@@ -8,6 +8,7 @@ from __future__ import annotations
8
8
 
9
9
  import base64
10
10
  import functools
11
+ import hashlib
11
12
  from typing import TYPE_CHECKING, Any
12
13
 
13
14
  import orjson
@@ -24,17 +25,57 @@ if TYPE_CHECKING:
24
25
  from langgraph_api.encryption.custom import ModelType
25
26
 
26
27
  AES_ENCRYPTED_PREFIX = "encrypted.aes:"
28
+ AES_ENVELOPE_MAGIC = b"LGAES-ENVELOPE\x00\x00"
29
+ AES_ENVELOPE_VERSION = 1
30
+ AES_KEY_ID_SIZE = 16
31
+ AES_ENVELOPE_SIZE = len(AES_ENVELOPE_MAGIC) + 1 + AES_KEY_ID_SIZE
27
32
 
28
33
  # Marker key to identify AES encryption in __encryption_context__
29
34
  AES_ENCRYPTION_TYPE_KEY = "__langgraph_encryption_type__"
30
35
  AES_ENCRYPTION_CONTEXT = {AES_ENCRYPTION_TYPE_KEY: "aes"}
31
36
 
32
37
 
33
- def _get_aes_cipher(key: bytes) -> CipherProtocol:
34
- """Get AES cipher using the SDK's implementation (same as checkpoint encryption)."""
35
- # EncryptedSerializer.from_pycryptodome_aes creates a PycryptodomeAesCipher internally
36
- # We extract it to reuse the exact same encryption format as checkpoints
37
- return EncryptedSerializer.from_pycryptodome_aes(key=key).cipher
38
+ class _EnvelopeAwareAesCipher:
39
+ """Read Go AES envelopes while preserving legacy Python writes."""
40
+
41
+ def __init__(self, key: bytes, legacy: CipherProtocol) -> None:
42
+ self._key = key
43
+ self._legacy = legacy
44
+
45
+ def encrypt(self, plaintext: bytes) -> tuple[str, bytes]:
46
+ return self._legacy.encrypt(plaintext)
47
+
48
+ def decrypt(self, ciphername: str, ciphertext: bytes) -> bytes:
49
+ if not ciphertext.startswith(AES_ENVELOPE_MAGIC):
50
+ return self._legacy.decrypt(ciphername, ciphertext)
51
+ if len(ciphertext) < AES_ENVELOPE_SIZE:
52
+ raise ValueError("invalid AES envelope: header is truncated")
53
+
54
+ header = ciphertext[:AES_ENVELOPE_SIZE]
55
+ if header[len(AES_ENVELOPE_MAGIC)] != AES_ENVELOPE_VERSION:
56
+ raise ValueError(
57
+ f"unsupported AES envelope version {header[len(AES_ENVELOPE_MAGIC)]}"
58
+ )
59
+ expected_key_id = hashlib.sha256(
60
+ b"langgraph-aes-key-id-v1\x00" + self._key
61
+ ).digest()[:AES_KEY_ID_SIZE]
62
+ if header[-AES_KEY_ID_SIZE:] != expected_key_id:
63
+ raise ValueError("AES envelope was encrypted with a different key")
64
+
65
+ from Crypto.Cipher import AES # noqa: PLC0415
66
+
67
+ encrypted = ciphertext[AES_ENVELOPE_SIZE:]
68
+ nonce = encrypted[:16]
69
+ tag = encrypted[16:32]
70
+ cipher = AES.new(self._key, AES.MODE_EAX, nonce=nonce)
71
+ cipher.update(header)
72
+ return cipher.decrypt_and_verify(encrypted[32:], tag)
73
+
74
+
75
+ def get_aes_cipher(key: bytes) -> CipherProtocol:
76
+ """Return cipher compatible with legacy Python and Go envelope formats."""
77
+ legacy = EncryptedSerializer.from_pycryptodome_aes(key=key).cipher
78
+ return _EnvelopeAwareAesCipher(key, legacy)
38
79
 
39
80
 
40
81
  def is_aes_encrypted(value: Any) -> bool:
@@ -72,7 +113,7 @@ class AesEncryptionInstance:
72
113
  """
73
114
 
74
115
  def __init__(self, key: bytes, allowlist: frozenset[str]) -> None:
75
- self._cipher = _get_aes_cipher(key)
116
+ self._cipher = get_aes_cipher(key)
76
117
  self._allowlist = allowlist
77
118
 
78
119
  def encrypt_value(self, value: Any) -> str:
@@ -271,6 +271,7 @@ class JsonEncryptionWrapper:
271
271
  )
272
272
 
273
273
  custom_decryptor = self._custom.get_json_decryptor(model_type)
274
+ custom_encryptor = self.get_json_encryptor(model_type)
274
275
 
275
276
  async def decryptor(ctx: Any, data: dict[str, Any]) -> dict[str, Any]:
276
277
  # No marker → plaintext passthrough
@@ -287,7 +288,18 @@ class JsonEncryptionWrapper:
287
288
  f"for {model_type}"
288
289
  )
289
290
  aes_decryptor = self._aes.get_json_decryptor(model_type)
290
- return await aes_decryptor(ctx, data)
291
+ plaintext = await aes_decryptor(ctx, data)
292
+ if with_replacement and custom_encryptor is not None:
293
+ try:
294
+ replacement = await custom_encryptor(ctx, plaintext)
295
+ except Exception:
296
+ await logger.aexception(
297
+ "Failed to create AES-to-custom replacement",
298
+ model=model_type,
299
+ )
300
+ replacement = None
301
+ return DecryptResult(plaintext, replacement)
302
+ return plaintext
291
303
 
292
304
  # Custom marker → use custom decryptor
293
305
  if custom_decryptor is None:
@@ -18,6 +18,7 @@ from langgraph_api.encryption.middleware import (
18
18
  decrypt_response,
19
19
  encrypt_request,
20
20
  )
21
+ from langgraph_api.encryption.shared import ENCRYPTION_CONTEXT_KEY
21
22
  from langgraph_api.timing import profiled_import
22
23
  from langgraph_api.utils.config import run_in_executor
23
24
 
@@ -49,6 +50,20 @@ def _bypass_store_encryption() -> bool:
49
50
  return config.USE_GRPC_STORE or CUSTOM_STORE is not None
50
51
 
51
52
 
53
+ def _bypass_store_decryption(item: dict[str, Any]) -> bool:
54
+ if config.USE_GRPC_STORE or CUSTOM_STORE is None:
55
+ return config.USE_GRPC_STORE
56
+ value = item.get("value")
57
+ return not isinstance(value, dict) or ENCRYPTION_CONTEXT_KEY not in value
58
+
59
+
60
+ async def _decrypt_store_item(item: Any) -> dict[str, Any]:
61
+ data = item.dict()
62
+ return await decrypt_response(
63
+ data, "store", plaintext_from_core=_bypass_store_decryption(data)
64
+ )
65
+
66
+
52
67
  async def put_item(
53
68
  namespace: tuple[str, ...],
54
69
  key: str,
@@ -71,9 +86,7 @@ async def get_item(
71
86
  item = await (await get_store()).aget(namespace, key, refresh_ttl=refresh_ttl)
72
87
  if item is None:
73
88
  return None
74
- return await decrypt_response(
75
- item.dict(), "store", plaintext_from_core=_bypass_store_encryption()
76
- )
89
+ return await _decrypt_store_item(item)
77
90
 
78
91
 
79
92
  async def search_items(
@@ -93,14 +106,7 @@ async def search_items(
93
106
  query=query,
94
107
  refresh_ttl=refresh_ttl,
95
108
  )
96
- return await asyncio.gather(
97
- *(
98
- decrypt_response(
99
- item.dict(), "store", plaintext_from_core=_bypass_store_encryption()
100
- )
101
- for item in items
102
- )
103
- )
109
+ return await asyncio.gather(*(_decrypt_store_item(item) for item in items))
104
110
 
105
111
 
106
112
  async def exit_store():
@@ -77,8 +77,8 @@ class GrpcCheckpointer(BaseCheckpointSaver):
77
77
  ``langgraph_grpc_common.conversion.*`` keep using the
78
78
  process-wide default
79
79
  encryption_context_provider: Optional callable returning the
80
- request-scoped encryption context, sent with writes so the
81
- server can encrypt blobs with the caller's context. Injected
80
+ request-scoped encryption context, sent with reads and writes
81
+ so the server can encrypt blobs with the caller's context. Injected
82
82
  rather than read directly because the context lives in a
83
83
  ``ContextVar`` owned by ``langgraph_api``, which this package
84
84
  does not depend on.
@@ -146,7 +146,8 @@ class GrpcCheckpointer(BaseCheckpointSaver):
146
146
  async def aget_tuple(self, config: RunnableConfig) -> CheckpointTuple | None:
147
147
  with self._scoped():
148
148
  request = checkpointer_pb2.GetTupleRequest(
149
- config=ckpt_conv.checkpoint_config_to_proto(config)
149
+ config=ckpt_conv.checkpoint_config_to_proto(config),
150
+ encryption_context_json=self._encryption_context_json(),
150
151
  )
151
152
 
152
153
  async def _request() -> CheckpointTuple | None:
@@ -276,6 +277,7 @@ class GrpcCheckpointer(BaseCheckpointSaver):
276
277
  config=ckpt_conv.checkpoint_config_to_proto(config),
277
278
  filter_json=convert_dict_to_json_bytes(filter) or b"",
278
279
  before=ckpt_conv.checkpoint_config_to_proto(before),
280
+ encryption_context_json=self._encryption_context_json(),
279
281
  )
280
282
  if limit is not None:
281
283
  request.limit = limit
@@ -393,6 +395,7 @@ class GrpcCheckpointer(BaseCheckpointSaver):
393
395
  # Empty checkpoint_id => server resolves the latest checkpoint.
394
396
  checkpoint_id=configurable.get("checkpoint_id", "") or "",
395
397
  channels=list(channels),
398
+ encryption_context_json=self._encryption_context_json(),
396
399
  )
397
400
 
398
401
  async def _request() -> checkpointer_pb2.GetDeltaChannelHistoryResponse:
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import math
5
6
  from datetime import datetime
6
7
  from typing import TYPE_CHECKING, Any, cast
7
8
 
@@ -61,11 +62,9 @@ def _ensure_index_config(
61
62
  def _ttl_to_proto_minutes(ttl: float | None) -> int:
62
63
  if ttl is None:
63
64
  return 0
64
- if ttl != int(ttl):
65
- raise ValueError(
66
- f"gRPC store only supports integer-minute TTL; got fractional ttl={ttl}"
67
- )
68
- return int(ttl)
65
+ # The API accepts fractional minutes but the store keeps whole minutes;
66
+ # round up so items never expire earlier than requested.
67
+ return math.ceil(ttl)
69
68
 
70
69
 
71
70
  # Ordered comparisons compare the *text* form of the field (value->>key); $eq/$ne
@@ -178,6 +177,7 @@ def op_to_proto(
178
177
  "key": str(op.key),
179
178
  "value_json": orjson.dumps(op.value),
180
179
  "ttlMinutes": _ttl_to_proto_minutes(op.ttl),
180
+ "ttlMinutesExact": op.ttl or 0.0,
181
181
  }
182
182
  if vectors is not None:
183
183
  put_kwargs["vectors"] = list(vectors)
@@ -227,7 +227,9 @@ def op_from_proto(msg: store_pb2.Op) -> Op:
227
227
  if kind == "put":
228
228
  p = msg.put
229
229
  ttl: float | None = None
230
- if p.ttlMinutes:
230
+ if p.ttlMinutesExact:
231
+ ttl = p.ttlMinutesExact
232
+ elif p.ttlMinutes:
231
233
  ttl = float(p.ttlMinutes)
232
234
  return PutOp(
233
235
  namespace=tuple(p.namespace),
@@ -0,0 +1,99 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: checkpointer.proto
5
+ # Protobuf Python Version: 6.33.5
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
+ 33,
16
+ 5,
17
+ '',
18
+ 'checkpointer.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
+ from . import engine_common_pb2 as engine__common__pb2
27
+
28
+
29
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x12\x63heckpointer.proto\x12\x0c\x63heckpointer\x1a\x1bgoogle/protobuf/empty.proto\x1a\x13\x65ngine-common.proto\"\xab\x03\n\nPutRequest\x12\x32\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\".engineCommon.EngineRunnableConfig\x12,\n\ncheckpoint\x18\x02 \x01(\x0b\x32\x18.engineCommon.Checkpoint\x12\x32\n\x08metadata\x18\x03 \x01(\x0b\x32 .engineCommon.CheckpointMetadata\x12?\n\x0cnew_versions\x18\x04 \x03(\x0b\x32).checkpointer.PutRequest.NewVersionsEntry\x12T\n\x17\x65ncryption_context_json\x18\x05 \x03(\x0b\x32\x33.checkpointer.PutRequest.EncryptionContextJsonEntry\x1a\x32\n\x10NewVersionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a<\n\x1a\x45ncryptionContextJsonEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\"\xa9\x02\n\x10PutWritesRequest\x12\x32\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\".engineCommon.EngineRunnableConfig\x12#\n\x06writes\x18\x02 \x03(\x0b\x32\x13.engineCommon.Write\x12\x0f\n\x07task_id\x18\x03 \x01(\t\x12\x11\n\ttask_path\x18\x04 \x01(\t\x12Z\n\x17\x65ncryption_context_json\x18\x05 \x03(\x0b\x32\x39.checkpointer.PutWritesRequest.EncryptionContextJsonEntry\x1a<\n\x1a\x45ncryptionContextJsonEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\"\x86\x01\n\x0c\x43\x61pabilities\x12\x1e\n\x16supports_delete_thread\x18\x01 \x01(\x08\x12\x16\n\x0esupports_prune\x18\x02 \x01(\x08\x12 \n\x18supports_delete_for_runs\x18\x03 \x01(\x08\x12\x1c\n\x14supports_copy_thread\x18\x04 \x01(\x08\"\xbd\x02\n\x0bListRequest\x12\x32\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\".engineCommon.EngineRunnableConfig\x12\x13\n\x0b\x66ilter_json\x18\x02 \x01(\x0c\x12\x32\n\x06\x62\x65\x66ore\x18\x03 \x01(\x0b\x32\".engineCommon.EngineRunnableConfig\x12\x12\n\x05limit\x18\x04 \x01(\x03H\x00\x88\x01\x01\x12U\n\x17\x65ncryption_context_json\x18\x05 \x03(\x0b\x32\x34.checkpointer.ListRequest.EncryptionContextJsonEntry\x1a<\n\x1a\x45ncryptionContextJsonEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x42\x08\n\x06_limit\"(\n\x13\x44\x65leteThreadRequest\x12\x11\n\tthread_id\x18\x01 \x01(\t\"\'\n\x14\x44\x65leteForRunsRequest\x12\x0f\n\x07run_ids\x18\x01 \x03(\t\"A\n\x11\x43opyThreadRequest\x12\x16\n\x0e\x66rom_thread_id\x18\x01 \x01(\t\x12\x14\n\x0cto_thread_id\x18\x02 \x01(\t\"\xa1\x01\n\x0cPruneRequest\x12\x12\n\nthread_ids\x18\x01 \x03(\t\x12:\n\x08strategy\x18\x02 \x01(\x0e\x32(.checkpointer.PruneRequest.PruneStrategy\"A\n\rPruneStrategy\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x0f\n\x0bKEEP_LATEST\x10\x01\x12\x0e\n\nDELETE_ALL\x10\x02\"\xde\x01\n\x0fGetTupleRequest\x12\x32\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\".engineCommon.EngineRunnableConfig\x12Y\n\x17\x65ncryption_context_json\x18\x02 \x03(\x0b\x32\x38.checkpointer.GetTupleRequest.EncryptionContextJsonEntry\x1a<\n\x1a\x45ncryptionContextJsonEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\"F\n\x0bPutResponse\x12\x37\n\x0bnext_config\x18\x01 \x01(\x0b\x32\".engineCommon.EngineRunnableConfig\"H\n\x0cListResponse\x12\x38\n\x11\x63heckpoint_tuples\x18\x01 \x03(\x0b\x32\x1d.engineCommon.CheckpointTuple\"e\n\x10GetTupleResponse\x12<\n\x10\x63heckpoint_tuple\x18\x01 \x01(\x0b\x32\x1d.engineCommon.CheckpointTupleH\x00\x88\x01\x01\x42\x13\n\x11_checkpoint_tuple\"~\n\x18\x44\x65ltaChannelHistoryEntry\x12-\n\x04seed\x18\x01 \x01(\x0b\x32\x1a.engineCommon.ChannelValueH\x00\x88\x01\x01\x12*\n\x06writes\x18\x02 \x03(\x0b\x32\x1a.engineCommon.PendingWriteB\x07\n\x05_seed\"\x99\x02\n\x1dGetDeltaChannelHistoryRequest\x12\x11\n\tthread_id\x18\x01 \x01(\t\x12\x15\n\rcheckpoint_ns\x18\x02 \x01(\t\x12\x15\n\rcheckpoint_id\x18\x03 \x01(\t\x12\x10\n\x08\x63hannels\x18\x04 \x03(\t\x12g\n\x17\x65ncryption_context_json\x18\x05 \x03(\x0b\x32\x46.checkpointer.GetDeltaChannelHistoryRequest.EncryptionContextJsonEntry\x1a<\n\x1a\x45ncryptionContextJsonEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\"\xc4\x01\n\x1eGetDeltaChannelHistoryResponse\x12J\n\x07\x65ntries\x18\x01 \x03(\x0b\x32\x39.checkpointer.GetDeltaChannelHistoryResponse.EntriesEntry\x1aV\n\x0c\x45ntriesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x35\n\x05value\x18\x02 \x01(\x0b\x32&.checkpointer.DeltaChannelHistoryEntry:\x02\x38\x01\x32\xf1\x05\n\x0c\x43heckpointer\x12:\n\x03Put\x12\x18.checkpointer.PutRequest\x1a\x19.checkpointer.PutResponse\x12\x43\n\tPutWrites\x12\x1e.checkpointer.PutWritesRequest\x1a\x16.google.protobuf.Empty\x12\x45\n\x0fGetCapabilities\x12\x16.google.protobuf.Empty\x1a\x1a.checkpointer.Capabilities\x12=\n\x04List\x12\x19.checkpointer.ListRequest\x1a\x1a.checkpointer.ListResponse\x12I\n\x08GetTuple\x12\x1d.checkpointer.GetTupleRequest\x1a\x1e.checkpointer.GetTupleResponse\x12I\n\x0c\x44\x65leteThread\x12!.checkpointer.DeleteThreadRequest\x1a\x16.google.protobuf.Empty\x12K\n\rDeleteForRuns\x12\".checkpointer.DeleteForRunsRequest\x1a\x16.google.protobuf.Empty\x12\x45\n\nCopyThread\x12\x1f.checkpointer.CopyThreadRequest\x1a\x16.google.protobuf.Empty\x12;\n\x05Prune\x12\x1a.checkpointer.PruneRequest\x1a\x16.google.protobuf.Empty\x12s\n\x16GetDeltaChannelHistory\x12+.checkpointer.GetDeltaChannelHistoryRequest\x1a,.checkpointer.GetDeltaChannelHistoryResponseB?Z=github.com/langchain-ai/langgraph-api/core/internal/engine/pbb\x06proto3')
30
+
31
+ _globals = globals()
32
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
33
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'checkpointer_pb2', _globals)
34
+ if not _descriptor._USE_C_DESCRIPTORS:
35
+ _globals['DESCRIPTOR']._loaded_options = None
36
+ _globals['DESCRIPTOR']._serialized_options = b'Z=github.com/langchain-ai/langgraph-api/core/internal/engine/pb'
37
+ _globals['_PUTREQUEST_NEWVERSIONSENTRY']._loaded_options = None
38
+ _globals['_PUTREQUEST_NEWVERSIONSENTRY']._serialized_options = b'8\001'
39
+ _globals['_PUTREQUEST_ENCRYPTIONCONTEXTJSONENTRY']._loaded_options = None
40
+ _globals['_PUTREQUEST_ENCRYPTIONCONTEXTJSONENTRY']._serialized_options = b'8\001'
41
+ _globals['_PUTWRITESREQUEST_ENCRYPTIONCONTEXTJSONENTRY']._loaded_options = None
42
+ _globals['_PUTWRITESREQUEST_ENCRYPTIONCONTEXTJSONENTRY']._serialized_options = b'8\001'
43
+ _globals['_LISTREQUEST_ENCRYPTIONCONTEXTJSONENTRY']._loaded_options = None
44
+ _globals['_LISTREQUEST_ENCRYPTIONCONTEXTJSONENTRY']._serialized_options = b'8\001'
45
+ _globals['_GETTUPLEREQUEST_ENCRYPTIONCONTEXTJSONENTRY']._loaded_options = None
46
+ _globals['_GETTUPLEREQUEST_ENCRYPTIONCONTEXTJSONENTRY']._serialized_options = b'8\001'
47
+ _globals['_GETDELTACHANNELHISTORYREQUEST_ENCRYPTIONCONTEXTJSONENTRY']._loaded_options = None
48
+ _globals['_GETDELTACHANNELHISTORYREQUEST_ENCRYPTIONCONTEXTJSONENTRY']._serialized_options = b'8\001'
49
+ _globals['_GETDELTACHANNELHISTORYRESPONSE_ENTRIESENTRY']._loaded_options = None
50
+ _globals['_GETDELTACHANNELHISTORYRESPONSE_ENTRIESENTRY']._serialized_options = b'8\001'
51
+ _globals['_PUTREQUEST']._serialized_start=87
52
+ _globals['_PUTREQUEST']._serialized_end=514
53
+ _globals['_PUTREQUEST_NEWVERSIONSENTRY']._serialized_start=402
54
+ _globals['_PUTREQUEST_NEWVERSIONSENTRY']._serialized_end=452
55
+ _globals['_PUTREQUEST_ENCRYPTIONCONTEXTJSONENTRY']._serialized_start=454
56
+ _globals['_PUTREQUEST_ENCRYPTIONCONTEXTJSONENTRY']._serialized_end=514
57
+ _globals['_PUTWRITESREQUEST']._serialized_start=517
58
+ _globals['_PUTWRITESREQUEST']._serialized_end=814
59
+ _globals['_PUTWRITESREQUEST_ENCRYPTIONCONTEXTJSONENTRY']._serialized_start=454
60
+ _globals['_PUTWRITESREQUEST_ENCRYPTIONCONTEXTJSONENTRY']._serialized_end=514
61
+ _globals['_CAPABILITIES']._serialized_start=817
62
+ _globals['_CAPABILITIES']._serialized_end=951
63
+ _globals['_LISTREQUEST']._serialized_start=954
64
+ _globals['_LISTREQUEST']._serialized_end=1271
65
+ _globals['_LISTREQUEST_ENCRYPTIONCONTEXTJSONENTRY']._serialized_start=454
66
+ _globals['_LISTREQUEST_ENCRYPTIONCONTEXTJSONENTRY']._serialized_end=514
67
+ _globals['_DELETETHREADREQUEST']._serialized_start=1273
68
+ _globals['_DELETETHREADREQUEST']._serialized_end=1313
69
+ _globals['_DELETEFORRUNSREQUEST']._serialized_start=1315
70
+ _globals['_DELETEFORRUNSREQUEST']._serialized_end=1354
71
+ _globals['_COPYTHREADREQUEST']._serialized_start=1356
72
+ _globals['_COPYTHREADREQUEST']._serialized_end=1421
73
+ _globals['_PRUNEREQUEST']._serialized_start=1424
74
+ _globals['_PRUNEREQUEST']._serialized_end=1585
75
+ _globals['_PRUNEREQUEST_PRUNESTRATEGY']._serialized_start=1520
76
+ _globals['_PRUNEREQUEST_PRUNESTRATEGY']._serialized_end=1585
77
+ _globals['_GETTUPLEREQUEST']._serialized_start=1588
78
+ _globals['_GETTUPLEREQUEST']._serialized_end=1810
79
+ _globals['_GETTUPLEREQUEST_ENCRYPTIONCONTEXTJSONENTRY']._serialized_start=454
80
+ _globals['_GETTUPLEREQUEST_ENCRYPTIONCONTEXTJSONENTRY']._serialized_end=514
81
+ _globals['_PUTRESPONSE']._serialized_start=1812
82
+ _globals['_PUTRESPONSE']._serialized_end=1882
83
+ _globals['_LISTRESPONSE']._serialized_start=1884
84
+ _globals['_LISTRESPONSE']._serialized_end=1956
85
+ _globals['_GETTUPLERESPONSE']._serialized_start=1958
86
+ _globals['_GETTUPLERESPONSE']._serialized_end=2059
87
+ _globals['_DELTACHANNELHISTORYENTRY']._serialized_start=2061
88
+ _globals['_DELTACHANNELHISTORYENTRY']._serialized_end=2187
89
+ _globals['_GETDELTACHANNELHISTORYREQUEST']._serialized_start=2190
90
+ _globals['_GETDELTACHANNELHISTORYREQUEST']._serialized_end=2471
91
+ _globals['_GETDELTACHANNELHISTORYREQUEST_ENCRYPTIONCONTEXTJSONENTRY']._serialized_start=454
92
+ _globals['_GETDELTACHANNELHISTORYREQUEST_ENCRYPTIONCONTEXTJSONENTRY']._serialized_end=514
93
+ _globals['_GETDELTACHANNELHISTORYRESPONSE']._serialized_start=2474
94
+ _globals['_GETDELTACHANNELHISTORYRESPONSE']._serialized_end=2670
95
+ _globals['_GETDELTACHANNELHISTORYRESPONSE_ENTRIESENTRY']._serialized_start=2584
96
+ _globals['_GETDELTACHANNELHISTORYRESPONSE_ENTRIESENTRY']._serialized_end=2670
97
+ _globals['_CHECKPOINTER']._serialized_start=2673
98
+ _globals['_CHECKPOINTER']._serialized_end=3426
99
+ # @@protoc_insertion_point(module_scope)
@@ -24,8 +24,7 @@ DESCRIPTOR: _descriptor.FileDescriptor
24
24
  class PutRequest(_message.Message):
25
25
  """encryption_context_json: request-scoped encryption context, keyed by name
26
26
  with JSON-encoded values (e.g. {"tenant_id": "\\"acme\\""}). Writes must pass
27
- it because it lives in a Python ContextVar the core server cannot observe;
28
- reads recover it from the stored blob wrapper.
27
+ it because it lives in a Python ContextVar the core server cannot observe.
29
28
  """
30
29
 
31
30
  DESCRIPTOR: _descriptor.Descriptor
@@ -194,16 +193,39 @@ Global___Capabilities: _TypeAlias = Capabilities # noqa: Y015
194
193
  class ListRequest(_message.Message):
195
194
  DESCRIPTOR: _descriptor.Descriptor
196
195
 
196
+ @_typing.final
197
+ class EncryptionContextJsonEntry(_message.Message):
198
+ DESCRIPTOR: _descriptor.Descriptor
199
+
200
+ KEY_FIELD_NUMBER: _builtins.int
201
+ VALUE_FIELD_NUMBER: _builtins.int
202
+ key: _builtins.str
203
+ value: _builtins.bytes
204
+ def __init__(
205
+ self,
206
+ *,
207
+ key: _builtins.str = ...,
208
+ value: _builtins.bytes = ...,
209
+ ) -> None: ...
210
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
211
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
212
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["key", b"key", "value", b"value"] # noqa: Y015
213
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
214
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
215
+
197
216
  CONFIG_FIELD_NUMBER: _builtins.int
198
217
  FILTER_JSON_FIELD_NUMBER: _builtins.int
199
218
  BEFORE_FIELD_NUMBER: _builtins.int
200
219
  LIMIT_FIELD_NUMBER: _builtins.int
220
+ ENCRYPTION_CONTEXT_JSON_FIELD_NUMBER: _builtins.int
201
221
  filter_json: _builtins.bytes
202
222
  limit: _builtins.int
203
223
  @_builtins.property
204
224
  def config(self) -> _engine_common_pb2.EngineRunnableConfig: ...
205
225
  @_builtins.property
206
226
  def before(self) -> _engine_common_pb2.EngineRunnableConfig: ...
227
+ @_builtins.property
228
+ def encryption_context_json(self) -> _containers.ScalarMap[_builtins.str, _builtins.bytes]: ...
207
229
  def __init__(
208
230
  self,
209
231
  *,
@@ -211,10 +233,11 @@ class ListRequest(_message.Message):
211
233
  filter_json: _builtins.bytes = ...,
212
234
  before: _engine_common_pb2.EngineRunnableConfig | None = ...,
213
235
  limit: _builtins.int | None = ...,
236
+ encryption_context_json: _abc.Mapping[_builtins.str, _builtins.bytes] | None = ...,
214
237
  ) -> None: ...
215
238
  _HasFieldArgType: _TypeAlias = _typing.Literal["_limit", b"_limit", "before", b"before", "config", b"config", "limit", b"limit"] # noqa: Y015
216
239
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
217
- _ClearFieldArgType: _TypeAlias = _typing.Literal["_limit", b"_limit", "before", b"before", "config", b"config", "filter_json", b"filter_json", "limit", b"limit"] # noqa: Y015
240
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["_limit", b"_limit", "before", b"before", "config", b"config", "encryption_context_json", b"encryption_context_json", "filter_json", b"filter_json", "limit", b"limit"] # noqa: Y015
218
241
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
219
242
  _WhichOneofReturnType__limit: _TypeAlias = _typing.Literal["limit"] # noqa: Y015
220
243
  _WhichOneofArgType__limit: _TypeAlias = _typing.Literal["_limit", b"_limit"] # noqa: Y015
@@ -330,17 +353,41 @@ Global___PruneRequest: _TypeAlias = PruneRequest # noqa: Y015
330
353
  class GetTupleRequest(_message.Message):
331
354
  DESCRIPTOR: _descriptor.Descriptor
332
355
 
356
+ @_typing.final
357
+ class EncryptionContextJsonEntry(_message.Message):
358
+ DESCRIPTOR: _descriptor.Descriptor
359
+
360
+ KEY_FIELD_NUMBER: _builtins.int
361
+ VALUE_FIELD_NUMBER: _builtins.int
362
+ key: _builtins.str
363
+ value: _builtins.bytes
364
+ def __init__(
365
+ self,
366
+ *,
367
+ key: _builtins.str = ...,
368
+ value: _builtins.bytes = ...,
369
+ ) -> None: ...
370
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
371
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
372
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["key", b"key", "value", b"value"] # noqa: Y015
373
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
374
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
375
+
333
376
  CONFIG_FIELD_NUMBER: _builtins.int
377
+ ENCRYPTION_CONTEXT_JSON_FIELD_NUMBER: _builtins.int
334
378
  @_builtins.property
335
379
  def config(self) -> _engine_common_pb2.EngineRunnableConfig: ...
380
+ @_builtins.property
381
+ def encryption_context_json(self) -> _containers.ScalarMap[_builtins.str, _builtins.bytes]: ...
336
382
  def __init__(
337
383
  self,
338
384
  *,
339
385
  config: _engine_common_pb2.EngineRunnableConfig | None = ...,
386
+ encryption_context_json: _abc.Mapping[_builtins.str, _builtins.bytes] | None = ...,
340
387
  ) -> None: ...
341
388
  _HasFieldArgType: _TypeAlias = _typing.Literal["config", b"config"] # noqa: Y015
342
389
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
343
- _ClearFieldArgType: _TypeAlias = _typing.Literal["config", b"config"] # noqa: Y015
390
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["config", b"config", "encryption_context_json", b"encryption_context_json"] # noqa: Y015
344
391
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
345
392
  def WhichOneof(self, oneof_group: _Never) -> None: ...
346
393
 
@@ -446,10 +493,31 @@ Global___DeltaChannelHistoryEntry: _TypeAlias = DeltaChannelHistoryEntry # noqa
446
493
  class GetDeltaChannelHistoryRequest(_message.Message):
447
494
  DESCRIPTOR: _descriptor.Descriptor
448
495
 
496
+ @_typing.final
497
+ class EncryptionContextJsonEntry(_message.Message):
498
+ DESCRIPTOR: _descriptor.Descriptor
499
+
500
+ KEY_FIELD_NUMBER: _builtins.int
501
+ VALUE_FIELD_NUMBER: _builtins.int
502
+ key: _builtins.str
503
+ value: _builtins.bytes
504
+ def __init__(
505
+ self,
506
+ *,
507
+ key: _builtins.str = ...,
508
+ value: _builtins.bytes = ...,
509
+ ) -> None: ...
510
+ _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
511
+ def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
512
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["key", b"key", "value", b"value"] # noqa: Y015
513
+ def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
514
+ def WhichOneof(self, oneof_group: _Never) -> None: ...
515
+
449
516
  THREAD_ID_FIELD_NUMBER: _builtins.int
450
517
  CHECKPOINT_NS_FIELD_NUMBER: _builtins.int
451
518
  CHECKPOINT_ID_FIELD_NUMBER: _builtins.int
452
519
  CHANNELS_FIELD_NUMBER: _builtins.int
520
+ ENCRYPTION_CONTEXT_JSON_FIELD_NUMBER: _builtins.int
453
521
  thread_id: _builtins.str
454
522
  """Thread whose delta-channel state to reconstruct."""
455
523
  checkpoint_ns: _builtins.str
@@ -462,6 +530,8 @@ class GetDeltaChannelHistoryRequest(_message.Message):
462
530
  def channels(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]:
463
531
  """Channels to reconstruct."""
464
532
 
533
+ @_builtins.property
534
+ def encryption_context_json(self) -> _containers.ScalarMap[_builtins.str, _builtins.bytes]: ...
465
535
  def __init__(
466
536
  self,
467
537
  *,
@@ -469,10 +539,11 @@ class GetDeltaChannelHistoryRequest(_message.Message):
469
539
  checkpoint_ns: _builtins.str = ...,
470
540
  checkpoint_id: _builtins.str = ...,
471
541
  channels: _abc.Iterable[_builtins.str] | None = ...,
542
+ encryption_context_json: _abc.Mapping[_builtins.str, _builtins.bytes] | None = ...,
472
543
  ) -> None: ...
473
544
  _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
474
545
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
475
- _ClearFieldArgType: _TypeAlias = _typing.Literal["channels", b"channels", "checkpoint_id", b"checkpoint_id", "checkpoint_ns", b"checkpoint_ns", "thread_id", b"thread_id"] # noqa: Y015
546
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["channels", b"channels", "checkpoint_id", b"checkpoint_id", "checkpoint_ns", b"checkpoint_ns", "encryption_context_json", b"encryption_context_json", "thread_id", b"thread_id"] # noqa: Y015
476
547
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
477
548
  def WhichOneof(self, oneof_group: _Never) -> None: ...
478
549
 
@@ -25,7 +25,7 @@ _sym_db = _symbol_database.Default()
25
25
  from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
26
26
 
27
27
 
28
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0bstore.proto\x12\x05store\x1a\x1bgoogle/protobuf/empty.proto\"\xb5\x01\n\x0c\x42\x61tchRequest\x12\x16\n\x03ops\x18\x01 \x03(\x0b\x32\t.store.Op\x12O\n\x17\x65ncryption_context_json\x18\x02 \x03(\x0b\x32..store.BatchRequest.EncryptionContextJsonEntry\x1a<\n\x1a\x45ncryptionContextJsonEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\"1\n\rBatchResponse\x12 \n\x07results\x18\x01 \x03(\x0b\x32\x0f.store.OpResult\"\xbe\x01\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\x12!\n\x06\x64\x65lete\x18\x03 \x01(\x0b\x32\x0f.store.DeleteOpH\x00\x12!\n\x06search\x18\x04 \x01(\x0b\x32\x0f.store.SearchOpH\x00\x12\x32\n\x0flist_namespaces\x18\x05 \x01(\x0b\x32\x17.store.ListNamespacesOpH\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\"*\n\x08\x44\x65leteOp\x12\x11\n\tnamespace\x18\x01 \x03(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\"L\n\x0f\x46ilterCondition\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1b\n\x02op\x18\x02 \x01(\x0e\x32\x0f.store.FilterOp\x12\x0f\n\x07operand\x18\x03 \x01(\t\"\xa4\x01\n\x08SearchOp\x12\x18\n\x10namespace_prefix\x18\x01 \x03(\t\x12&\n\x06\x66ilter\x18\x02 \x03(\x0b\x32\x16.store.FilterCondition\x12\r\n\x05limit\x18\x03 \x01(\x05\x12\x0e\n\x06offset\x18\x04 \x01(\x05\x12\x12\n\nrefreshTTL\x18\x06 \x01(\x08\x12#\n\x06vector\x18\x07 \x01(\x0b\x32\x13.store.VectorSearch\"\x94\x01\n\x0cVectorSearch\x12\x17\n\x0fquery_embedding\x18\x01 \x03(\x02\x12*\n\rdistance_type\x18\x02 \x01(\x0e\x32\x13.store.DistanceType\x12\x17\n\x0fvectors_per_doc\x18\x03 \x01(\x05\x12&\n\x0bvector_type\x18\x04 \x01(\x0e\x32\x11.store.VectorType\"D\n\x0eMatchCondition\x12$\n\nmatch_type\x18\x01 \x01(\x0e\x32\x10.store.MatchType\x12\x0c\n\x04path\x18\x02 \x03(\t\"\x88\x01\n\x10ListNamespacesOp\x12/\n\x10match_conditions\x18\x01 \x03(\x0b\x32\x15.store.MatchCondition\x12\x16\n\tmax_depth\x18\x02 \x01(\x05H\x00\x88\x01\x01\x12\r\n\x05limit\x18\x03 \x01(\x05\x12\x0e\n\x06offset\x18\x04 \x01(\x05\x42\x0c\n\n_max_depth\"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\"\xb8\x01\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\x12%\n\x06search\x18\x03 \x01(\x0b\x32\x13.store.SearchResultH\x00\x12\x36\n\x0flist_namespaces\x18\x04 \x01(\x0b\x32\x1b.store.ListNamespacesResultH\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(\t\"\x86\x01\n\nSearchItem\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(\t\x12\x12\n\x05score\x18\x06 \x01(\x01H\x00\x88\x01\x01\x42\x08\n\x06_score\"0\n\x0cSearchResult\x12 \n\x05items\x18\x01 \x03(\x0b\x32\x11.store.SearchItem\"\x1a\n\tNamespace\x12\r\n\x05parts\x18\x01 \x03(\t\"<\n\x14ListNamespacesResult\x12$\n\nnamespaces\x18\x01 \x03(\x0b\x32\x10.store.Namespace*\x93\x01\n\x08\x46ilterOp\x12\x19\n\x15\x46ILTER_OP_UNSPECIFIED\x10\x00\x12\x10\n\x0c\x46ILTER_OP_EQ\x10\x01\x12\x10\n\x0c\x46ILTER_OP_NE\x10\x02\x12\x10\n\x0c\x46ILTER_OP_GT\x10\x03\x12\x11\n\rFILTER_OP_GTE\x10\x04\x12\x10\n\x0c\x46ILTER_OP_LT\x10\x05\x12\x11\n\rFILTER_OP_LTE\x10\x06*~\n\x0c\x44istanceType\x12\x1d\n\x19\x44ISTANCE_TYPE_UNSPECIFIED\x10\x00\x12\x18\n\x14\x44ISTANCE_TYPE_COSINE\x10\x01\x12\x14\n\x10\x44ISTANCE_TYPE_L2\x10\x02\x12\x1f\n\x1b\x44ISTANCE_TYPE_INNER_PRODUCT\x10\x03*Z\n\nVectorType\x12\x1b\n\x17VECTOR_TYPE_UNSPECIFIED\x10\x00\x12\x16\n\x12VECTOR_TYPE_VECTOR\x10\x01\x12\x17\n\x13VECTOR_TYPE_HALFVEC\x10\x02*U\n\tMatchType\x12\x1a\n\x16MATCH_TYPE_UNSPECIFIED\x10\x00\x12\x15\n\x11MATCH_TYPE_PREFIX\x10\x01\x12\x15\n\x11MATCH_TYPE_SUFFIX\x10\x02\x32;\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')
28
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0bstore.proto\x12\x05store\x1a\x1bgoogle/protobuf/empty.proto\"\xb5\x01\n\x0c\x42\x61tchRequest\x12\x16\n\x03ops\x18\x01 \x03(\x0b\x32\t.store.Op\x12O\n\x17\x65ncryption_context_json\x18\x02 \x03(\x0b\x32..store.BatchRequest.EncryptionContextJsonEntry\x1a<\n\x1a\x45ncryptionContextJsonEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\"1\n\rBatchResponse\x12 \n\x07results\x18\x01 \x03(\x0b\x32\x0f.store.OpResult\"\xbe\x01\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\x12!\n\x06\x64\x65lete\x18\x03 \x01(\x0b\x32\x0f.store.DeleteOpH\x00\x12!\n\x06search\x18\x04 \x01(\x0b\x32\x0f.store.SearchOpH\x00\x12\x32\n\x0flist_namespaces\x18\x05 \x01(\x0b\x32\x17.store.ListNamespacesOpH\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\"*\n\x08\x44\x65leteOp\x12\x11\n\tnamespace\x18\x01 \x03(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\"L\n\x0f\x46ilterCondition\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1b\n\x02op\x18\x02 \x01(\x0e\x32\x0f.store.FilterOp\x12\x0f\n\x07operand\x18\x03 \x01(\t\"\xa4\x01\n\x08SearchOp\x12\x18\n\x10namespace_prefix\x18\x01 \x03(\t\x12&\n\x06\x66ilter\x18\x02 \x03(\x0b\x32\x16.store.FilterCondition\x12\r\n\x05limit\x18\x03 \x01(\x05\x12\x0e\n\x06offset\x18\x04 \x01(\x05\x12\x12\n\nrefreshTTL\x18\x06 \x01(\x08\x12#\n\x06vector\x18\x07 \x01(\x0b\x32\x13.store.VectorSearch\"\x94\x01\n\x0cVectorSearch\x12\x17\n\x0fquery_embedding\x18\x01 \x03(\x02\x12*\n\rdistance_type\x18\x02 \x01(\x0e\x32\x13.store.DistanceType\x12\x17\n\x0fvectors_per_doc\x18\x03 \x01(\x05\x12&\n\x0bvector_type\x18\x04 \x01(\x0e\x32\x11.store.VectorType\"D\n\x0eMatchCondition\x12$\n\nmatch_type\x18\x01 \x01(\x0e\x32\x10.store.MatchType\x12\x0c\n\x04path\x18\x02 \x03(\t\"\x88\x01\n\x10ListNamespacesOp\x12/\n\x10match_conditions\x18\x01 \x03(\x0b\x32\x15.store.MatchCondition\x12\x16\n\tmax_depth\x18\x02 \x01(\x05H\x00\x88\x01\x01\x12\r\n\x05limit\x18\x03 \x01(\x05\x12\x0e\n\x06offset\x18\x04 \x01(\x05\x42\x0c\n\n_max_depth\"3\n\x0bVectorValue\x12\x11\n\tvaluePath\x18\x01 \x01(\t\x12\x11\n\tembedding\x18\x02 \x03(\x02\"\x8d\x01\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\x12\x17\n\x0fttlMinutesExact\x18\x06 \x01(\x01\"\xb8\x01\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\x12%\n\x06search\x18\x03 \x01(\x0b\x32\x13.store.SearchResultH\x00\x12\x36\n\x0flist_namespaces\x18\x04 \x01(\x0b\x32\x1b.store.ListNamespacesResultH\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(\t\"\x86\x01\n\nSearchItem\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(\t\x12\x12\n\x05score\x18\x06 \x01(\x01H\x00\x88\x01\x01\x42\x08\n\x06_score\"0\n\x0cSearchResult\x12 \n\x05items\x18\x01 \x03(\x0b\x32\x11.store.SearchItem\"\x1a\n\tNamespace\x12\r\n\x05parts\x18\x01 \x03(\t\"<\n\x14ListNamespacesResult\x12$\n\nnamespaces\x18\x01 \x03(\x0b\x32\x10.store.Namespace*\x93\x01\n\x08\x46ilterOp\x12\x19\n\x15\x46ILTER_OP_UNSPECIFIED\x10\x00\x12\x10\n\x0c\x46ILTER_OP_EQ\x10\x01\x12\x10\n\x0c\x46ILTER_OP_NE\x10\x02\x12\x10\n\x0c\x46ILTER_OP_GT\x10\x03\x12\x11\n\rFILTER_OP_GTE\x10\x04\x12\x10\n\x0c\x46ILTER_OP_LT\x10\x05\x12\x11\n\rFILTER_OP_LTE\x10\x06*~\n\x0c\x44istanceType\x12\x1d\n\x19\x44ISTANCE_TYPE_UNSPECIFIED\x10\x00\x12\x18\n\x14\x44ISTANCE_TYPE_COSINE\x10\x01\x12\x14\n\x10\x44ISTANCE_TYPE_L2\x10\x02\x12\x1f\n\x1b\x44ISTANCE_TYPE_INNER_PRODUCT\x10\x03*Z\n\nVectorType\x12\x1b\n\x17VECTOR_TYPE_UNSPECIFIED\x10\x00\x12\x16\n\x12VECTOR_TYPE_VECTOR\x10\x01\x12\x17\n\x13VECTOR_TYPE_HALFVEC\x10\x02*U\n\tMatchType\x12\x1a\n\x16MATCH_TYPE_UNSPECIFIED\x10\x00\x12\x15\n\x11MATCH_TYPE_PREFIX\x10\x01\x12\x15\n\x11MATCH_TYPE_SUFFIX\x10\x02\x32;\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
29
 
30
30
  _globals = globals()
31
31
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -35,14 +35,14 @@ if not _descriptor._USE_C_DESCRIPTORS:
35
35
  _globals['DESCRIPTOR']._serialized_options = b'Z=github.com/langchain-ai/langgraph-api/core/internal/engine/pb'
36
36
  _globals['_BATCHREQUEST_ENCRYPTIONCONTEXTJSONENTRY']._loaded_options = None
37
37
  _globals['_BATCHREQUEST_ENCRYPTIONCONTEXTJSONENTRY']._serialized_options = b'8\001'
38
- _globals['_FILTEROP']._serialized_start=1925
39
- _globals['_FILTEROP']._serialized_end=2072
40
- _globals['_DISTANCETYPE']._serialized_start=2074
41
- _globals['_DISTANCETYPE']._serialized_end=2200
42
- _globals['_VECTORTYPE']._serialized_start=2202
43
- _globals['_VECTORTYPE']._serialized_end=2292
44
- _globals['_MATCHTYPE']._serialized_start=2294
45
- _globals['_MATCHTYPE']._serialized_end=2379
38
+ _globals['_FILTEROP']._serialized_start=1951
39
+ _globals['_FILTEROP']._serialized_end=2098
40
+ _globals['_DISTANCETYPE']._serialized_start=2100
41
+ _globals['_DISTANCETYPE']._serialized_end=2226
42
+ _globals['_VECTORTYPE']._serialized_start=2228
43
+ _globals['_VECTORTYPE']._serialized_end=2318
44
+ _globals['_MATCHTYPE']._serialized_start=2320
45
+ _globals['_MATCHTYPE']._serialized_end=2405
46
46
  _globals['_BATCHREQUEST']._serialized_start=52
47
47
  _globals['_BATCHREQUEST']._serialized_end=233
48
48
  _globals['_BATCHREQUEST_ENCRYPTIONCONTEXTJSONENTRY']._serialized_start=173
@@ -67,20 +67,20 @@ if not _descriptor._USE_C_DESCRIPTORS:
67
67
  _globals['_LISTNAMESPACESOP']._serialized_end=1187
68
68
  _globals['_VECTORVALUE']._serialized_start=1189
69
69
  _globals['_VECTORVALUE']._serialized_end=1240
70
- _globals['_PUTOP']._serialized_start=1242
71
- _globals['_PUTOP']._serialized_end=1358
72
- _globals['_OPRESULT']._serialized_start=1361
73
- _globals['_OPRESULT']._serialized_end=1545
74
- _globals['_ITEM']._serialized_start=1547
75
- _globals['_ITEM']._serialized_end=1645
76
- _globals['_SEARCHITEM']._serialized_start=1648
77
- _globals['_SEARCHITEM']._serialized_end=1782
78
- _globals['_SEARCHRESULT']._serialized_start=1784
79
- _globals['_SEARCHRESULT']._serialized_end=1832
80
- _globals['_NAMESPACE']._serialized_start=1834
81
- _globals['_NAMESPACE']._serialized_end=1860
82
- _globals['_LISTNAMESPACESRESULT']._serialized_start=1862
83
- _globals['_LISTNAMESPACESRESULT']._serialized_end=1922
84
- _globals['_STORE']._serialized_start=2381
85
- _globals['_STORE']._serialized_end=2440
70
+ _globals['_PUTOP']._serialized_start=1243
71
+ _globals['_PUTOP']._serialized_end=1384
72
+ _globals['_OPRESULT']._serialized_start=1387
73
+ _globals['_OPRESULT']._serialized_end=1571
74
+ _globals['_ITEM']._serialized_start=1573
75
+ _globals['_ITEM']._serialized_end=1671
76
+ _globals['_SEARCHITEM']._serialized_start=1674
77
+ _globals['_SEARCHITEM']._serialized_end=1808
78
+ _globals['_SEARCHRESULT']._serialized_start=1810
79
+ _globals['_SEARCHRESULT']._serialized_end=1858
80
+ _globals['_NAMESPACE']._serialized_start=1860
81
+ _globals['_NAMESPACE']._serialized_end=1886
82
+ _globals['_LISTNAMESPACESRESULT']._serialized_start=1888
83
+ _globals['_LISTNAMESPACESRESULT']._serialized_end=1948
84
+ _globals['_STORE']._serialized_start=2407
85
+ _globals['_STORE']._serialized_end=2466
86
86
  # @@protoc_insertion_point(module_scope)
@@ -472,10 +472,14 @@ class PutOp(_message.Message):
472
472
  VALUE_JSON_FIELD_NUMBER: _builtins.int
473
473
  TTLMINUTES_FIELD_NUMBER: _builtins.int
474
474
  VECTORS_FIELD_NUMBER: _builtins.int
475
+ TTLMINUTESEXACT_FIELD_NUMBER: _builtins.int
475
476
  key: _builtins.str
476
477
  value_json: _builtins.bytes
477
478
  """JSON-encoded value (orjson)."""
478
479
  ttlMinutes: _builtins.int
480
+ """Whole minutes, rounded up; stored as ttl_minutes and used for TTL refresh."""
481
+ ttlMinutesExact: _builtins.float
482
+ """Exact, possibly fractional TTL in minutes; sets the initial expires_at."""
479
483
  @_builtins.property
480
484
  def namespace(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ...
481
485
  @_builtins.property
@@ -490,10 +494,11 @@ class PutOp(_message.Message):
490
494
  value_json: _builtins.bytes = ...,
491
495
  ttlMinutes: _builtins.int = ...,
492
496
  vectors: _abc.Iterable[Global___VectorValue] | None = ...,
497
+ ttlMinutesExact: _builtins.float = ...,
493
498
  ) -> None: ...
494
499
  _HasFieldArgType: _TypeAlias = _Never # noqa: Y015
495
500
  def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
496
- _ClearFieldArgType: _TypeAlias = _typing.Literal["key", b"key", "namespace", b"namespace", "ttlMinutes", b"ttlMinutes", "value_json", b"value_json", "vectors", b"vectors"] # noqa: Y015
501
+ _ClearFieldArgType: _TypeAlias = _typing.Literal["key", b"key", "namespace", b"namespace", "ttlMinutes", b"ttlMinutes", "ttlMinutesExact", b"ttlMinutesExact", "value_json", b"value_json", "vectors", b"vectors"] # noqa: Y015
497
502
  def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
498
503
  def WhichOneof(self, oneof_group: _Never) -> None: ...
499
504
 
@@ -1 +0,0 @@
1
- __version__ = "0.17.0.dev2"