Skip to content

Commit ce601a3

Browse files
committed
fix(core): session store - update a session
resolves #99
1 parent 84272a0 commit ce601a3

File tree

3 files changed

+18
-5
lines changed

3 files changed

+18
-5
lines changed

packages/core/src/flux0_core/sessions.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
from flux0_core.users import UserId
2020

2121
SessionId = NewType("SessionId", str)
22-
SessionMode: TypeAlias = Literal["auto", "manual"]
22+
SessionMode: TypeAlias = Literal["auto", "manual", "record", "replay"]
2323

2424

2525
ConsumerId: TypeAlias = Literal["client"]
@@ -44,6 +44,7 @@ class SessionUpdateParams(TypedDict, total=False):
4444
mode: SessionMode
4545
title: Optional[str]
4646
consumption_offsets: Mapping[ConsumerId, int]
47+
metadata: Optional[Mapping[str, JSONSerializable]]
4748

4849

4950
EventId = NewType("EventId", str)

packages/core/src/flux0_core/storage/nanodb_memory.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
from flux0_core.users import User, UserId, UserStore, UserUpdateParams
2525
from flux0_nanodb.api import DocumentCollection, DocumentDatabase
2626
from flux0_nanodb.query import And, Comparison, QueryFilter
27-
from flux0_nanodb.types import DocumentID, DocumentVersion
27+
from flux0_nanodb.types import DocumentID, DocumentVersion, JSONPatchOperation
2828

2929

3030
#############
@@ -421,7 +421,15 @@ async def update_session(
421421
session_id: SessionId,
422422
params: SessionUpdateParams,
423423
) -> Session:
424-
raise NotImplementedError
424+
update_data = {k: v for k, v in params.items() if v is not None}
425+
patch: List[JSONPatchOperation] = [
426+
{"op": "replace", "path": f"/{k}", "value": v} for k, v in update_data.items()
427+
]
428+
await self._session_col.update_one(Comparison(path="id", op="$eq", value=session_id), patch)
429+
updated = await self.read_session(session_id)
430+
if not updated:
431+
raise ValueError(f"Session not found: {session_id}")
432+
return updated
425433

426434
@override
427435
async def list_sessions(

packages/core/tests/storage/test_nanodb_memory.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import pytest
44
from flux0_core.agents import AgentId, AgentStore, AgentType
5-
from flux0_core.sessions import SessionStore, StatusEventData
5+
from flux0_core.sessions import SessionStore, SessionUpdateParams, StatusEventData
66
from flux0_core.storage.nanodb_memory import (
77
AgentDocumentStore,
88
SessionDocumentStore,
@@ -108,7 +108,11 @@ async def test_session_crud(session_store: SessionStore) -> None:
108108
#
109109
rs = await session_store.read_session(s.id)
110110
assert rs == s
111-
# TODO update
111+
rs = await session_store.update_session(s.id, SessionUpdateParams(title="new title"))
112+
assert rs.title == "new title"
113+
rs = await session_store.read_session(s.id)
114+
assert rs is not None
115+
assert rs.title == "new title"
112116
# delete
113117
#
114118
ok = await session_store.delete_session(s.id)

0 commit comments

Comments
 (0)