langgraph-api 0.0.33__tar.gz → 0.0.34__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (100) hide show
  1. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/PKG-INFO +2 -2
  2. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/serde.py +9 -3
  3. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_storage/checkpoint.py +9 -1
  4. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_storage/ops.py +12 -2
  5. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/pyproject.toml +2 -2
  6. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/LICENSE +0 -0
  7. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/README.md +0 -0
  8. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/__init__.py +0 -0
  9. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/api/__init__.py +0 -0
  10. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/api/assistants.py +0 -0
  11. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/api/mcp.py +0 -0
  12. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/api/meta.py +0 -0
  13. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/api/openapi.py +0 -0
  14. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/api/runs.py +0 -0
  15. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/api/store.py +0 -0
  16. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/api/threads.py +0 -0
  17. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/api/ui.py +0 -0
  18. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/asyncio.py +0 -0
  19. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/auth/__init__.py +0 -0
  20. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/auth/custom.py +0 -0
  21. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/auth/langsmith/__init__.py +0 -0
  22. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/auth/langsmith/backend.py +0 -0
  23. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/auth/langsmith/client.py +0 -0
  24. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/auth/middleware.py +0 -0
  25. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/auth/noop.py +0 -0
  26. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/auth/studio_user.py +0 -0
  27. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/cli.py +0 -0
  28. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/command.py +0 -0
  29. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/config.py +0 -0
  30. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/cron_scheduler.py +0 -0
  31. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/errors.py +0 -0
  32. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/graph.py +0 -0
  33. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/http.py +0 -0
  34. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/.gitignore +0 -0
  35. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/base.py +0 -0
  36. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/build.mts +0 -0
  37. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/client.mts +0 -0
  38. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/errors.py +0 -0
  39. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/global.d.ts +0 -0
  40. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/package.json +0 -0
  41. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/remote.py +0 -0
  42. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/schema.py +0 -0
  43. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/src/graph.mts +0 -0
  44. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/src/hooks.mjs +0 -0
  45. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/src/parser/parser.mts +0 -0
  46. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/src/parser/parser.worker.mjs +0 -0
  47. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/src/schema/types.mts +0 -0
  48. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/src/schema/types.template.mts +0 -0
  49. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/src/utils/importMap.mts +0 -0
  50. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/src/utils/pythonSchemas.mts +0 -0
  51. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/src/utils/serde.mts +0 -0
  52. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/sse.py +0 -0
  53. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/tests/api.test.mts +0 -0
  54. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/tests/compose-postgres.yml +0 -0
  55. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/tests/graphs/.gitignore +0 -0
  56. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/tests/graphs/agent.css +0 -0
  57. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/tests/graphs/agent.mts +0 -0
  58. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/tests/graphs/agent.ui.tsx +0 -0
  59. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/tests/graphs/delay.mts +0 -0
  60. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/tests/graphs/error.mts +0 -0
  61. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/tests/graphs/langgraph.json +0 -0
  62. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/tests/graphs/nested.mts +0 -0
  63. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/tests/graphs/package.json +0 -0
  64. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/tests/graphs/weather.mts +0 -0
  65. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/tests/graphs/yarn.lock +0 -0
  66. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/tests/parser.test.mts +0 -0
  67. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/tests/utils.mts +0 -0
  68. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/js/yarn.lock +0 -0
  69. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/lifespan.py +0 -0
  70. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/logging.py +0 -0
  71. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/metadata.py +0 -0
  72. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/middleware/__init__.py +0 -0
  73. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/middleware/http_logger.py +0 -0
  74. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/middleware/private_network.py +0 -0
  75. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/models/__init__.py +0 -0
  76. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/models/run.py +0 -0
  77. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/patch.py +0 -0
  78. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/queue_entrypoint.py +0 -0
  79. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/route.py +0 -0
  80. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/schema.py +0 -0
  81. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/server.py +0 -0
  82. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/sse.py +0 -0
  83. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/state.py +0 -0
  84. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/stream.py +0 -0
  85. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/utils.py +0 -0
  86. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/validation.py +0 -0
  87. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/webhook.py +0 -0
  88. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_api/worker.py +0 -0
  89. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_license/__init__.py +0 -0
  90. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_license/middleware.py +0 -0
  91. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_license/validation.py +0 -0
  92. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_storage/__init__.py +0 -0
  93. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_storage/database.py +0 -0
  94. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_storage/inmem_stream.py +0 -0
  95. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_storage/queue.py +0 -0
  96. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_storage/retry.py +0 -0
  97. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_storage/store.py +0 -0
  98. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/langgraph_storage/ttl_dict.py +0 -0
  99. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/logging.json +0 -0
  100. {langgraph_api-0.0.33 → langgraph_api-0.0.34}/openapi.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: langgraph-api
3
- Version: 0.0.33
3
+ Version: 0.0.34
4
4
  Summary:
5
5
  License: Elastic-2.0
6
6
  Author: Nuno Campos
@@ -15,7 +15,7 @@ Requires-Dist: httpx (>=0.25.0)
15
15
  Requires-Dist: jsonschema-rs (>=0.20.0,<0.30)
16
16
  Requires-Dist: langchain-core (>=0.2.38,<0.4.0)
17
17
  Requires-Dist: langgraph (>=0.2.56,<0.4.0)
18
- Requires-Dist: langgraph-checkpoint (>=2.0.21,<3.0)
18
+ Requires-Dist: langgraph-checkpoint (>=2.0.23,<3.0)
19
19
  Requires-Dist: langgraph-sdk (>=0.1.58,<0.2.0)
20
20
  Requires-Dist: langsmith (>=0.1.63,<0.4.0)
21
21
  Requires-Dist: orjson (>=3.9.7)
@@ -52,11 +52,17 @@ def default(obj):
52
52
  # https://github.com/ijl/orjson#serialize
53
53
  if isinstance(obj, Fragment):
54
54
  return orjson.Fragment(obj.buf)
55
- if hasattr(obj, "model_dump") and callable(obj.model_dump):
55
+ if (
56
+ hasattr(obj, "model_dump")
57
+ and callable(obj.model_dump)
58
+ and not isinstance(obj, type)
59
+ ):
56
60
  return obj.model_dump()
57
- elif hasattr(obj, "dict") and callable(obj.dict):
61
+ elif hasattr(obj, "dict") and callable(obj.dict) and not isinstance(obj, type):
58
62
  return obj.dict()
59
- elif hasattr(obj, "_asdict") and callable(obj._asdict):
63
+ elif (
64
+ hasattr(obj, "_asdict") and callable(obj._asdict) and not isinstance(obj, type)
65
+ ):
60
66
  return obj._asdict()
61
67
  elif isinstance(obj, BaseException):
62
68
  return {"error": type(obj).__name__, "message": str(obj)}
@@ -105,7 +105,15 @@ class InMemorySaver(MemorySaver):
105
105
  MEMORY = InMemorySaver()
106
106
 
107
107
 
108
- def Checkpointer(*args, **kwargs):
108
+ def Checkpointer(*args, unpack_hook=None, **kwargs):
109
+ if unpack_hook is not None:
110
+ saver = InMemorySaver(
111
+ serde=Serializer(__unpack_ext_hook__=unpack_hook), **kwargs
112
+ )
113
+ saver.writes = MEMORY.writes
114
+ saver.blobs = MEMORY.blobs
115
+ saver.storage = MEMORY.storage
116
+ return saver
109
117
  return MEMORY
110
118
 
111
119
 
@@ -15,6 +15,7 @@ from typing import Any, Literal, cast
15
15
  from uuid import UUID, uuid4
16
16
 
17
17
  import structlog
18
+ from langgraph.checkpoint.serde.jsonplus import _msgpack_ext_hook_to_json
18
19
  from langgraph.pregel.debug import CheckpointPayload
19
20
  from langgraph.pregel.types import StateSnapshot
20
21
  from langgraph_sdk import Auth
@@ -949,6 +950,11 @@ class Threads(Authenticated):
949
950
  checkpointer.writes[
950
951
  (str(new_thread_id), checkpoint_ns, checkpoint_id)
951
952
  ] = mapped
953
+ # Copy the blobs
954
+ for k in list(checkpointer.blobs):
955
+ if str(k[0]) == str(thread_id):
956
+ new_key = (str(new_thread_id), *k[1:])
957
+ checkpointer.blobs[new_key] = checkpointer.blobs[k]
952
958
 
953
959
  async def row_generator() -> AsyncIterator[Thread]:
954
960
  yield new_thread
@@ -967,7 +973,7 @@ class Threads(Authenticated):
967
973
  ctx: Auth.types.BaseAuthContext | None = None,
968
974
  ) -> StateSnapshot:
969
975
  """Get state for a thread."""
970
- checkpointer = Checkpointer(conn)
976
+ checkpointer = Checkpointer(conn, unpack_hook=_msgpack_ext_hook_to_json)
971
977
  thread_id = _ensure_uuid(config["configurable"]["thread_id"])
972
978
  # Auth will be applied here so no need to use filters downstream
973
979
  thread_iter = await Threads.get(conn, thread_id, ctx=ctx)
@@ -1186,7 +1192,11 @@ class Threads(Authenticated):
1186
1192
  # If graph_id exists, get state history
1187
1193
  if graph_id := thread_metadata.get("graph_id"):
1188
1194
  async with get_graph(
1189
- graph_id, thread_config, checkpointer=Checkpointer(conn)
1195
+ graph_id,
1196
+ thread_config,
1197
+ checkpointer=Checkpointer(
1198
+ conn, unpack_hook=_msgpack_ext_hook_to_json
1199
+ ),
1190
1200
  ) as graph:
1191
1201
  # Convert before parameter if it's a string
1192
1202
  before_param = (
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "langgraph-api"
3
- version = "0.0.33"
3
+ version = "0.0.34"
4
4
  description = ""
5
5
  authors = [
6
6
  "Nuno Campos <nuno@langchain.dev>",
@@ -24,7 +24,7 @@ sse-starlette = ">=2.1.0,<2.2.0"
24
24
  starlette = ">=0.38.6"
25
25
  watchfiles = ">=0.13"
26
26
  langgraph = ">=0.2.56,<0.4.0"
27
- langgraph-checkpoint = ">=2.0.21,<3.0"
27
+ langgraph-checkpoint = ">=2.0.23,<3.0"
28
28
  orjson = ">=3.9.7"
29
29
  uvicorn = ">=0.26.0"
30
30
  langsmith = ">=0.1.63,<0.4.0"
File without changes
File without changes