mirror of
https://github.com/agentscope-ai/ReMe.git
synced 2026-10-09 03:20:54 +00:00
Some checks failed
Pre-commit / run (ubuntu-latest) (push) Has been cancelled
docs: add ReMe2 architecture design documentation - Add comprehensive design document (reme2.md) detailing the three-layer architecture (L1/L2/L3) for the vault system - Document new protocols for folder notes and memory management - Specify interface contracts for memory_* and vault_* tools - Outline implementation phases from current state to target refactor: fix typo in personal retriever class - Correct spelling error: 'retri eved_nodes' -> 'retrieved_nodes' in PersonalRetriever.result assignment chore: update gitignore with vault-related patterns - Add '/vault' to ignore vault directory - Add '/reme-plugin' to ignore plugin files - Add '/reme2/vault' to ignore new vault implementation ```
30 lines
1 KiB
Python
30 lines
1 KiB
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, topic_create, the three
|
|
memory services).
|
|
|
|
Was previously at `reme2/mcp/steps/_common.py`, which leaked an MCP
|
|
dependency into `reme2/memory/` services that legitimately need to
|
|
serialize their results — the moved location breaks that cycle.
|
|
"""
|
|
|
|
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)
|