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:
@@ -229,7 +229,7 @@ const LOCALES = {
|
||||
tab_memory: 'Memory',
|
||||
tab_workspaces: 'Spaces',
|
||||
tab_profiles: 'Profiles',
|
||||
tab_todos: 'Todos',
|
||||
|
||||
new_conversation: 'New conversation',
|
||||
filter_conversations: 'Filter conversations...',
|
||||
session_time_unknown: 'Unknown',
|
||||
@@ -249,7 +249,7 @@ const LOCALES = {
|
||||
search_skills: 'Search skills...',
|
||||
new_skill: 'New skill',
|
||||
personal_memory: 'Personal memory',
|
||||
current_task_list: 'Current task list',
|
||||
|
||||
workspace_desc: 'Add and switch workspaces for your sessions.',
|
||||
new_profile: 'New profile',
|
||||
transcript: 'Transcript',
|
||||
@@ -403,7 +403,7 @@ const LOCALES = {
|
||||
cron_completion_status: (name, status) => `Cron "${name}" ${status}`,
|
||||
status_failed: 'failed',
|
||||
status_completed: 'completed',
|
||||
todos_no_active: 'No active task list in this session.',
|
||||
|
||||
clear_conversation_title: 'Clear conversation',
|
||||
clear_conversation_message: 'Clear all messages? This cannot be undone.',
|
||||
clear_failed: 'Clear failed: ',
|
||||
@@ -667,7 +667,7 @@ const LOCALES = {
|
||||
tab_memory: 'Память',
|
||||
tab_workspaces: 'Рабочие пространства',
|
||||
tab_profiles: 'Профили',
|
||||
tab_todos: 'Список дел',
|
||||
|
||||
new_conversation: 'Новая беседа',
|
||||
filter_conversations: 'Фильтр бесед...',
|
||||
session_time_unknown: 'Неизвестно',
|
||||
@@ -714,7 +714,7 @@ const LOCALES = {
|
||||
search_skills: 'Поиск навыков...',
|
||||
new_skill: 'Новый навык',
|
||||
personal_memory: 'Личная память',
|
||||
current_task_list: 'Текущий список задач',
|
||||
|
||||
workspace_desc: 'Добавляйте рабочие пространства и переключайтесь между ними в своих сеансах.',
|
||||
new_profile: 'Новый профиль',
|
||||
transcript: 'Транскрипт',
|
||||
@@ -864,7 +864,7 @@ const LOCALES = {
|
||||
cron_completion_status: (name, status) => `Cron-задание «${name}» — ${status}`,
|
||||
status_failed: 'неудачно',
|
||||
status_completed: 'завершено',
|
||||
todos_no_active: 'В этой сессии нет активного списка задач.',
|
||||
|
||||
clear_conversation_title: 'Очистить беседу',
|
||||
clear_conversation_message: 'Очистить все сообщения? Это действие нельзя отменить.',
|
||||
clear_failed: 'Не удалось очистить: ',
|
||||
@@ -1133,7 +1133,7 @@ const LOCALES = {
|
||||
tab_memory: 'Memoria',
|
||||
tab_workspaces: 'Espacios',
|
||||
tab_profiles: 'Perfiles',
|
||||
tab_todos: 'Todos',
|
||||
|
||||
new_conversation: 'Nueva conversación',
|
||||
filter_conversations: 'Filtrar conversaciones...',
|
||||
session_time_unknown: 'Desconocido',
|
||||
@@ -1153,7 +1153,7 @@ const LOCALES = {
|
||||
search_skills: 'Buscar skills...',
|
||||
new_skill: 'Nueva skill',
|
||||
personal_memory: 'Memoria personal',
|
||||
current_task_list: 'Lista de tareas actual',
|
||||
|
||||
workspace_desc: 'Añade y cambia espacios de trabajo para tus sesiones.',
|
||||
new_profile: 'Nuevo perfil',
|
||||
transcript: 'Transcripción',
|
||||
@@ -1307,7 +1307,7 @@ const LOCALES = {
|
||||
cron_completion_status: (name, status) => `Cron "${name}" ${status}`,
|
||||
status_failed: 'failed',
|
||||
status_completed: 'completed',
|
||||
todos_no_active: 'No active task list in this session.',
|
||||
|
||||
clear_conversation_title: 'Clear conversation',
|
||||
clear_conversation_message: 'Clear all messages? This cannot be undone.',
|
||||
clear_failed: 'Clear failed: ',
|
||||
@@ -1580,7 +1580,7 @@ const LOCALES = {
|
||||
tab_memory: 'Gedächtnis',
|
||||
tab_workspaces: 'Spaces',
|
||||
tab_profiles: 'Profile',
|
||||
tab_todos: 'Todos',
|
||||
|
||||
new_conversation: 'Neuer Chat',
|
||||
filter_conversations: 'Chats filtern...',
|
||||
scheduled_jobs: 'Geplante Aufgaben',
|
||||
@@ -1589,7 +1589,7 @@ const LOCALES = {
|
||||
search_skills: 'Skills suchen...',
|
||||
new_skill: 'Neuer Skill',
|
||||
personal_memory: 'Persönliches Gedächtnis',
|
||||
current_task_list: 'Aktuelle Aufgabenliste',
|
||||
|
||||
workspace_desc: 'Workspaces hinzufügen und wechseln.',
|
||||
new_profile: 'Neues Profil',
|
||||
transcript: 'Protokoll',
|
||||
@@ -1797,7 +1797,7 @@ const LOCALES = {
|
||||
tab_memory: '记忆',
|
||||
tab_skills: '技能',
|
||||
tab_tasks: '任务',
|
||||
tab_todos: '待办',
|
||||
|
||||
tab_workspaces: '工作区',
|
||||
tab_profiles: '配置',
|
||||
new_conversation: '新建对话',
|
||||
@@ -1819,7 +1819,7 @@ const LOCALES = {
|
||||
new_skill: '新技能',
|
||||
save_skill: '保存技能',
|
||||
personal_memory: '个人记忆',
|
||||
current_task_list: '当前任务列表',
|
||||
|
||||
workspace_desc: '为你的会话添加并切换工作区。',
|
||||
new_profile: '新配置',
|
||||
transcript: '记录',
|
||||
@@ -1971,7 +1971,7 @@ const LOCALES = {
|
||||
cron_completion_status: (name, status) => `定时任务“${name}”${status}`,
|
||||
status_failed: '失败',
|
||||
status_completed: '完成',
|
||||
todos_no_active: '此会话暂无活动任务列表。',
|
||||
|
||||
clear_conversation_title: '清空对话',
|
||||
clear_conversation_message: '要清空所有消息吗?此操作无法撤销。',
|
||||
clear_failed: '清空失败:',
|
||||
@@ -2246,7 +2246,6 @@ const LOCALES = {
|
||||
new_skill: '\u65b0\u6280\u80fd',
|
||||
save_skill: '\u5132\u5b58\u6280\u80fd',
|
||||
personal_memory: '\u500b\u4eba\u8a18\u61b6',
|
||||
current_task_list: '\u76ee\u524d\u4efb\u52d9\u6e05\u55ae',
|
||||
new_profile: '\u65b0\u914d\u7f6e\u6a94',
|
||||
transcript: '\u8a18\u9304',
|
||||
download_transcript: '\u4e0b\u8f09\u8a18\u9304',
|
||||
|
||||
Reference in New Issue
Block a user