From 007b52c1836754fff2dd0f1bd530129552897ac9 Mon Sep 17 00:00:00 2001 From: xintaofei Date: Tue, 31 Mar 2026 12:05:51 +0800 Subject: [PATCH] =?UTF-8?q?=E7=B2=BE=E7=AE=80=E4=BA=8B=E4=BB=B6=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E9=87=8C=E7=9A=84=E4=BA=8B=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/chat_channel/event_subscriber.rs | 70 ------------------- .../src/chat_channel/message_formatter.rs | 28 -------- .../settings/channel-events-tab.tsx | 18 +---- src/i18n/messages/ar.json | 11 +-- src/i18n/messages/de.json | 11 +-- src/i18n/messages/en.json | 11 +-- src/i18n/messages/es.json | 11 +-- src/i18n/messages/fr.json | 11 +-- src/i18n/messages/ja.json | 11 +-- src/i18n/messages/ko.json | 11 +-- src/i18n/messages/pt.json | 11 +-- src/i18n/messages/zh-CN.json | 11 +-- src/i18n/messages/zh-TW.json | 11 +-- 13 files changed, 11 insertions(+), 215 deletions(-) diff --git a/src-tauri/src/chat_channel/event_subscriber.rs b/src-tauri/src/chat_channel/event_subscriber.rs index 5e34115..48ebb64 100644 --- a/src-tauri/src/chat_channel/event_subscriber.rs +++ b/src-tauri/src/chat_channel/event_subscriber.rs @@ -103,34 +103,14 @@ pub fn spawn_event_subscriber( fn parse_event(channel: &str, payload: &serde_json::Value) -> Option<(String, RichMessage)> { match channel { "acp://event" => parse_acp_event(payload), - "folder://git-push-succeeded" => parse_git_push(payload), - "folder://git-commit-succeeded" => parse_git_commit(payload), _ => None, } } fn parse_acp_event(payload: &serde_json::Value) -> Option<(String, RichMessage)> { let event_type = payload.get("type")?.as_str()?; - let connection_id = payload - .get("connection_id") - .and_then(|v| v.as_str()) - .unwrap_or("unknown"); match event_type { - "session_started" => { - let agent_type = payload - .pointer("/data/agent_type") - .and_then(|v| v.as_str()) - .unwrap_or("Unknown Agent"); - let folder = payload - .pointer("/data/folder_name") - .and_then(|v| v.as_str()) - .unwrap_or(connection_id); - Some(( - "session_started".to_string(), - message_formatter::format_session_started(agent_type, folder), - )) - } "turn_complete" => { let stop_reason = payload .pointer("/data/stop_reason") @@ -163,57 +143,7 @@ fn parse_acp_event(payload: &serde_json::Value) -> Option<(String, RichMessage)> message_formatter::format_agent_error(agent_type, message), )) } - "status_changed" => { - let status = payload - .pointer("/data/status") - .and_then(|v| v.as_str())?; - if status != "disconnected" { - return None; - } - let agent_type = payload - .pointer("/data/agent_type") - .and_then(|v| v.as_str()) - .unwrap_or("Unknown Agent"); - Some(( - "status_disconnected".to_string(), - message_formatter::format_agent_disconnected(agent_type), - )) - } - // Phase 2: "permission_request" will be handled here _ => None, } } -fn parse_git_push(payload: &serde_json::Value) -> Option<(String, RichMessage)> { - let folder_name = payload - .get("folder_name") - .and_then(|v| v.as_str()) - .unwrap_or("unknown"); - let branch = payload - .get("branch") - .and_then(|v| v.as_str()) - .unwrap_or("unknown"); - let commits = payload - .get("pushed_commits") - .and_then(|v| v.as_u64()) - .unwrap_or(0) as u32; - Some(( - "git_push".to_string(), - message_formatter::format_git_push(folder_name, branch, commits), - )) -} - -fn parse_git_commit(payload: &serde_json::Value) -> Option<(String, RichMessage)> { - let folder_name = payload - .get("folder_name") - .and_then(|v| v.as_str()) - .unwrap_or("unknown"); - let files = payload - .get("committed_files") - .and_then(|v| v.as_u64()) - .unwrap_or(0) as u32; - Some(( - "git_commit".to_string(), - message_formatter::format_git_commit(folder_name, files), - )) -} diff --git a/src-tauri/src/chat_channel/message_formatter.rs b/src-tauri/src/chat_channel/message_formatter.rs index 68fc8e2..e30dfd8 100644 --- a/src-tauri/src/chat_channel/message_formatter.rs +++ b/src-tauri/src/chat_channel/message_formatter.rs @@ -1,10 +1,5 @@ use super::types::{MessageLevel, RichMessage}; -pub fn format_session_started(agent_type: &str, folder_name: &str) -> RichMessage { - RichMessage::info(format!("{agent_type} 在 {folder_name} 开始了新会话")) - .with_title("新会话") -} - pub fn format_turn_complete(agent_type: &str, stop_reason: &str) -> RichMessage { let reason = match stop_reason { "end_turn" => "正常结束", @@ -25,29 +20,6 @@ pub fn format_agent_error(agent_type: &str, message: &str) -> RichMessage { } } -pub fn format_agent_disconnected(agent_type: &str) -> RichMessage { - RichMessage { - title: Some("代理断开".to_string()), - body: format!("{agent_type} 已断开连接"), - fields: Vec::new(), - level: MessageLevel::Warning, - } -} - -pub fn format_git_push(folder_name: &str, branch: &str, commits: u32) -> RichMessage { - RichMessage::info(format!( - "Git Push 成功: {commits} 个提交推送到 {branch}" - )) - .with_title("Git Push") - .with_field("项目", folder_name) -} - -pub fn format_git_commit(folder_name: &str, files: u32) -> RichMessage { - RichMessage::info(format!("Git Commit: {files} 个文件已提交")) - .with_title("Git Commit") - .with_field("项目", folder_name) -} - pub struct DailyReportData { pub date: String, pub conversations_by_agent: Vec<(String, u32)>, diff --git a/src/components/settings/channel-events-tab.tsx b/src/components/settings/channel-events-tab.tsx index 3ae34a5..acbbcb2 100644 --- a/src/components/settings/channel-events-tab.tsx +++ b/src/components/settings/channel-events-tab.tsx @@ -9,24 +9,12 @@ import { Switch } from "@/components/ui/switch" import { getChatEventFilter, setChatEventFilter } from "@/lib/api" const ALL_EVENT_TYPES = [ - { - id: "session_started", - labelKey: "sessionStarted", - descKey: "sessionStartedDesc", - }, { id: "turn_complete", labelKey: "turnComplete", descKey: "turnCompleteDesc", }, { id: "error", labelKey: "error", descKey: "errorDesc" }, - { - id: "status_disconnected", - labelKey: "statusDisconnected", - descKey: "statusDisconnectedDesc", - }, - { id: "git_push", labelKey: "gitPush", descKey: "gitPushDesc" }, - { id: "git_commit", labelKey: "gitCommit", descKey: "gitCommitDesc" }, ] as const const ALL_IDS = ALL_EVENT_TYPES.map((e) => e.id) @@ -51,8 +39,6 @@ export function ChannelEventsTab() { .finally(() => setLoading(false)) }, []) - const allEnabled = enabledEvents.size === ALL_EVENT_TYPES.length - const handleToggle = useCallback( async (eventId: string, checked: boolean) => { setSaving(true) @@ -86,9 +72,7 @@ export function ChannelEventsTab() { return (
- {allEnabled && ( -

{t("allEnabled")}

- )} +

{t("description")}

{ALL_EVENT_TYPES.map((evt) => ( diff --git a/src/i18n/messages/ar.json b/src/i18n/messages/ar.json index af2b39f..b5f3c35 100644 --- a/src/i18n/messages/ar.json +++ b/src/i18n/messages/ar.json @@ -1733,20 +1733,11 @@ }, "events": { "title": "إشعارات الأحداث", - "description": "تكوين الأحداث التي يتم إرسالها لكل قناة.", - "allEnabled": "جميع الأحداث مفعلة (الافتراضي)", - "sessionStarted": "بدء الجلسة", - "sessionStartedDesc": "عندما يبدأ وكيل الذكاء الاصطناعي جلسة جديدة", + "description": "عند تفعيل الأحداث، سيتم إرسالها إلى القناة عند تشغيلها.", "turnComplete": "اكتمال الدور", "turnCompleteDesc": "عند انتهاء دور الوكيل", "error": "خطأ الوكيل", "errorDesc": "عندما يواجه الوكيل خطأ", - "statusDisconnected": "انقطاع الوكيل", - "statusDisconnectedDesc": "عند فقدان اتصال الوكيل", - "gitPush": "Git Push", - "gitPushDesc": "عند نجاح عملية Git Push", - "gitCommit": "Git Commit", - "gitCommitDesc": "عند نجاح عملية Git Commit", "saved": "تم تحديث فلتر الأحداث.", "saveFailed": "فشل حفظ فلتر الأحداث." } diff --git a/src/i18n/messages/de.json b/src/i18n/messages/de.json index 7f2072a..eabf52b 100644 --- a/src/i18n/messages/de.json +++ b/src/i18n/messages/de.json @@ -1733,20 +1733,11 @@ }, "events": { "title": "Ereignisbenachrichtigungen", - "description": "Konfigurieren Sie, welche Ereignisse an jeden Kanal gesendet werden.", - "allEnabled": "Alle Ereignisse aktiviert (Standard)", - "sessionStarted": "Sitzung gestartet", - "sessionStartedDesc": "Wenn ein KI-Agent eine neue Sitzung startet", + "description": "Nach Aktivierung werden ausgelöste Ereignisse an den Kanal gesendet.", "turnComplete": "Runde abgeschlossen", "turnCompleteDesc": "Wenn eine Agentenrunde endet", "error": "Agentenfehler", "errorDesc": "Wenn ein Agent einen Fehler feststellt", - "statusDisconnected": "Agent getrennt", - "statusDisconnectedDesc": "Wenn die Agentenverbindung verloren geht", - "gitPush": "Git Push", - "gitPushDesc": "Wenn ein Git Push erfolgreich ist", - "gitCommit": "Git Commit", - "gitCommitDesc": "Wenn ein Git Commit erfolgreich ist", "saved": "Ereignisfilter aktualisiert.", "saveFailed": "Fehler beim Speichern des Ereignisfilters." } diff --git a/src/i18n/messages/en.json b/src/i18n/messages/en.json index e195473..73159a2 100644 --- a/src/i18n/messages/en.json +++ b/src/i18n/messages/en.json @@ -1734,20 +1734,11 @@ }, "events": { "title": "Event Notifications", - "description": "Configure which events are pushed to each channel.", - "allEnabled": "All events enabled (default)", - "sessionStarted": "Session Started", - "sessionStartedDesc": "When an AI agent session begins", + "description": "When enabled, triggered events will be pushed to the channel.", "turnComplete": "Turn Complete", "turnCompleteDesc": "When an agent turn ends", "error": "Agent Error", "errorDesc": "When an agent encounters an error", - "statusDisconnected": "Agent Disconnected", - "statusDisconnectedDesc": "When agent connection is lost", - "gitPush": "Git Push", - "gitPushDesc": "When a git push succeeds", - "gitCommit": "Git Commit", - "gitCommitDesc": "When a git commit succeeds", "saved": "Event filter updated.", "saveFailed": "Failed to save event filter." } diff --git a/src/i18n/messages/es.json b/src/i18n/messages/es.json index 926679a..5c03009 100644 --- a/src/i18n/messages/es.json +++ b/src/i18n/messages/es.json @@ -1733,20 +1733,11 @@ }, "events": { "title": "Notificaciones de eventos", - "description": "Configura qué eventos se envían a cada canal.", - "allEnabled": "Todos los eventos habilitados (predeterminado)", - "sessionStarted": "Sesión iniciada", - "sessionStartedDesc": "Cuando un agente IA inicia una nueva sesión", + "description": "Al habilitar eventos, se enviarán al canal cuando se activen.", "turnComplete": "Turno completado", "turnCompleteDesc": "Cuando finaliza un turno del agente", "error": "Error del agente", "errorDesc": "Cuando un agente encuentra un error", - "statusDisconnected": "Agente desconectado", - "statusDisconnectedDesc": "Cuando se pierde la conexión del agente", - "gitPush": "Git Push", - "gitPushDesc": "Cuando un git push tiene éxito", - "gitCommit": "Git Commit", - "gitCommitDesc": "Cuando un git commit tiene éxito", "saved": "Filtro de eventos actualizado.", "saveFailed": "Error al guardar el filtro de eventos." } diff --git a/src/i18n/messages/fr.json b/src/i18n/messages/fr.json index d4ddd24..91073d4 100644 --- a/src/i18n/messages/fr.json +++ b/src/i18n/messages/fr.json @@ -1733,20 +1733,11 @@ }, "events": { "title": "Notifications d'événements", - "description": "Configurez les événements envoyés à chaque canal.", - "allEnabled": "Tous les événements activés (par défaut)", - "sessionStarted": "Session démarrée", - "sessionStartedDesc": "Lorsqu'un agent IA démarre une nouvelle session", + "description": "Une fois activés, les événements déclenchés seront envoyés au canal.", "turnComplete": "Tour terminé", "turnCompleteDesc": "Lorsqu'un tour d'agent se termine", "error": "Erreur de l'agent", "errorDesc": "Lorsqu'un agent rencontre une erreur", - "statusDisconnected": "Agent déconnecté", - "statusDisconnectedDesc": "Lorsque la connexion de l'agent est perdue", - "gitPush": "Git Push", - "gitPushDesc": "Lorsqu'un git push réussit", - "gitCommit": "Git Commit", - "gitCommitDesc": "Lorsqu'un git commit réussit", "saved": "Filtre d'événements mis à jour.", "saveFailed": "Échec de l'enregistrement du filtre d'événements." } diff --git a/src/i18n/messages/ja.json b/src/i18n/messages/ja.json index 65eabb6..20196d8 100644 --- a/src/i18n/messages/ja.json +++ b/src/i18n/messages/ja.json @@ -1733,20 +1733,11 @@ }, "events": { "title": "イベント通知", - "description": "各チャンネルにプッシュするイベントを設定します。", - "allEnabled": "すべてのイベントが有効(デフォルト)", - "sessionStarted": "セッション開始", - "sessionStartedDesc": "AI エージェントが新しいセッションを開始した時", + "description": "イベントを有効にすると、トリガーされた際にチャンネルにプッシュされます。", "turnComplete": "ターン完了", "turnCompleteDesc": "エージェントのターンが終了した時", "error": "エージェントエラー", "errorDesc": "エージェントがエラーに遭遇した時", - "statusDisconnected": "エージェント切断", - "statusDisconnectedDesc": "エージェントの接続が切断された時", - "gitPush": "Git プッシュ", - "gitPushDesc": "Git Push が成功した時", - "gitCommit": "Git コミット", - "gitCommitDesc": "Git Commit が成功した時", "saved": "イベントフィルターを更新しました。", "saveFailed": "イベントフィルターの保存に失敗しました。" } diff --git a/src/i18n/messages/ko.json b/src/i18n/messages/ko.json index da0bc70..ae040c0 100644 --- a/src/i18n/messages/ko.json +++ b/src/i18n/messages/ko.json @@ -1733,20 +1733,11 @@ }, "events": { "title": "이벤트 알림", - "description": "각 채널에 전송할 이벤트를 설정합니다.", - "allEnabled": "모든 이벤트 활성화 (기본값)", - "sessionStarted": "세션 시작", - "sessionStartedDesc": "AI 에이전트가 새 세션을 시작할 때", + "description": "이벤트를 활성화하면, 트리거 시 채널로 푸시됩니다.", "turnComplete": "턴 완료", "turnCompleteDesc": "에이전트 턴이 종료될 때", "error": "에이전트 오류", "errorDesc": "에이전트에 오류가 발생했을 때", - "statusDisconnected": "에이전트 연결 해제", - "statusDisconnectedDesc": "에이전트 연결이 끊어졌을 때", - "gitPush": "Git 푸시", - "gitPushDesc": "Git Push 성공 시", - "gitCommit": "Git 커밋", - "gitCommitDesc": "Git Commit 성공 시", "saved": "이벤트 필터가 업데이트되었습니다.", "saveFailed": "이벤트 필터 저장에 실패했습니다." } diff --git a/src/i18n/messages/pt.json b/src/i18n/messages/pt.json index 8fadb90..47cfa7e 100644 --- a/src/i18n/messages/pt.json +++ b/src/i18n/messages/pt.json @@ -1733,20 +1733,11 @@ }, "events": { "title": "Notificações de eventos", - "description": "Configure quais eventos são enviados para cada canal.", - "allEnabled": "Todos os eventos habilitados (padrão)", - "sessionStarted": "Sessão iniciada", - "sessionStartedDesc": "Quando um agente IA inicia uma nova sessão", + "description": "Ao habilitar eventos, eles serão enviados ao canal quando acionados.", "turnComplete": "Turno concluído", "turnCompleteDesc": "Quando um turno do agente termina", "error": "Erro do agente", "errorDesc": "Quando um agente encontra um erro", - "statusDisconnected": "Agente desconectado", - "statusDisconnectedDesc": "Quando a conexão do agente é perdida", - "gitPush": "Git Push", - "gitPushDesc": "Quando um git push é bem-sucedido", - "gitCommit": "Git Commit", - "gitCommitDesc": "Quando um git commit é bem-sucedido", "saved": "Filtro de eventos atualizado.", "saveFailed": "Falha ao salvar o filtro de eventos." } diff --git a/src/i18n/messages/zh-CN.json b/src/i18n/messages/zh-CN.json index 0d69fd9..8e7f959 100644 --- a/src/i18n/messages/zh-CN.json +++ b/src/i18n/messages/zh-CN.json @@ -1734,20 +1734,11 @@ }, "events": { "title": "事件通知", - "description": "配置每个渠道推送哪些事件。", - "allEnabled": "所有事件已启用(默认)", - "sessionStarted": "会话开始", - "sessionStartedDesc": "AI 代理开始新会话时", + "description": "启用事件后,事件被触发时将推送到渠道。", "turnComplete": "对话完成", "turnCompleteDesc": "代理回合结束时", "error": "代理错误", "errorDesc": "代理遇到错误时", - "statusDisconnected": "代理断开", - "statusDisconnectedDesc": "代理连接断开时", - "gitPush": "Git 推送", - "gitPushDesc": "Git Push 成功时", - "gitCommit": "Git 提交", - "gitCommitDesc": "Git Commit 成功时", "saved": "事件过滤已更新。", "saveFailed": "保存事件过滤失败。" } diff --git a/src/i18n/messages/zh-TW.json b/src/i18n/messages/zh-TW.json index 2b28892..b9d07f5 100644 --- a/src/i18n/messages/zh-TW.json +++ b/src/i18n/messages/zh-TW.json @@ -1733,20 +1733,11 @@ }, "events": { "title": "事件通知", - "description": "設定每個頻道推送哪些事件。", - "allEnabled": "所有事件已啟用(預設)", - "sessionStarted": "工作階段開始", - "sessionStartedDesc": "AI 代理開始新工作階段時", + "description": "啟用事件後,事件被觸發時將推送到頻道。", "turnComplete": "對話完成", "turnCompleteDesc": "代理回合結束時", "error": "代理錯誤", "errorDesc": "代理遇到錯誤時", - "statusDisconnected": "代理斷線", - "statusDisconnectedDesc": "代理連線中斷時", - "gitPush": "Git 推送", - "gitPushDesc": "Git Push 成功時", - "gitCommit": "Git 提交", - "gitCommitDesc": "Git Commit 成功時", "saved": "事件篩選已更新。", "saveFailed": "儲存事件篩選失敗。" }