Merge remote-tracking branch 'origin/main'

This commit is contained in:
isYangs
2026-04-02 10:40:50 +08:00
47 changed files with 2475 additions and 384 deletions

View File

@@ -15,7 +15,7 @@ import { cn } from "@/lib/utils"
import { useTranslations } from "next-intl"
import { cjk } from "@streamdown/cjk"
import { code } from "@streamdown/code"
import { math } from "@streamdown/math"
import { createMathPlugin } from "@streamdown/math"
import { mermaid } from "@streamdown/mermaid"
import { ChevronLeftIcon, ChevronRightIcon } from "lucide-react"
import {
@@ -326,6 +326,7 @@ export const MessageBranchPage = ({
export type MessageResponseProps = ComponentProps<typeof Streamdown>
const math = createMathPlugin({ singleDollarTextMath: true })
const streamdownPlugins = { cjk, code, math, mermaid }
function MessageResponseImpl({ className, ...props }: MessageResponseProps) {

View File

@@ -12,7 +12,7 @@ import {
import { cn } from "@/lib/utils"
import { cjk } from "@streamdown/cjk"
import { code } from "@streamdown/code"
import { math } from "@streamdown/math"
import { createMathPlugin } from "@streamdown/math"
import { mermaid } from "@streamdown/mermaid"
import { BrainIcon, ChevronDownIcon } from "lucide-react"
import {
@@ -212,6 +212,7 @@ export type ReasoningContentProps = ComponentProps<
children: string
}
const math = createMathPlugin({ singleDollarTextMath: true })
const streamdownPlugins = { cjk, code, math, mermaid }
export const ReasoningContent = memo(

View File

@@ -18,13 +18,14 @@ import {
} from "@/components/ui/context-menu"
import { cjk } from "@streamdown/cjk"
import { code } from "@streamdown/code"
import { math } from "@streamdown/math"
import { createMathPlugin } from "@streamdown/math"
import { mermaid } from "@streamdown/mermaid"
import { Streamdown } from "streamdown"
import { readFileBase64 } from "@/lib/api"
import { defineMonacoThemes, useMonacoThemeSync } from "@/lib/monaco-themes"
import "@/lib/monaco-local"
const math = createMathPlugin({ singleDollarTextMath: true })
const previewPlugins = { cjk, code, math, mermaid }
function resolveRelativePath(base: string, relative: string): string {

View File

@@ -10,9 +10,15 @@ import { Input } from "@/components/ui/input"
import { getChatCommandPrefix, setChatCommandPrefix } from "@/lib/api"
const BUILT_IN_COMMANDS = [
{ name: "recent", descKey: "recentDesc" },
{ name: "folder [n|path]", descKey: "folderDesc" },
{ name: "agent [n|name]", descKey: "agentDesc" },
{ name: "task <description>", descKey: "taskDesc" },
{ name: "sessions", descKey: "sessionsDesc" },
{ name: "resume [id]", descKey: "resumeDesc" },
{ name: "cancel", descKey: "cancelDesc" },
{ name: "approve [always]", descKey: "approveDesc" },
{ name: "deny", descKey: "denyDesc" },
{ name: "search <keyword>", descKey: "searchDesc" },
{ name: "detail <id>", descKey: "detailDesc" },
{ name: "today", descKey: "todayDesc" },
{ name: "status", descKey: "statusDesc" },
{ name: "help", descKey: "helpDesc" },

View File

@@ -1724,16 +1724,22 @@
},
"commands": {
"title": "الأوامر المدمجة",
"description": "أوامر البوت المتاحة في قنوات المحادثة.",
"description": "أوامر البوت المتاحة في قنوات المحادثة. في المحادثات الجماعية، يلزم @Bot لمعالجة الرسائل.",
"prefixLabel": "بادئة الأمر",
"prefixDescription": "1-3 أحرف غير أبجدية رقمية لتشغيل أوامر البوت (الافتراضي /).",
"prefixSaved": "تم حفظ بادئة الأمر.",
"prefixSaveFailed": "فشل حفظ بادئة الأمر.",
"prefixInvalid": "يجب أن تكون البادئة 1-3 أحرف غير أبجدية رقمية.",
"save": "حفظ",
"recentDesc": "عرض آخر 5 محادثات",
"folderDesc": "اختيار مجلد العمل",
"agentDesc": "اختيار وكيل الذكاء الاصطناعي",
"taskDesc": "إنشاء جلسة وتنفيذ المهمة",
"sessionsDesc": "عرض الجلسات النشطة في المجلد",
"resumeDesc": "المحادثات الأخيرة / استئناف جلسة",
"cancelDesc": "إلغاء المهمة الحالية",
"approveDesc": "الموافقة على طلب إذن الوكيل",
"denyDesc": "رفض طلب إذن الوكيل",
"searchDesc": "البحث في المحادثات حسب الكلمة المفتاحية",
"detailDesc": "عرض تفاصيل المحادثة",
"todayDesc": "ملخص نشاط اليوم",
"statusDesc": "حالة اتصال القناة",
"helpDesc": "عرض المساعدة"

View File

@@ -1058,7 +1058,7 @@
"pushWindow": {
"title": "Code pushen",
"noUnpushedCommits": "Keine ungepushten Commits",
"noRemoteConfigured": "Kein Git-Remote konfiguriert\nFüge einen unter \u201ERemotes verwalten\u201C hinzu",
"noRemoteConfigured": "Kein Git-Remote konfiguriert\nFüge einen unter Remotes verwalten hinzu",
"newBranchNoPushedCommits": "Neuer Branch — pushen, um Remote-Tracking-Branch zu erstellen",
"unpushed": "Nicht gepusht",
"selectFileToViewDiff": "Datei auswählen, um Unterschiede anzuzeigen",
@@ -1724,16 +1724,22 @@
},
"commands": {
"title": "Integrierte Befehle",
"description": "Im Chat-Kanal verfügbare Bot-Befehle.",
"description": "Im Chat-Kanal verfügbare Bot-Befehle. In Gruppenchats ist @Bot erforderlich, um Nachrichten zu verarbeiten.",
"prefixLabel": "Befehlspräfix",
"prefixDescription": "1-3 nicht-alphanumerische Zeichen zum Auslösen von Bot-Befehlen (Standard /).",
"prefixSaved": "Befehlspräfix gespeichert.",
"prefixSaveFailed": "Fehler beim Speichern des Präfixes.",
"prefixInvalid": "Das Präfix muss 1-3 nicht-alphanumerische Zeichen sein.",
"save": "Speichern",
"recentDesc": "Die 5 neuesten Konversationen anzeigen",
"folderDesc": "Arbeitsordner auswählen",
"agentDesc": "KI-Agent auswählen",
"taskDesc": "Sitzung erstellen und Aufgabe ausführen",
"sessionsDesc": "Aktive Sitzungen im Ordner anzeigen",
"resumeDesc": "Neueste Konversationen / Sitzung fortsetzen",
"cancelDesc": "Aktuelle Aufgabe abbrechen",
"approveDesc": "Berechtigungsanfrage des Agenten genehmigen",
"denyDesc": "Berechtigungsanfrage des Agenten ablehnen",
"searchDesc": "Konversationen nach Stichwort suchen",
"detailDesc": "Konversationsdetails anzeigen",
"todayDesc": "Heutige Aktivitätsübersicht",
"statusDesc": "Kanal-Verbindungsstatus",
"helpDesc": "Hilfe anzeigen"

View File

@@ -1724,16 +1724,22 @@
},
"commands": {
"title": "Built-in Commands",
"description": "Bot commands available in chat channels.",
"description": "Bot commands available in chat channels. In group chats, @Bot is required to process messages.",
"prefixLabel": "Command Prefix",
"prefixDescription": "1-3 non-alphanumeric characters used to trigger bot commands (default /).",
"prefixSaved": "Command prefix saved.",
"prefixSaveFailed": "Failed to save command prefix.",
"prefixInvalid": "Prefix must be 1-3 non-alphanumeric characters.",
"save": "Save",
"recentDesc": "Show 5 most recent conversations",
"folderDesc": "Select working folder",
"agentDesc": "Select AI agent",
"taskDesc": "Create session and run task",
"sessionsDesc": "List active sessions in folder",
"resumeDesc": "Recent conversations / resume a session",
"cancelDesc": "Cancel current task",
"approveDesc": "Approve agent permission request",
"denyDesc": "Deny agent permission request",
"searchDesc": "Search conversations by keyword",
"detailDesc": "Show conversation details",
"todayDesc": "Today's activity summary",
"statusDesc": "Channel connection status",
"helpDesc": "Show help message"

View File

@@ -1724,16 +1724,22 @@
},
"commands": {
"title": "Comandos integrados",
"description": "Comandos de bot disponibles en los canales de chat.",
"description": "Comandos de bot disponibles en los canales de chat. En chats grupales, se requiere @Bot para procesar mensajes.",
"prefixLabel": "Prefijo de comando",
"prefixDescription": "1-3 caracteres no alfanuméricos para activar comandos del bot (por defecto /).",
"prefixSaved": "Prefijo de comando guardado.",
"prefixSaveFailed": "Error al guardar el prefijo.",
"prefixInvalid": "El prefijo debe ser de 1-3 caracteres no alfanuméricos.",
"save": "Guardar",
"recentDesc": "Mostrar las 5 conversaciones más recientes",
"folderDesc": "Seleccionar carpeta de trabajo",
"agentDesc": "Seleccionar agente de IA",
"taskDesc": "Crear sesión y ejecutar tarea",
"sessionsDesc": "Listar sesiones activas en la carpeta",
"resumeDesc": "Conversaciones recientes / reanudar una sesión",
"cancelDesc": "Cancelar tarea actual",
"approveDesc": "Aprobar solicitud de permiso del agente",
"denyDesc": "Denegar solicitud de permiso del agente",
"searchDesc": "Buscar conversaciones por palabra clave",
"detailDesc": "Mostrar detalles de la conversación",
"todayDesc": "Resumen de actividad de hoy",
"statusDesc": "Estado de conexión del canal",
"helpDesc": "Mostrar ayuda"

View File

@@ -1724,16 +1724,22 @@
},
"commands": {
"title": "Commandes intégrées",
"description": "Commandes bot disponibles dans les canaux de chat.",
"description": "Commandes bot disponibles dans les canaux de chat. Dans les chats de groupe, @Bot est requis pour traiter les messages.",
"prefixLabel": "Préfixe de commande",
"prefixDescription": "1-3 caractères non alphanumériques pour déclencher les commandes du bot (par défaut /).",
"prefixSaved": "Préfixe de commande enregistré.",
"prefixSaveFailed": "Échec de l'enregistrement du préfixe.",
"prefixInvalid": "Le préfixe doit être de 1-3 caractères non alphanumériques.",
"save": "Enregistrer",
"recentDesc": "Afficher les 5 conversations les plus récentes",
"folderDesc": "Sélectionner le dossier de travail",
"agentDesc": "Sélectionner l'agent IA",
"taskDesc": "Créer une session et exécuter la tâche",
"sessionsDesc": "Lister les sessions actives du dossier",
"resumeDesc": "Conversations récentes / reprendre une session",
"cancelDesc": "Annuler la tâche en cours",
"approveDesc": "Approuver la demande de permission de l'agent",
"denyDesc": "Refuser la demande de permission de l'agent",
"searchDesc": "Rechercher des conversations par mot-clé",
"detailDesc": "Afficher les détails de la conversation",
"todayDesc": "Résumé de l'activité du jour",
"statusDesc": "État de connexion du canal",
"helpDesc": "Afficher l'aide"

View File

@@ -1724,16 +1724,22 @@
},
"commands": {
"title": "組み込みコマンド",
"description": "チャットチャンネルで使用可能な Bot コマンド。",
"description": "チャットチャンネルで使用可能な Bot コマンド。グループチャットではメッセージを処理するために @Bot が必要です。",
"prefixLabel": "コマンドプレフィックス",
"prefixDescription": "Bot コマンドを起動するプレフィックス、1-3 文字の英数字以外の文字(デフォルト /)。",
"prefixSaved": "コマンドプレフィックスを保存しました。",
"prefixSaveFailed": "コマンドプレフィックスの保存に失敗しました。",
"prefixInvalid": "プレフィックスは1-3文字の英数字以外の文字である必要があります。",
"save": "保存",
"recentDesc": "最近の会話5件を表示",
"folderDesc": "作業フォルダを選択",
"agentDesc": "AIエージェントを選択",
"taskDesc": "セッションを作成してタスクを実行",
"sessionsDesc": "フォルダ内のアクティブなセッション一覧",
"resumeDesc": "最近の会話 / セッションを再開",
"cancelDesc": "現在のタスクをキャンセル",
"approveDesc": "エージェントの権限リクエストを承認",
"denyDesc": "エージェントの権限リクエストを拒否",
"searchDesc": "キーワードで会話を検索",
"detailDesc": "会話の詳細を表示",
"todayDesc": "本日のアクティビティ概要",
"statusDesc": "チャンネル接続状態",
"helpDesc": "ヘルプを表示"

View File

@@ -1724,16 +1724,22 @@
},
"commands": {
"title": "내장 명령어",
"description": "채팅 채널에서 사용 가능한 Bot 명령어입니다.",
"description": "채팅 채널에서 사용 가능한 Bot 명령어입니다. 그룹 채팅에서는 메시지를 처리하려면 @Bot이 필요합니다.",
"prefixLabel": "명령어 접두사",
"prefixDescription": "Bot 명령어를 실행하는 접두사, 1-3개의 영숫자가 아닌 문자 (기본값 /).",
"prefixSaved": "명령어 접두사가 저장되었습니다.",
"prefixSaveFailed": "명령어 접두사 저장에 실패했습니다.",
"prefixInvalid": "접두사는 1-3개의 영숫자가 아닌 문자여야 합니다.",
"save": "저장",
"recentDesc": "최근 대화 5개 표시",
"folderDesc": "작업 폴더 선택",
"agentDesc": "AI 에이전트 선택",
"taskDesc": "세션 생성 및 작업 실행",
"sessionsDesc": "폴더 내 활성 세션 목록",
"resumeDesc": "최근 대화 / 세션 재개",
"cancelDesc": "현재 작업 취소",
"approveDesc": "에이전트 권한 요청 승인",
"denyDesc": "에이전트 권한 요청 거부",
"searchDesc": "키워드로 대화 검색",
"detailDesc": "대화 상세 정보 표시",
"todayDesc": "오늘의 활동 요약",
"statusDesc": "채널 연결 상태",
"helpDesc": "도움말 표시"

View File

@@ -1724,16 +1724,22 @@
},
"commands": {
"title": "Comandos integrados",
"description": "Comandos de bot disponíveis nos canais de chat.",
"description": "Comandos de bot disponíveis nos canais de chat. Em chats em grupo, @Bot é necessário para processar mensagens.",
"prefixLabel": "Prefixo de comando",
"prefixDescription": "1-3 caracteres não alfanuméricos para acionar comandos do bot (padrão /).",
"prefixSaved": "Prefixo de comando salvo.",
"prefixSaveFailed": "Falha ao salvar o prefixo.",
"prefixInvalid": "O prefixo deve ser de 1-3 caracteres não alfanuméricos.",
"save": "Salvar",
"recentDesc": "Mostrar as 5 conversas mais recentes",
"folderDesc": "Selecionar pasta de trabalho",
"agentDesc": "Selecionar agente de IA",
"taskDesc": "Criar sessão e executar tarefa",
"sessionsDesc": "Listar sessões ativas na pasta",
"resumeDesc": "Conversas recentes / retomar uma sessão",
"cancelDesc": "Cancelar tarefa atual",
"approveDesc": "Aprovar solicitação de permissão do agente",
"denyDesc": "Negar solicitação de permissão do agente",
"searchDesc": "Pesquisar conversas por palavra-chave",
"detailDesc": "Mostrar detalhes da conversa",
"todayDesc": "Resumo da atividade de hoje",
"statusDesc": "Status da conexão do canal",
"helpDesc": "Mostrar ajuda"

View File

@@ -1724,16 +1724,22 @@
},
"commands": {
"title": "内置指令",
"description": "消息渠道中可用的 Bot 指令。",
"description": "消息渠道中可用的 Bot 指令。群聊中需 @Bot 才会处理消息。",
"prefixLabel": "指令前缀",
"prefixDescription": "触发 Bot 指令的前缀1-3 个非字母数字字符(默认 /)。",
"prefixSaved": "指令前缀已保存。",
"prefixSaveFailed": "保存指令前缀失败。",
"prefixInvalid": "前缀必须是 1-3 个非字母数字字符。",
"save": "保存",
"recentDesc": "最近 5 条会话",
"folderDesc": "选择工作目录",
"agentDesc": "选择 AI Agent",
"taskDesc": "创建会话并执行任务",
"sessionsDesc": "列出当前目录的活跃会话",
"resumeDesc": "最近会话 / 恢复指定会话",
"cancelDesc": "取消当前任务",
"approveDesc": "批准 Agent 权限请求",
"denyDesc": "拒绝 Agent 权限请求",
"searchDesc": "按关键词搜索会话",
"detailDesc": "会话详情",
"todayDesc": "今日活动汇总",
"statusDesc": "渠道连接状态",
"helpDesc": "显示帮助"

View File

@@ -1724,16 +1724,22 @@
},
"commands": {
"title": "內建指令",
"description": "訊息頻道中可用的 Bot 指令。",
"description": "訊息頻道中可用的 Bot 指令。群組聊天中需 @Bot 才會處理訊息。",
"prefixLabel": "指令前綴",
"prefixDescription": "觸發 Bot 指令的前綴1-3 個非字母數字字元(預設 /)。",
"prefixSaved": "指令前綴已儲存。",
"prefixSaveFailed": "儲存指令前綴失敗。",
"prefixInvalid": "前綴必須是 1-3 個非字母數字字元。",
"save": "儲存",
"recentDesc": "最近 5 筆對話",
"folderDesc": "選擇工作目錄",
"agentDesc": "選擇 AI Agent",
"taskDesc": "建立會話並執行任務",
"sessionsDesc": "列出當前目錄的活躍會話",
"resumeDesc": "最近對話 / 恢復指定對話",
"cancelDesc": "取消當前任務",
"approveDesc": "批准 Agent 權限請求",
"denyDesc": "拒絕 Agent 權限請求",
"searchDesc": "依關鍵字搜尋對話",
"detailDesc": "對話詳情",
"todayDesc": "今日活動摘要",
"statusDesc": "頻道連線狀態",
"helpDesc": "顯示說明"