aboutsummaryrefslogtreecommitdiff
path: root/agent/orchestrator/context.py
diff options
context:
space:
mode:
Diffstat (limited to 'agent/orchestrator/context.py')
-rw-r--r--agent/orchestrator/context.py23
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)