diff options
Diffstat (limited to 'agent/orchestrator/context.py')
| -rw-r--r-- | agent/orchestrator/context.py | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/agent/orchestrator/context.py b/agent/orchestrator/context.py index e9c1975..d19d8f3 100644 --- a/agent/orchestrator/context.py +++ b/agent/orchestrator/context.py @@ -11,6 +11,8 @@ from pathlib import Path SENIA_DB = Path("/etc/senia/data/senia.db") +RECENT_FILE = Path("/etc/senia/data/memory/recent.md") +ROLLING_WINDOW_DAYS = 11 def _today_diary_entries() -> list[str]: @@ -31,6 +33,13 @@ def _today_diary_entries() -> list[str]: conn.close() +def _recent_summary() -> str: + if not RECENT_FILE.exists(): + return "" + summary = RECENT_FILE.read_text().strip() + return f"## Recent context (last {ROLLING_WINDOW_DAYS} days)\n{summary}" + + def build_turn_context(user: str | None = None) -> str: diary_entries = _today_diary_entries() diary = ( @@ -38,10 +47,18 @@ def build_turn_context(user: str | None = None) -> str: if diary_entries else "(no entries yet today)" ) + recent = _recent_summary() now = datetime.now(timezone.utc).astimezone().isoformat(timespec="seconds") - time_section = f"## Current time\n{now}\n\n" - user_section = f"## User\n{user}\n\n" if user else "" + time_section = f"## Current time\n{now}" + user_section = f"## Speaking with\n{user}" if user else "" + recent_section = _recent_summary() diary_section = f"## Today's diary so far\n{diary}" + parts = [ + time_section, + user_section, + recent_section, + diary_section, + ] - return f"{time_section}{user_section}{diary_section}" + return "\n\n".join(p for p in parts if p) |
