feat(webui): add automation management view

This commit is contained in:
chengyongru
2026-06-13 23:06:28 +08:00
parent be6419b289
commit e08462ca30
20 changed files with 1710 additions and 8 deletions
+70
View File
@@ -55,6 +55,7 @@
"ariaLabel": "Change language"
},
"apps": "Apps",
"automations": "Automations",
"skills": {
"title": "Skills"
}
@@ -80,6 +81,7 @@
"runtime": "System",
"advanced": "Security",
"apps": "Apps",
"automations": "Automations",
"skills": "Skills"
},
"sections": {
@@ -461,6 +463,74 @@
"loading": "Loading Apps...",
"empty": "No apps match this filter."
},
"automations": {
"kicker": "Workspace automations",
"title": "Automations",
"description": "Review cron reminders, recurring agent turns, one-time jobs, and protected system automations in one place.",
"refresh": "Refresh",
"newInChat": "New in chat",
"stats": {
"active": "Active",
"paused": "Paused",
"failed": "Failed",
"system": "System"
},
"filters": {
"all": "All",
"active": "Active",
"paused": "Paused",
"failed": "Failed",
"system": "System"
},
"search": "Search automation, message, session, or cron expression",
"queue": "Queue",
"loading": "Loading automations...",
"noMatches": "No automations match this view.",
"empty": "No automations yet.",
"oneShot": "One-time",
"systemTask": "System-managed automation",
"labels": {
"schedule": "Schedule",
"next": "Next",
"last": "Last",
"origin": "Origin"
},
"runNow": "Run now",
"pause": "Pause",
"resume": "Resume",
"delete": "Delete",
"protected": "Protected",
"deleteTitle": "Delete automation",
"deleteDescription": "This removes {{name}} from the cron store. Past chat messages stay in the session.",
"cancel": "Cancel",
"status": {
"system": "System",
"pending": "Pending",
"paused": "Paused",
"failed": "Failed",
"active": "Active"
},
"origin": {
"system": "System",
"unknown": "Unknown session"
},
"schedule": {
"at": "At {{time}}",
"every": "Every {{duration}}",
"cron": "Cron {{expr}}",
"cronWithTz": "Cron {{expr}} · {{tz}}",
"custom": "Custom schedule"
},
"next": {
"paused": "Paused",
"pending": "Running soon",
"none": "No next run"
},
"last": {
"never": "Never",
"unknown": "unknown"
}
},
"oauth": {
"authentication": "OAuth authentication",
"signIn": "Sign in",
+70
View File
@@ -55,6 +55,7 @@
"ariaLabel": "Cambiar idioma"
},
"apps": "Apps",
"automations": "Automatizaciones",
"skills": {
"title": "Habilidades"
}
@@ -80,6 +81,7 @@
"cliApps": "Apps CLI",
"mcp": "MCP",
"apps": "Aplicaciones",
"automations": "Automatizaciones",
"skills": "Habilidades"
},
"sections": {
@@ -461,6 +463,74 @@
"loading": "Cargando apps...",
"empty": "Ninguna app coincide con este filtro."
},
"automations": {
"kicker": "Automatizaciones del espacio",
"title": "Automatizaciones",
"description": "Revisa recordatorios cron, turnos recurrentes del agente, automatizaciones de una vez y automatizaciones protegidas del sistema en un solo lugar.",
"refresh": "Actualizar",
"newInChat": "Crear en chat",
"stats": {
"active": "Activas",
"paused": "Pausadas",
"failed": "Fallidas",
"system": "Sistema"
},
"filters": {
"all": "Todas",
"active": "Activas",
"paused": "Pausadas",
"failed": "Fallidas",
"system": "Sistema"
},
"search": "Buscar tarea, mensaje, sesión o expresión cron",
"queue": "Cola",
"loading": "Cargando automatizaciones...",
"noMatches": "No hay automatizaciones que coincidan con esta vista.",
"empty": "Aún no hay automatizaciones.",
"oneShot": "Una vez",
"systemTask": "Automatización administrada por el sistema",
"labels": {
"schedule": "Programación",
"next": "Siguiente",
"last": "Última",
"origin": "Origen"
},
"runNow": "Ejecutar ahora",
"pause": "Pausar",
"resume": "Reanudar",
"delete": "Eliminar",
"protected": "Protegida",
"deleteTitle": "Eliminar automatización",
"deleteDescription": "Esto elimina {{name}} del almacén cron. Los mensajes de chat anteriores permanecen en la sesión.",
"cancel": "Cancelar",
"status": {
"system": "Sistema",
"pending": "Pendiente",
"paused": "Pausada",
"failed": "Fallida",
"active": "Activa"
},
"origin": {
"system": "Sistema",
"unknown": "Sesión desconocida"
},
"schedule": {
"at": "A las {{time}}",
"every": "Cada {{duration}}",
"cron": "Cron {{expr}}",
"cronWithTz": "Cron {{expr}} · {{tz}}",
"custom": "Programación personalizada"
},
"next": {
"paused": "Pausada",
"pending": "Se ejecutará pronto",
"none": "Sin próxima ejecución"
},
"last": {
"never": "Nunca",
"unknown": "desconocido"
}
},
"oauth": {
"authentication": "Autenticación OAuth",
"signIn": "Iniciar sesión",
+70
View File
@@ -55,6 +55,7 @@
"ariaLabel": "Changer de langue"
},
"apps": "Apps",
"automations": "Automatisations",
"skills": {
"title": "Compétences"
}
@@ -80,6 +81,7 @@
"cliApps": "Apps CLI",
"mcp": "MCP",
"apps": "Applications",
"automations": "Automatisations",
"skills": "Compétences"
},
"sections": {
@@ -461,6 +463,74 @@
"loading": "Chargement des apps...",
"empty": "Aucune app ne correspond."
},
"automations": {
"kicker": "Automatisations de lespace",
"title": "Automatisations",
"description": "Passez en revue les rappels cron, tours récurrents de lagent, automatisations ponctuelles et automatisations système protégées au même endroit.",
"refresh": "Actualiser",
"newInChat": "Créer dans le chat",
"stats": {
"active": "Actives",
"paused": "En pause",
"failed": "Échouées",
"system": "Système"
},
"filters": {
"all": "Toutes",
"active": "Actives",
"paused": "En pause",
"failed": "Échouées",
"system": "Système"
},
"search": "Rechercher une tâche, un message, une session ou une expression cron",
"queue": "File",
"loading": "Chargement des automatisations...",
"noMatches": "Aucune automatisation ne correspond à cette vue.",
"empty": "Aucune automatisation pour le moment.",
"oneShot": "Ponctuelle",
"systemTask": "Automatisation gérée par le système",
"labels": {
"schedule": "Planning",
"next": "Prochaine",
"last": "Dernière",
"origin": "Origine"
},
"runNow": "Exécuter maintenant",
"pause": "Mettre en pause",
"resume": "Reprendre",
"delete": "Supprimer",
"protected": "Protégée",
"deleteTitle": "Supprimer lautomatisation",
"deleteDescription": "Cela supprime {{name}} du stockage cron. Les anciens messages de chat restent dans la session.",
"cancel": "Annuler",
"status": {
"system": "Système",
"pending": "En attente",
"paused": "En pause",
"failed": "Échouée",
"active": "En cours"
},
"origin": {
"system": "Système",
"unknown": "Session inconnue"
},
"schedule": {
"at": "À {{time}}",
"every": "Toutes les {{duration}}",
"cron": "Cron {{expr}}",
"cronWithTz": "Cron {{expr}} · {{tz}}",
"custom": "Planning personnalisé"
},
"next": {
"paused": "En pause",
"pending": "Exécution prochaine",
"none": "Aucune prochaine exécution"
},
"last": {
"never": "Jamais",
"unknown": "inconnu"
}
},
"oauth": {
"authentication": "Authentification OAuth",
"signIn": "Se connecter",
+70
View File
@@ -55,6 +55,7 @@
"ariaLabel": "Ganti bahasa"
},
"apps": "Aplikasi",
"automations": "Otomasi",
"skills": {
"title": "Skill"
}
@@ -80,6 +81,7 @@
"cliApps": "Aplikasi CLI",
"mcp": "MCP",
"apps": "Aplikasi",
"automations": "Otomasi",
"skills": "Skill"
},
"sections": {
@@ -461,6 +463,74 @@
"loading": "Memuat aplikasi...",
"empty": "Tidak ada aplikasi yang cocok."
},
"automations": {
"kicker": "Otomasi ruang kerja",
"title": "Otomasi",
"description": "Tinjau pengingat cron, giliran agen berulang, otomasi sekali jalan, dan otomasi sistem terlindungi di satu tempat.",
"refresh": "Segarkan",
"newInChat": "Buat di chat",
"stats": {
"active": "Aktif",
"paused": "Dijeda",
"failed": "Gagal",
"system": "Sistem"
},
"filters": {
"all": "Semua",
"active": "Aktif",
"paused": "Dijeda",
"failed": "Gagal",
"system": "Sistem"
},
"search": "Cari tugas, pesan, sesi, atau ekspresi cron",
"queue": "Antrean",
"loading": "Memuat otomasi...",
"noMatches": "Tidak ada otomasi yang cocok dengan tampilan ini.",
"empty": "Belum ada otomasi.",
"oneShot": "Satu kali",
"systemTask": "Automasi yang dikelola sistem",
"labels": {
"schedule": "Jadwal",
"next": "Berikutnya",
"last": "Terakhir",
"origin": "Asal"
},
"runNow": "Jalankan sekarang",
"pause": "Jeda",
"resume": "Lanjutkan",
"delete": "Hapus",
"protected": "Terlindungi",
"deleteTitle": "Hapus otomasi",
"deleteDescription": "Ini menghapus {{name}} dari penyimpanan cron. Pesan chat sebelumnya tetap ada di sesi.",
"cancel": "Batal",
"status": {
"system": "Sistem",
"pending": "Menunggu",
"paused": "Dijeda",
"failed": "Gagal",
"active": "Aktif"
},
"origin": {
"system": "Sistem",
"unknown": "Sesi tidak dikenal"
},
"schedule": {
"at": "Pada {{time}}",
"every": "Setiap {{duration}}",
"cron": "Cron {{expr}}",
"cronWithTz": "Cron {{expr}} · {{tz}}",
"custom": "Jadwal khusus"
},
"next": {
"paused": "Dijeda",
"pending": "Segera berjalan",
"none": "Tidak ada jadwal berikutnya"
},
"last": {
"never": "Belum pernah",
"unknown": "tidak dikenal"
}
},
"oauth": {
"authentication": "Autentikasi OAuth",
"signIn": "Masuk",
+70
View File
@@ -55,6 +55,7 @@
"ariaLabel": "言語を変更"
},
"apps": "アプリ",
"automations": "自動タスク",
"skills": {
"title": "スキル"
}
@@ -80,6 +81,7 @@
"cliApps": "CLI アプリ",
"mcp": "MCP",
"apps": "アプリ",
"automations": "自動タスク",
"skills": "スキル"
},
"sections": {
@@ -461,6 +463,74 @@
"loading": "アプリを読み込み中...",
"empty": "一致するアプリはありません。"
},
"automations": {
"kicker": "ワークスペースの自動タスク",
"title": "自動タスク",
"description": "cron リマインダー、定期的な agent ターン、一回限りの自動タスク、保護されたシステム自動タスクを一か所で確認できます。",
"refresh": "更新",
"newInChat": "チャットで作成",
"stats": {
"active": "実行中",
"paused": "一時停止",
"failed": "失敗",
"system": "システム"
},
"filters": {
"all": "すべて",
"active": "実行中",
"paused": "一時停止",
"failed": "失敗",
"system": "システム"
},
"search": "タスク、メッセージ、セッション、cron 式を検索",
"queue": "キュー",
"loading": "自動タスクを読み込み中...",
"noMatches": "この表示に一致する自動タスクはありません。",
"empty": "自動タスクはまだありません。",
"oneShot": "一回限り",
"systemTask": "システム管理の自動タスク",
"labels": {
"schedule": "スケジュール",
"next": "次回",
"last": "前回",
"origin": "発生元"
},
"runNow": "今すぐ実行",
"pause": "一時停止",
"resume": "再開",
"delete": "削除",
"protected": "保護済み",
"deleteTitle": "自動タスクを削除",
"deleteDescription": "{{name}} を cron ストアから削除します。過去のチャットメッセージはセッションに残ります。",
"cancel": "キャンセル",
"status": {
"system": "システム",
"pending": "待機中",
"paused": "一時停止",
"failed": "失敗",
"active": "実行中"
},
"origin": {
"system": "システム",
"unknown": "不明なセッション"
},
"schedule": {
"at": "{{time}}",
"every": "{{duration}} ごと",
"cron": "Cron {{expr}}",
"cronWithTz": "Cron {{expr}} · {{tz}}",
"custom": "カスタムスケジュール"
},
"next": {
"paused": "一時停止",
"pending": "まもなく実行",
"none": "次回実行なし"
},
"last": {
"never": "未実行",
"unknown": "不明"
}
},
"oauth": {
"authentication": "OAuth 認証",
"signIn": "サインイン",
+70
View File
@@ -55,6 +55,7 @@
"ariaLabel": "언어 변경"
},
"apps": "앱",
"automations": "자동화",
"skills": {
"title": "스킬"
}
@@ -80,6 +81,7 @@
"cliApps": "CLI 앱",
"mcp": "MCP",
"apps": "앱",
"automations": "자동화",
"skills": "스킬"
},
"sections": {
@@ -461,6 +463,74 @@
"loading": "앱을 불러오는 중...",
"empty": "일치하는 앱이 없습니다."
},
"automations": {
"kicker": "작업 공간 자동화",
"title": "자동화",
"description": "cron 알림, 반복 agent 작업, 일회성 자동화, 보호된 시스템 자동화를 한곳에서 확인합니다.",
"refresh": "새로 고침",
"newInChat": "채팅에서 만들기",
"stats": {
"active": "활성",
"paused": "일시 중지",
"failed": "실패",
"system": "시스템"
},
"filters": {
"all": "전체",
"active": "활성",
"paused": "일시 중지",
"failed": "실패",
"system": "시스템"
},
"search": "작업, 메시지, 세션 또는 cron 식 검색",
"queue": "대기열",
"loading": "자동화를 불러오는 중...",
"noMatches": "이 보기와 일치하는 자동화가 없습니다.",
"empty": "아직 자동화가 없습니다.",
"oneShot": "일회성",
"systemTask": "시스템 관리 자동화",
"labels": {
"schedule": "일정",
"next": "다음",
"last": "마지막",
"origin": "출처"
},
"runNow": "지금 실행",
"pause": "일시 중지",
"resume": "재개",
"delete": "삭제",
"protected": "보호됨",
"deleteTitle": "자동화 삭제",
"deleteDescription": "{{name}}을 cron 저장소에서 삭제합니다. 이전 채팅 메시지는 세션에 남습니다.",
"cancel": "취소",
"status": {
"system": "시스템",
"pending": "대기 중",
"paused": "일시 중지",
"failed": "실패",
"active": "활성"
},
"origin": {
"system": "시스템",
"unknown": "알 수 없는 세션"
},
"schedule": {
"at": "{{time}}",
"every": "{{duration}}마다",
"cron": "Cron {{expr}}",
"cronWithTz": "Cron {{expr}} · {{tz}}",
"custom": "사용자 지정 일정"
},
"next": {
"paused": "일시 중지",
"pending": "곧 실행",
"none": "다음 실행 없음"
},
"last": {
"never": "실행된 적 없음",
"unknown": "알 수 없음"
}
},
"oauth": {
"authentication": "OAuth 인증",
"signIn": "로그인",
+70
View File
@@ -55,6 +55,7 @@
"ariaLabel": "Đổi ngôn ngữ"
},
"apps": "Ứng dụng",
"automations": "Tự động hóa",
"skills": {
"title": "Kỹ năng"
}
@@ -80,6 +81,7 @@
"cliApps": "Ứng dụng CLI",
"mcp": "MCP",
"apps": "Ứng dụng",
"automations": "Tự động hóa",
"skills": "Kỹ năng"
},
"sections": {
@@ -461,6 +463,74 @@
"loading": "Đang tải ứng dụng...",
"empty": "Không có ứng dụng phù hợp."
},
"automations": {
"kicker": "Tự động hóa không gian làm việc",
"title": "Tự động hóa",
"description": "Xem nhắc nhở cron, lượt agent định kỳ, tự động hóa một lần và tự động hóa hệ thống được bảo vệ tại một nơi.",
"refresh": "Làm mới",
"newInChat": "Tạo trong chat",
"stats": {
"active": "Đang chạy",
"paused": "Đã tạm dừng",
"failed": "Thất bại",
"system": "Hệ thống"
},
"filters": {
"all": "Tất cả",
"active": "Đang chạy",
"paused": "Đã tạm dừng",
"failed": "Thất bại",
"system": "Hệ thống"
},
"search": "Tìm tác vụ, tin nhắn, phiên hoặc biểu thức cron",
"queue": "Hàng đợi",
"loading": "Đang tải tự động hóa...",
"noMatches": "Không có tự động hóa phù hợp với chế độ xem này.",
"empty": "Chưa có tự động hóa.",
"oneShot": "Một lần",
"systemTask": "Tự động hóa do hệ thống quản lý",
"labels": {
"schedule": "Lịch",
"next": "Tiếp theo",
"last": "Lần trước",
"origin": "Nguồn"
},
"runNow": "Chạy ngay",
"pause": "Tạm dừng",
"resume": "Tiếp tục",
"delete": "Xóa",
"protected": "Được bảo vệ",
"deleteTitle": "Xóa tự động hóa",
"deleteDescription": "Thao tác này xóa {{name}} khỏi kho cron. Tin nhắn chat trước đó vẫn ở trong phiên.",
"cancel": "Hủy",
"status": {
"system": "Hệ thống",
"pending": "Đang chờ",
"paused": "Đã tạm dừng",
"failed": "Thất bại",
"active": "Đang chạy"
},
"origin": {
"system": "Hệ thống",
"unknown": "Phiên không xác định"
},
"schedule": {
"at": "Vào {{time}}",
"every": "Mỗi {{duration}}",
"cron": "Cron {{expr}}",
"cronWithTz": "Cron {{expr}} · {{tz}}",
"custom": "Lịch tùy chỉnh"
},
"next": {
"paused": "Đã tạm dừng",
"pending": "Sắp chạy",
"none": "Không có lần chạy tiếp theo"
},
"last": {
"never": "Chưa từng chạy",
"unknown": "không xác định"
}
},
"oauth": {
"authentication": "Xác thực OAuth",
"signIn": "Đăng nhập",
+70
View File
@@ -55,6 +55,7 @@
"ariaLabel": "切换语言"
},
"apps": "应用",
"automations": "自动任务",
"skills": {
"title": "技能"
}
@@ -80,6 +81,7 @@
"runtime": "系统",
"advanced": "安全",
"apps": "应用",
"automations": "自动任务",
"skills": "技能"
},
"sections": {
@@ -461,6 +463,74 @@
"loading": "正在加载应用...",
"empty": "没有匹配的应用。"
},
"automations": {
"kicker": "工作区自动任务",
"title": "自动任务",
"description": "统一查看 cron 提醒、周期性 agent 任务、一次性自动任务和受保护的系统自动任务。",
"refresh": "刷新",
"newInChat": "在聊天中创建",
"stats": {
"active": "运行中",
"paused": "已暂停",
"failed": "失败",
"system": "系统"
},
"filters": {
"all": "全部",
"active": "运行中",
"paused": "已暂停",
"failed": "失败",
"system": "系统"
},
"search": "搜索任务、消息、会话或 cron 表达式",
"queue": "任务队列",
"loading": "正在加载自动任务...",
"noMatches": "当前视图没有匹配的自动任务。",
"empty": "暂无自动任务。",
"oneShot": "一次性",
"systemTask": "系统管理的自动任务",
"labels": {
"schedule": "计划",
"next": "下次",
"last": "上次",
"origin": "来源"
},
"runNow": "立即运行",
"pause": "暂停",
"resume": "恢复",
"delete": "删除",
"protected": "受保护",
"deleteTitle": "删除自动任务",
"deleteDescription": "这会从 cron 存储中删除 {{name}},历史聊天消息会保留在会话中。",
"cancel": "取消",
"status": {
"system": "系统",
"pending": "等待中",
"paused": "已暂停",
"failed": "失败",
"active": "运行中"
},
"origin": {
"system": "系统",
"unknown": "未知会话"
},
"schedule": {
"at": "在 {{time}}",
"every": "每 {{duration}}",
"cron": "Cron {{expr}}",
"cronWithTz": "Cron {{expr}} · {{tz}}",
"custom": "自定义计划"
},
"next": {
"paused": "已暂停",
"pending": "即将运行",
"none": "没有下次运行"
},
"last": {
"never": "从未运行",
"unknown": "未知"
}
},
"oauth": {
"authentication": "OAuth 认证",
"signIn": "登录",
+70
View File
@@ -55,6 +55,7 @@
"ariaLabel": "切換語言"
},
"apps": "應用",
"automations": "自動任務",
"skills": {
"title": "技能"
}
@@ -80,6 +81,7 @@
"cliApps": "CLI 應用",
"mcp": "MCP",
"apps": "應用",
"automations": "自動任務",
"skills": "技能"
},
"sections": {
@@ -461,6 +463,74 @@
"loading": "正在載入應用...",
"empty": "沒有符合的應用。"
},
"automations": {
"kicker": "工作區自動任務",
"title": "自動任務",
"description": "集中查看 cron 提醒、週期性 agent 任務、一次性自動任務和受保護的系統自動任務。",
"refresh": "重新整理",
"newInChat": "在聊天中建立",
"stats": {
"active": "執行中",
"paused": "已暫停",
"failed": "失敗",
"system": "系統"
},
"filters": {
"all": "全部",
"active": "執行中",
"paused": "已暫停",
"failed": "失敗",
"system": "系統"
},
"search": "搜尋任務、訊息、會話或 cron 表達式",
"queue": "任務佇列",
"loading": "正在載入自動任務...",
"noMatches": "目前檢視沒有符合的自動任務。",
"empty": "尚無自動任務。",
"oneShot": "一次性",
"systemTask": "系統管理的自動任務",
"labels": {
"schedule": "排程",
"next": "下次",
"last": "上次",
"origin": "來源"
},
"runNow": "立即執行",
"pause": "暫停",
"resume": "恢復",
"delete": "刪除",
"protected": "受保護",
"deleteTitle": "刪除自動任務",
"deleteDescription": "這會從 cron 儲存中刪除 {{name}},歷史聊天訊息會保留在會話中。",
"cancel": "取消",
"status": {
"system": "系統",
"pending": "等待中",
"paused": "已暫停",
"failed": "失敗",
"active": "執行中"
},
"origin": {
"system": "系統",
"unknown": "未知會話"
},
"schedule": {
"at": "於 {{time}}",
"every": "每 {{duration}}",
"cron": "Cron {{expr}}",
"cronWithTz": "Cron {{expr}} · {{tz}}",
"custom": "自訂排程"
},
"next": {
"paused": "已暫停",
"pending": "即將執行",
"none": "沒有下次執行"
},
"last": {
"never": "從未執行",
"unknown": "未知"
}
},
"oauth": {
"authentication": "OAuth 認證",
"signIn": "登入",