1818from typing import Any , Dict , Iterator , Optional , Sequence , Tuple , TypedDict
1919
2020from google .cloud .spanner_dbapi import Cursor # type: ignore[import-untyped]
21- from langchain_core .load .dump import dumps
21+ from google .cloud .spanner_v1 import JsonObject
22+ from langchain_core .load .dump import dumpd
2223from langchain_core .runnables import RunnableConfig
2324from langgraph .checkpoint .base import (
2425 WRITES_IDX_MAP ,
@@ -135,8 +136,8 @@ def __init__(
135136 checkpoint_ns STRING(1024) NOT NULL DEFAULT (''),
136137 checkpoint_id STRING(1024) NOT NULL,
137138 parent_checkpoint_id STRING(1024),
138- checkpoint STRING(MAX) NOT NULL,
139- metadata STRING(MAX) NOT NULL DEFAULT ('{}'),
139+ checkpoint JSON NOT NULL,
140+ metadata JSON NOT NULL DEFAULT (JSON '{}'),
140141 ) PRIMARY KEY (thread_id, checkpoint_ns, checkpoint_id)
141142 """
142143 )
@@ -149,7 +150,7 @@ def __init__(
149150 task_id STRING(1024) NOT NULL,
150151 idx INT64 NOT NULL,
151152 channel STRING(1024) NOT NULL,
152- value STRING(MAX) NOT NULL,
153+ value JSON NOT NULL,
153154 ) PRIMARY KEY (thread_id, checkpoint_ns, checkpoint_id, task_id, idx)
154155 """
155156 )
@@ -368,8 +369,8 @@ def put(
368369 checkpoint_ns ,
369370 checkpoint ["id" ],
370371 config ["configurable" ].get ("checkpoint_id" ),
371- dumps ( checkpoint ),
372- dumps ( metadata ),
372+ JsonObject ( dumpd ( checkpoint ) ),
373+ JsonObject ( dumpd ( metadata ) ),
373374 ),
374375 )
375376 return _config (thread_id , checkpoint_ns , checkpoint ["id" ])
@@ -405,7 +406,7 @@ def put_writes(
405406 task_id ,
406407 WRITES_IDX_MAP .get (channel , idx ),
407408 channel ,
408- dumps ( value ),
409+ JsonObject ( dumpd ( value ) ),
409410 )
410411 for idx , (channel , value ) in enumerate (writes )
411412 ],
0 commit comments