feat(web-ui): add pinned sessions and live monitor in Chat (#118)
* feat: add single-page live session monitor and chat pinning * fix: restore full test green after main merge * fix: use Array.from instead of Set spread for ts-node compatibility [...new Set()] requires downlevelIteration which isn't enabled in ts-node dev mode, causing sonic-boom crash on startup. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: ekko <fqsy1416@gmail.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -73,6 +73,17 @@ export default {
|
||||
deleteSession: 'Diese Sitzung loschen?',
|
||||
sessionDeleted: 'Sitzung geloscht',
|
||||
rename: 'Umbenennen',
|
||||
pin: 'Anheften',
|
||||
unpin: 'Lösen',
|
||||
pinned: 'Angeheftet',
|
||||
chatMode: 'Chat',
|
||||
liveMode: 'Live',
|
||||
liveSessions: 'Live-Sitzungen',
|
||||
recentBadge: 'Kürzlich',
|
||||
linkedSessions: '{count} verknüpft',
|
||||
noVisibleMessages: 'Keine für Menschen sichtbaren Nachrichten.',
|
||||
monitorRoleUser: 'Benutzer',
|
||||
monitorRoleAssistant: 'Assistent',
|
||||
copySessionId: 'Sitzungs-ID kopieren',
|
||||
renamed: 'Umbenannt',
|
||||
renameFailed: 'Umbenennung fehlgeschlagen',
|
||||
@@ -338,6 +349,10 @@ export default {
|
||||
idleMinutes: 'Inaktivitats-Timeout',
|
||||
idleMinutesHint: 'Wartezeit vor automatischer Zurucksetzung (Minuten)',
|
||||
atHour: 'Geplante Zurucksetzungszeit',
|
||||
humanOnly: 'Nur menschliche Sitzungen anzeigen',
|
||||
humanOnlyHint: 'Unteragenten- und Sitzungsmonitor-Rauschen standardmäßig ausblenden',
|
||||
liveMonitorHumanOnly: 'Live-Monitor: nur menschliche Sitzungen anzeigen',
|
||||
liveMonitorHumanOnlyHint: 'Im Live-Monitor Unteragenten- und Sitzungsmonitor-Rauschen standardmäßig ausblenden',
|
||||
atHourHint: 'Sitzung taglich zu dieser Stunde zurucksetzen',
|
||||
},
|
||||
privacy: {
|
||||
|
||||
@@ -86,6 +86,17 @@ export default {
|
||||
deleteSession: 'Delete this session?',
|
||||
sessionDeleted: 'Session deleted',
|
||||
rename: 'Rename',
|
||||
pin: 'Pin',
|
||||
unpin: 'Unpin',
|
||||
pinned: 'Pinned',
|
||||
chatMode: 'Chat',
|
||||
liveMode: 'Live',
|
||||
liveSessions: 'Live Sessions',
|
||||
recentBadge: 'Recent',
|
||||
linkedSessions: '{count} linked',
|
||||
noVisibleMessages: 'No human-visible messages.',
|
||||
monitorRoleUser: 'User',
|
||||
monitorRoleAssistant: 'Assistant',
|
||||
copySessionId: 'Copy Session ID',
|
||||
renamed: 'Renamed',
|
||||
renameFailed: 'Rename failed',
|
||||
@@ -369,6 +380,10 @@ export default {
|
||||
idleMinutes: 'Idle Timeout',
|
||||
idleMinutesHint: 'Wait time before auto-reset (minutes)',
|
||||
atHour: 'Scheduled Reset Time',
|
||||
humanOnly: 'Show human sessions only',
|
||||
humanOnlyHint: 'Hide sub-agent/session monitor noise by default',
|
||||
liveMonitorHumanOnly: 'Live monitor: show human sessions only',
|
||||
liveMonitorHumanOnlyHint: 'Hide sub-agent/session monitor noise in the Live monitor by default',
|
||||
atHourHint: 'Reset session at this hour daily',
|
||||
},
|
||||
privacy: {
|
||||
|
||||
@@ -73,7 +73,18 @@ export default {
|
||||
deleteSession: 'Eliminar esta sesion?',
|
||||
sessionDeleted: 'Sesion eliminada',
|
||||
rename: 'Renombrar',
|
||||
copySessionId: 'Copiar ID de sesion',
|
||||
pin: 'Fijar',
|
||||
unpin: 'Desfijar',
|
||||
pinned: 'Fijados',
|
||||
chatMode: 'Chat',
|
||||
liveMode: 'En vivo',
|
||||
liveSessions: 'Sesiones en vivo',
|
||||
recentBadge: 'Reciente',
|
||||
linkedSessions: '{count} vinculadas',
|
||||
noVisibleMessages: 'No hay mensajes visibles para humanos.',
|
||||
monitorRoleUser: 'Usuario',
|
||||
monitorRoleAssistant: 'Asistente',
|
||||
copySessionId: 'Copiar ID de sesión',
|
||||
renamed: 'Renombrada',
|
||||
renameFailed: 'Error al renombrar',
|
||||
renameSession: 'Renombrar sesion',
|
||||
@@ -338,6 +349,10 @@ export default {
|
||||
idleMinutes: 'Tiempo de inactividad',
|
||||
idleMinutesHint: 'Tiempo de espera antes del reinicio automatico (minutos)',
|
||||
atHour: 'Hora de reinicio programado',
|
||||
humanOnly: 'Mostrar solo sesiones humanas',
|
||||
humanOnlyHint: 'Oculta por defecto el ruido de subagentes y del monitor de sesiones',
|
||||
liveMonitorHumanOnly: 'Monitor en vivo: mostrar solo sesiones humanas',
|
||||
liveMonitorHumanOnlyHint: 'Oculta por defecto el ruido de subagentes y del monitor de sesiones en el monitor en vivo',
|
||||
atHourHint: 'Reiniciar sesion a esta hora todos los dias',
|
||||
},
|
||||
privacy: {
|
||||
|
||||
@@ -73,7 +73,18 @@ export default {
|
||||
deleteSession: 'Supprimer cette session ?',
|
||||
sessionDeleted: 'Session supprimee',
|
||||
rename: 'Renommer',
|
||||
copySessionId: 'Copier l\'ID de session',
|
||||
pin: 'Épingler',
|
||||
unpin: 'Désépingler',
|
||||
pinned: 'Épinglés',
|
||||
chatMode: 'Chat',
|
||||
liveMode: 'Direct',
|
||||
liveSessions: 'Sessions en direct',
|
||||
recentBadge: 'Récent',
|
||||
linkedSessions: '{count} sessions liées',
|
||||
noVisibleMessages: 'Aucun message visible par l’humain.',
|
||||
monitorRoleUser: 'Utilisateur',
|
||||
monitorRoleAssistant: 'Assistant',
|
||||
copySessionId: "Copier l'ID de session",
|
||||
renamed: 'Renomme',
|
||||
renameFailed: 'Echec du renommage',
|
||||
renameSession: 'Renommer la session',
|
||||
@@ -338,6 +349,10 @@ export default {
|
||||
idleMinutes: 'Delai d\'inactivite',
|
||||
idleMinutesHint: 'Temps d\'attente avant reinitialisation automatique (minutes)',
|
||||
atHour: 'Heure de reinitialisation planifiee',
|
||||
humanOnly: 'Afficher uniquement les sessions humaines',
|
||||
humanOnlyHint: 'Masquer par défaut le bruit des sous-agents et du moniteur de session',
|
||||
liveMonitorHumanOnly: 'Moniteur live : n’afficher que les sessions humaines',
|
||||
liveMonitorHumanOnlyHint: 'Masquer par défaut le bruit des sous-agents et du moniteur de session dans le moniteur live',
|
||||
atHourHint: 'Reinitialiser la session a cette heure chaque jour',
|
||||
},
|
||||
privacy: {
|
||||
|
||||
@@ -73,6 +73,17 @@ export default {
|
||||
deleteSession: 'このセッションを削除しますか?',
|
||||
sessionDeleted: 'セッションを削除しました',
|
||||
rename: '名前変更',
|
||||
pin: 'ピン留め',
|
||||
unpin: 'ピン留め解除',
|
||||
pinned: 'ピン留め',
|
||||
chatMode: 'チャット',
|
||||
liveMode: 'ライブ',
|
||||
liveSessions: 'ライブセッション',
|
||||
recentBadge: '最近',
|
||||
linkedSessions: '{count} 件の関連',
|
||||
noVisibleMessages: '人間向けに表示できるメッセージはありません。',
|
||||
monitorRoleUser: 'ユーザー',
|
||||
monitorRoleAssistant: 'アシスタント',
|
||||
copySessionId: 'セッション ID をコピー',
|
||||
renamed: '名前を変更しました',
|
||||
renameFailed: '名前の変更に失敗しました',
|
||||
@@ -338,6 +349,10 @@ export default {
|
||||
idleMinutes: 'アイドルタイムアウト',
|
||||
idleMinutesHint: '自動リセットまでの待機時間(分)',
|
||||
atHour: 'スケジュールリセット時刻',
|
||||
humanOnly: '人間のセッションのみ表示',
|
||||
humanOnlyHint: 'サブエージェントやセッション監視ノイズを既定で隠します',
|
||||
liveMonitorHumanOnly: 'ライブモニター: 人間のセッションのみ表示',
|
||||
liveMonitorHumanOnlyHint: 'ライブモニターでサブエージェントやセッション監視ノイズを既定で隠します',
|
||||
atHourHint: '毎日指定時刻にセッションをリセット',
|
||||
},
|
||||
privacy: {
|
||||
|
||||
@@ -73,6 +73,17 @@ export default {
|
||||
deleteSession: '이 세션을 삭제하시겠습니까?',
|
||||
sessionDeleted: '세션이 삭제되었습니다',
|
||||
rename: '이름 변경',
|
||||
pin: '고정',
|
||||
unpin: '고정 해제',
|
||||
pinned: '고정됨',
|
||||
chatMode: '채팅',
|
||||
liveMode: '라이브',
|
||||
liveSessions: '라이브 세션',
|
||||
recentBadge: '최근',
|
||||
linkedSessions: '{count}개 연결됨',
|
||||
noVisibleMessages: '사람이 볼 수 있는 메시지가 없습니다.',
|
||||
monitorRoleUser: '사용자',
|
||||
monitorRoleAssistant: '어시스턴트',
|
||||
copySessionId: '세션 ID 복사',
|
||||
renamed: '이름이 변경되었습니다',
|
||||
renameFailed: '이름 변경 실패',
|
||||
@@ -338,6 +349,10 @@ export default {
|
||||
idleMinutes: '유휴 시간초과',
|
||||
idleMinutesHint: '자동 초기화 대기 시간 (분)',
|
||||
atHour: '예약 초기화 시간',
|
||||
humanOnly: '사람 세션만 표시',
|
||||
humanOnlyHint: '하위 에이전트 및 세션 모니터 노이즈를 기본으로 숨깁니다',
|
||||
liveMonitorHumanOnly: '라이브 모니터: 사람 세션만 표시',
|
||||
liveMonitorHumanOnlyHint: '라이브 모니터에서 하위 에이전트 및 세션 모니터 노이즈를 기본으로 숨깁니다',
|
||||
atHourHint: '매일 지정한 시간에 세션 초기화',
|
||||
},
|
||||
privacy: {
|
||||
|
||||
@@ -73,7 +73,18 @@ export default {
|
||||
deleteSession: 'Excluir esta sessao?',
|
||||
sessionDeleted: 'Sessao excluida',
|
||||
rename: 'Renomear',
|
||||
copySessionId: 'Copiar ID da sessao',
|
||||
pin: 'Fixar',
|
||||
unpin: 'Desafixar',
|
||||
pinned: 'Fixadas',
|
||||
chatMode: 'Chat',
|
||||
liveMode: 'Ao vivo',
|
||||
liveSessions: 'Sessões ao vivo',
|
||||
recentBadge: 'Recente',
|
||||
linkedSessions: '{count} vinculadas',
|
||||
noVisibleMessages: 'Nenhuma mensagem visível para humanos.',
|
||||
monitorRoleUser: 'Usuário',
|
||||
monitorRoleAssistant: 'Assistente',
|
||||
copySessionId: 'Copiar ID da sessão',
|
||||
renamed: 'Renomeado',
|
||||
renameFailed: 'Falha ao renomear',
|
||||
renameSession: 'Renomear sessao',
|
||||
@@ -338,6 +349,10 @@ export default {
|
||||
idleMinutes: 'Timeout de inatividade',
|
||||
idleMinutesHint: 'Tempo de espera antes da reinicializacao automatica (minutos)',
|
||||
atHour: 'Horario de reinicializacao agendada',
|
||||
humanOnly: 'Mostrar apenas sessões humanas',
|
||||
humanOnlyHint: 'Oculta por padrão o ruído de subagentes e do monitor de sessões',
|
||||
liveMonitorHumanOnly: 'Monitor ao vivo: mostrar apenas sessões humanas',
|
||||
liveMonitorHumanOnlyHint: 'Oculta por padrão o ruído de subagentes e do monitor de sessões no monitor ao vivo',
|
||||
atHourHint: 'Reiniciar sessao neste horario diariamente',
|
||||
},
|
||||
privacy: {
|
||||
|
||||
@@ -86,6 +86,17 @@ export default {
|
||||
deleteSession: '确定删除此会话?',
|
||||
sessionDeleted: '会话已删除',
|
||||
rename: '重命名',
|
||||
pin: '置顶',
|
||||
unpin: '取消置顶',
|
||||
pinned: '已置顶',
|
||||
chatMode: '聊天',
|
||||
liveMode: '实时',
|
||||
liveSessions: '实时会话',
|
||||
recentBadge: '最近',
|
||||
linkedSessions: '关联 {count} 个会话',
|
||||
noVisibleMessages: '没有人类可见消息。',
|
||||
monitorRoleUser: '用户',
|
||||
monitorRoleAssistant: '助手',
|
||||
copySessionId: '复制会话 ID',
|
||||
renamed: '已重命名',
|
||||
renameFailed: '重命名失败',
|
||||
@@ -361,6 +372,10 @@ export default {
|
||||
idleMinutes: '空闲超时',
|
||||
idleMinutesHint: '无操作后自动重置的等待时间(分钟)',
|
||||
atHour: '定时重置时间',
|
||||
humanOnly: '仅显示人类会话',
|
||||
humanOnlyHint: '默认隐藏子代理和会话监看噪音',
|
||||
liveMonitorHumanOnly: '实时监看:仅显示人类会话',
|
||||
liveMonitorHumanOnlyHint: '在实时监看中默认隐藏子代理和会话监看噪音',
|
||||
atHourHint: '每天在指定小时重置会话',
|
||||
},
|
||||
privacy: {
|
||||
|
||||
Reference in New Issue
Block a user