Wire dashboard context into Hearthkeeper

This commit is contained in:
2026-05-12 10:28:33 -05:00
parent c1d6032eb2
commit 74e3c0dcaa
7 changed files with 117 additions and 31 deletions

View File

@@ -80,6 +80,7 @@ class AgentOrchestrator:
"started_at": datetime.utcnow(),
"message_count": 0,
"theme": None,
"dashboard": None,
"last_hearthkeeper_prompt_at": None,
}
self.chat_activity.record_activity(session_id)
@@ -101,6 +102,7 @@ class AgentOrchestrator:
limit=1,
)
message_count = await repo.count_messages(session.id)
dashboard = await repo.get_dashboard(session.id)
last_activity_at = (
recent_messages[0].timestamp if recent_messages else session.started_at
)
@@ -110,6 +112,7 @@ class AgentOrchestrator:
"started_at": session.started_at,
"message_count": message_count,
"theme": session.theme,
"dashboard": Repository.serialize_dashboard(dashboard),
"last_hearthkeeper_prompt_at": None,
}
self.chat_activity.record_activity(session.id, occurred_at=last_activity_at)
@@ -363,15 +366,20 @@ class AgentOrchestrator:
if not session_info:
return None
recent_messages = []
active_chat_messages = []
recent_discussion_messages = []
async for db_session in get_session():
repo = Repository(db_session)
recent_messages = await repo.get_human_messages_since(
active_chat_messages = await repo.get_human_messages_since(
session_id=session_id,
since=datetime.utcnow() - timedelta(minutes=1),
)
recent_discussion_messages = await repo.get_recent_human_messages(
session_id=session_id,
limit=5,
)
if self.response_suppression.should_suppress_response(len(recent_messages)):
if self.response_suppression.should_suppress_response(len(active_chat_messages)):
return {
"session_id": session_id,
"actions_taken": [],
@@ -394,8 +402,13 @@ class AgentOrchestrator:
return None
try:
recent_discussion = [
message.content for message in recent_discussion_messages[:5]
]
agent_response = await self.hearthkeeper.generate_prompt(
theme=session_info.get("theme")
theme=session_info.get("theme"),
dashboard=session_info.get("dashboard"),
recent_discussion=recent_discussion,
)
session_info["last_hearthkeeper_prompt_at"] = datetime.utcnow()
delivery = await self.emit_agent_response(
@@ -433,4 +446,5 @@ class AgentOrchestrator:
"message_count": session["message_count"],
"uptime_seconds": (datetime.utcnow() - session["started_at"]).total_seconds(),
"theme": session.get("theme"),
"dashboard": session.get("dashboard"),
}