Phase 7: Agent Selector — per-agent soul.md + ChromaDB memory filtering

- Agent dropdown UI (chip button + hidden select) in composer header
- Session.agent field persists agent selection across refresh
- soul.md loaded per-agent via ephemeral_system_prompt injection
- ChromaDB memory filtered by agent topic (lotus/, sunflower/, etc.)
- Fixed streaming.py: agent→_ai_agent variable shadowing (lines 1161, 1163)
- New API endpoints: /api/agents/topology, /api/agents/memory/search
- Agent metadata registry with emoji, name, description per Tier-2 agent
This commit is contained in:
Rose
2026-04-20 17:34:58 +02:00
parent 00045314f8
commit c705fad626
14 changed files with 2578 additions and 320 deletions

View File

@@ -45,6 +45,7 @@ class Session:
input_tokens: int=0, output_tokens: int=0, estimated_cost=None,
personality=None,
active_stream_id: str=None,
agent: str=None,
pending_user_message: str=None,
pending_attachments=None,
pending_started_at=None,
@@ -68,6 +69,7 @@ class Session:
self.estimated_cost = estimated_cost
self.personality = personality
self.active_stream_id = active_stream_id
self.agent = agent
self.pending_user_message = pending_user_message
self.pending_attachments = pending_attachments or []
self.pending_started_at = pending_started_at
@@ -103,6 +105,7 @@ class Session:
'title': self.title,
'workspace': self.workspace,
'model': self.model,
'agent': getattr(self, 'agent', None),
'message_count': len(self.messages),
'created_at': self.created_at,
'updated_at': self.updated_at,