Skip to content

Commit 699ebd9

Browse files
committed
Use version info within chat un/serialization
1 parent 165f566 commit 699ebd9

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

shiny/ui/_chat_bookmark.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,10 @@ def get_chatlas_state(
7272
async def get_state() -> Jsonifiable:
7373

7474
turns: list[Turn[Any]] = client.get_turns()
75-
return [turn.model_dump(mode="json") for turn in turns]
75+
return {
76+
"version": 1,
77+
"turns": [turn.model_dump(mode="json") for turn in turns],
78+
}
7679

7780
return get_state
7881

@@ -86,10 +89,20 @@ def set_chatlas_state(
8689

8790
async def set_state(value: Jsonifiable) -> None:
8891

89-
if not isinstance(value, list):
92+
if not isinstance(value, dict):
93+
raise ValueError("Chatlas bookmark value was not a dictionary")
94+
95+
version = value.get("version")
96+
if version != 1:
97+
raise ValueError(f"Unsupported Chatlas bookmark version: {version}")
98+
turns_arr = value.get("turns")
99+
100+
if not isinstance(turns_arr, list):
90101
raise ValueError("Chatlas bookmark value was not a list of objects")
91102

92-
turns: list[Turn[Any]] = [Turn.model_validate(turn_obj) for turn_obj in value]
103+
turns: list[Turn[Any]] = [
104+
Turn.model_validate(turn_obj) for turn_obj in turns_arr
105+
]
93106
client.set_turns(turns) # pyright: ignore[reportUnknownMemberType]
94107

95108
return set_state

0 commit comments

Comments
 (0)