ReMe/reme2/memory/runtime_response.py
jinli.yl d0aae68164 up
2026-05-14 11:37:25 +08:00

26 lines
826 B
Python

"""Helpers for serializing Step output onto `RuntimeContext.response`.
Lives next to `runtime_context.py` because both are about the BaseStep
interface — the response side, specifically. Used by every Step that
returns a JSON-shaped payload (memory_*, sync, the three memory
services).
"""
from __future__ import annotations
import json
from datetime import date, datetime
def _to_jsonable(value):
if isinstance(value, (datetime, date)):
return value.isoformat()
if isinstance(value, dict):
return {k: _to_jsonable(v) for k, v in value.items()}
if isinstance(value, (list, tuple, set)):
return [_to_jsonable(v) for v in value]
return value
def _set_answer(context, payload) -> None:
context.response.answer = json.dumps(_to_jsonable(payload), ensure_ascii=False, indent=2)