-
-
- {$t('general.browserNotifications')}
- toggleNotifications()} />
-
-
- {$t('general.browserNotificationsDesc')}
-
+
{$t('general.theme')}
+
+ {#each [{ value: 'light' as Theme, label: $t('general.light'), icon: 'sun-light' }, { value: 'dark' as Theme, label: $t('general.dark'), icon: 'half-moon' }, { value: 'system' as Theme, label: $t('general.system'), icon: 'monitor' }] as opt}
+ setTheme(opt.value)}
+ >
+
+ {opt.label}
+
+ {/each}
+
-
-
- {$t('general.notificationSound')}
- notificationSound.set(v)} />
-
+
{$t('general.language')}
+
changeLocale((e.currentTarget as HTMLSelectElement).value)}
+ >
+ {#each supportedLocales as loc}
+ {loc.label}
+ {/each}
+
+
+
+
{$t('general.notifications')}
+
+
+
+
+ {$t('general.browserNotifications')}
+ toggleNotifications()} />
+
+
+ {$t('general.browserNotificationsDesc')}
+
-
-
-
- {$t('general.webhookUrl')}
+
+
+ {$t('general.notificationSound')}
+ notificationSound.set(v)} />
-
+
+
+
+
+ {$t('general.webhookUrl')}
+
-
- {$t('settings.save')}
-
+
+ {$t('general.webhookUrlHint')}
+
+
+
+ {#if $session?.role === 'admin'}
+ {$t('general.updates')}
+
+ {$t('general.updateNotifications')}
+ showUpdateToastPref.set(v)} />
+
- {$t('general.webhookUrlHint')}
+ {$t('general.updateNotificationsDesc')}
-
-
+ {/if}
- {#if $session?.role === 'admin'}
-
{$t('general.updates')}
-
- {$t('general.updateNotifications')}
- showUpdateToastPref.set(v)} />
-
+
{$t('general.messageQueue')}
+
+ {#each [{ value: 'queue' as StreamingBehavior, label: $t('general.queue') }, { value: 'interrupt' as StreamingBehavior, label: $t('general.interrupt') }] as opt}
+ streamingBehavior.set(opt.value)}
+ >
+ {opt.label}
+
+ {/each}
+
- {$t('general.updateNotificationsDesc')}
+ {$streamingBehavior === 'queue'
+ ? $t('general.queueDesc')
+ : $t('general.interruptDesc')}
- {/if}
-
-
{$t('general.messageQueue')}
-
- {#each [{ value: 'queue' as StreamingBehavior, label: $t('general.queue') }, { value: 'interrupt' as StreamingBehavior, label: $t('general.interrupt') }] as opt}
- streamingBehavior.set(opt.value)}
- >
- {opt.label}
-
- {/each}
-
- {$streamingBehavior === 'queue'
- ? $t('general.queueDesc')
- : $t('general.interruptDesc')}
-
-
+
toast.success($t('settings.saved'))}>{$t('settings.save')}
+ {#if saving}{$t('settings.saving')}{:else}{$t('settings.save')}{/if}
+
diff --git a/cptr/frontend/src/lib/i18n/locales/de.json b/cptr/frontend/src/lib/i18n/locales/de.json
index bc5e2ae..1c6d64a 100644
--- a/cptr/frontend/src/lib/i18n/locales/de.json
+++ b/cptr/frontend/src/lib/i18n/locales/de.json
@@ -570,7 +570,6 @@
"admin.gateway.noKeys": "Noch keine API-Schlüssel",
"admin.gateway.title": "API-Gateway",
"chat.greeting": "Wie kann ich Ihnen helfen?",
-
"admin.subagents": "Sub-Agenten",
"admin.subagentsEnabled": "Sub-Agenten aktivieren",
"admin.subagentsHint": "Ermöglicht der KI, Aufgaben an Sub-Agenten zu delegieren. Jeder Sub-Agent erstellt einen echten Chat mit vollem Werkzeugzugriff. Verwendet zusätzliche LLM-Aufrufe.",
@@ -581,5 +580,67 @@
"admin.subagentsMaxOutput": "Max. Ausgabe",
"admin.subagentsSystemPrompt": "System-Prompt",
"admin.subagentsSystemPromptPlaceholder": "Du bist ein Sub-Agent...",
- "admin.subagentsSystemPromptHint": "Leer lassen für den integrierten Standard."
+ "admin.subagentsSystemPromptHint": "Leer lassen für den integrierten Standard.",
+ "admin.contextCompaction": "Kontextkompaktierung",
+ "admin.compactTokenThreshold": "Token-Schwellenwert",
+ "admin.compactTokenThresholdUnit": "Token",
+ "admin.compactTokenThresholdHint": "Ältere Nachrichten werden zusammengefasst, wenn der geschätzte Kontext diesen Grenzwert überschreitet. Standard: 80.000.",
+ "admin.toolServers": "Tool-Server",
+ "toolServers.title": "Tool-Server",
+ "toolServers.empty": "Keine Tool-Server konfiguriert",
+ "toolServers.add": "Server hinzufügen",
+ "toolServers.edit": "Server bearbeiten",
+ "toolServers.id": "ID",
+ "toolServers.name": "Name",
+ "toolServers.type": "Typ",
+ "toolServers.namePlaceholder": "Optionaler Anzeigename",
+ "toolServers.idPlaceholder": "mein_server",
+ "toolServers.typeOpenAPI": "OpenAPI",
+ "toolServers.typeMCP": "MCP",
+ "toolServers.connectionFailed": "Verbindung fehlgeschlagen",
+ "toolServers.apiKeyKeep": "•••••••• (leer lassen zum Beibehalten)",
+ "toolServers.url": "URL",
+ "toolServers.specPath": "Spec-Pfad",
+ "toolServers.fieldsRequired": "ID und URL sind erforderlich",
+ "toolServers.idInvalid": "ID darf nur Kleinbuchstaben, Zahlen und Unterstriche enthalten",
+ "toolServers.auth": "Auth",
+ "toolServers.authNone": "Keine",
+ "toolServers.authBearer": "Bearer",
+ "toolServers.apiKey": "API-Schlüssel",
+ "toolServers.description": "Beschreibung",
+ "toolServers.descriptionPlaceholder": "Was macht dieser Server?",
+ "toolServers.headers": "Header",
+ "toolServers.headersHint": "Zusätzliche HTTP-Header als JSON.",
+ "toolServers.headersInvalid": "Header müssen ein gültiges JSON-Objekt sein",
+ "toolServers.verify": "Prüfen",
+ "toolServers.connected": "Verbunden",
+ "toolServers.toolsFound": "Tools gefunden",
+ "toolServers.delete": "Löschen",
+ "toolServers.loadError": "Tool-Server konnten nicht geladen werden",
+ "toolServers.urlRequired": "URL ist erforderlich",
+ "toolServers.created": "Tool-Server hinzugefügt",
+ "toolServers.updated": "Tool-Server aktualisiert",
+ "toolServers.deleted": "Tool-Server gelöscht",
+ "toolServers.saveFailed": "Tool-Server konnte nicht gespeichert werden",
+ "toolServers.deleteFailed": "Tool-Server konnte nicht gelöscht werden",
+ "admin.webSearch": "Suche",
+ "admin.browser": "Browser",
+ "admin.browserTools": "Browser-Tools",
+ "admin.browserHint": "Gibt der KI Zugriff auf einen Webbrowser zum Navigieren, Klicken und Erstellen von Screenshots.",
+ "admin.browserProvider": "Anbieter",
+ "admin.browserLocalCdp": "Lokales CDP",
+ "admin.browserFirecrawl": "Firecrawl",
+ "admin.browserBrowserUse": "Browser-Use",
+ "admin.browserLocalHint": "Verbindet sich über das DevTools-Protokoll mit Chrome. Vollständiges interaktives Browsen mit Klicken, Tippen und Screenshots.",
+ "admin.browserFirecrawlHint": "Cloud-API, die Webseiten in Markdown umwandelt. Schnelle Extraktion, kein interaktives Browsen.",
+ "admin.browserBrowserUseHint": "Cloud-API für LLM-gesteuerte Browseraufgaben. Beschreiben Sie, was Sie benötigen, in natürlicher Sprache.",
+ "admin.browserAutoLaunch": "Chrome automatisch starten",
+ "admin.browserAutoLaunchHint": "Headless Chrome starten, wenn keiner läuft",
+ "admin.browserCdpUrl": "CDP-URL",
+ "admin.browserTest": "Testen",
+ "admin.browserSessionTimeout": "Sitzungs-Timeout",
+ "admin.browserMinutes": "Minuten",
+ "admin.browserApiKey": "API-Schlüssel",
+ "admin.browserBaseUrl": "Basis-URL",
+ "admin.browserFirecrawlBaseUrlHint": "Für selbst gehostete Firecrawl-Instanzen ändern"
}
diff --git a/cptr/frontend/src/lib/i18n/locales/en.json b/cptr/frontend/src/lib/i18n/locales/en.json
index fc3c248..5f446bc 100644
--- a/cptr/frontend/src/lib/i18n/locales/en.json
+++ b/cptr/frontend/src/lib/i18n/locales/en.json
@@ -258,6 +258,7 @@
"system.process": "PROCESS",
"admin.web": "Web",
+ "admin.webSearch": "Search",
"admin.webEnabled": "Enable web access",
"admin.webEnabledHint": "AI can search the web and fetch URLs.",
"admin.webDisabledHint": "Web search and URL fetching are disabled.",
@@ -279,6 +280,26 @@
"admin.webCcModel": "Model",
"admin.webCcHint": "Use any OpenAI-compatible endpoint (e.g. Perplexity Sonar, LiteLLM proxy)",
+ "admin.browser": "Browser",
+ "admin.browserTools": "Browser tools",
+ "admin.browserHint": "Give the AI access to a web browser for navigating pages, clicking elements, and taking screenshots.",
+ "admin.browserProvider": "Provider",
+ "admin.browserLocalCdp": "Local CDP",
+ "admin.browserFirecrawl": "Firecrawl",
+ "admin.browserBrowserUse": "Browser-Use",
+ "admin.browserLocalHint": "Connects to Chrome via DevTools Protocol. Full interactive browsing with clicking, typing, and screenshots.",
+ "admin.browserFirecrawlHint": "Cloud API that converts web pages to markdown. Fast extraction, no interactive browsing.",
+ "admin.browserBrowserUseHint": "Cloud API for LLM-driven browser tasks. Describe what you need in natural language.",
+ "admin.browserAutoLaunch": "Auto-launch Chrome",
+ "admin.browserAutoLaunchHint": "Start a headless Chrome if none is running",
+ "admin.browserCdpUrl": "CDP URL",
+ "admin.browserTest": "Test",
+ "admin.browserSessionTimeout": "Session timeout",
+ "admin.browserMinutes": "minutes",
+ "admin.browserApiKey": "API Key",
+ "admin.browserBaseUrl": "Base URL",
+ "admin.browserFirecrawlBaseUrlHint": "Change for self-hosted Firecrawl instances",
+
"admin.models": "Models",
"models.defaults": "Defaults",
"models.noDefaults": "No global defaults",
@@ -656,7 +677,12 @@
"toolServers.id": "ID",
"toolServers.name": "Name",
"toolServers.type": "Type",
- "toolServers.namePlaceholder": "My MCP Server",
+ "toolServers.namePlaceholder": "Optional display name",
+ "toolServers.idPlaceholder": "my_server",
+ "toolServers.typeOpenAPI": "OpenAPI",
+ "toolServers.typeMCP": "MCP",
+ "toolServers.connectionFailed": "Connection failed",
+ "toolServers.apiKeyKeep": "•••••••• (leave blank to keep)",
"toolServers.url": "URL",
"toolServers.specPath": "Spec path",
"toolServers.fieldsRequired": "ID and URL are required",
diff --git a/cptr/frontend/src/lib/i18n/locales/es.json b/cptr/frontend/src/lib/i18n/locales/es.json
index 5e69a66..1c5f019 100644
--- a/cptr/frontend/src/lib/i18n/locales/es.json
+++ b/cptr/frontend/src/lib/i18n/locales/es.json
@@ -570,7 +570,6 @@
"admin.gateway.noKeys": "Aún no hay claves API",
"admin.gateway.title": "API Gateway",
"chat.greeting": "¿En qué puedo ayudarte?",
-
"admin.subagents": "Sub-agentes",
"admin.subagentsEnabled": "Habilitar sub-agentes",
"admin.subagentsHint": "Permite a la IA delegar tareas a sub-agentes. Cada sub-agente crea un chat real con acceso completo a herramientas. Usa llamadas LLM adicionales.",
@@ -581,5 +580,67 @@
"admin.subagentsMaxOutput": "Máx. salida",
"admin.subagentsSystemPrompt": "Prompt del sistema",
"admin.subagentsSystemPromptPlaceholder": "Eres un sub-agente...",
- "admin.subagentsSystemPromptHint": "Dejar vacío para el valor predeterminado."
+ "admin.subagentsSystemPromptHint": "Dejar vacío para el valor predeterminado.",
+ "admin.contextCompaction": "Compactación de contexto",
+ "admin.compactTokenThreshold": "Umbral de tokens",
+ "admin.compactTokenThresholdUnit": "tokens",
+ "admin.compactTokenThresholdHint": "Los mensajes antiguos se resumen cuando el contexto estimado supera este límite. Predeterminado: 80.000.",
+ "admin.toolServers": "Servidores de herramientas",
+ "toolServers.title": "Servidores de herramientas",
+ "toolServers.empty": "No hay servidores de herramientas configurados",
+ "toolServers.add": "Agregar servidor",
+ "toolServers.edit": "Editar servidor",
+ "toolServers.id": "ID",
+ "toolServers.name": "Nombre",
+ "toolServers.type": "Tipo",
+ "toolServers.namePlaceholder": "Nombre opcional",
+ "toolServers.idPlaceholder": "mi_servidor",
+ "toolServers.typeOpenAPI": "OpenAPI",
+ "toolServers.typeMCP": "MCP",
+ "toolServers.connectionFailed": "Conexión fallida",
+ "toolServers.apiKeyKeep": "•••••••• (dejar vacío para mantener)",
+ "toolServers.url": "URL",
+ "toolServers.specPath": "Ruta de spec",
+ "toolServers.fieldsRequired": "ID y URL son obligatorios",
+ "toolServers.idInvalid": "El ID solo puede contener letras minúsculas, números y guiones bajos",
+ "toolServers.auth": "Auth",
+ "toolServers.authNone": "Ninguna",
+ "toolServers.authBearer": "Bearer",
+ "toolServers.apiKey": "Clave API",
+ "toolServers.description": "Descripción",
+ "toolServers.descriptionPlaceholder": "¿Qué hace este servidor?",
+ "toolServers.headers": "Cabeceras",
+ "toolServers.headersHint": "Cabeceras HTTP adicionales en formato JSON.",
+ "toolServers.headersInvalid": "Las cabeceras deben ser un objeto JSON válido",
+ "toolServers.verify": "Verificar",
+ "toolServers.connected": "Conectado",
+ "toolServers.toolsFound": "herramientas encontradas",
+ "toolServers.delete": "Eliminar",
+ "toolServers.loadError": "No se pudieron cargar los servidores de herramientas",
+ "toolServers.urlRequired": "La URL es obligatoria",
+ "toolServers.created": "Servidor de herramientas agregado",
+ "toolServers.updated": "Servidor de herramientas actualizado",
+ "toolServers.deleted": "Servidor de herramientas eliminado",
+ "toolServers.saveFailed": "No se pudo guardar el servidor de herramientas",
+ "toolServers.deleteFailed": "No se pudo eliminar el servidor de herramientas",
+ "admin.webSearch": "Búsqueda",
+ "admin.browser": "Navegador",
+ "admin.browserTools": "Herramientas del navegador",
+ "admin.browserHint": "Dar a la IA acceso a un navegador web para navegar páginas, hacer clic en elementos y tomar capturas de pantalla.",
+ "admin.browserProvider": "Proveedor",
+ "admin.browserLocalCdp": "CDP local",
+ "admin.browserFirecrawl": "Firecrawl",
+ "admin.browserBrowserUse": "Browser-Use",
+ "admin.browserLocalHint": "Se conecta a Chrome a través del Protocolo DevTools. Navegación interactiva completa con clics, escritura y capturas.",
+ "admin.browserFirecrawlHint": "API en la nube que convierte páginas web a markdown. Extracción rápida, sin navegación interactiva.",
+ "admin.browserBrowserUseHint": "API en la nube para tareas de navegador impulsadas por LLM. Describe lo que necesitas en lenguaje natural.",
+ "admin.browserAutoLaunch": "Iniciar Chrome automáticamente",
+ "admin.browserAutoLaunchHint": "Iniciar Chrome sin interfaz si no hay ninguno en ejecución",
+ "admin.browserCdpUrl": "URL CDP",
+ "admin.browserTest": "Probar",
+ "admin.browserSessionTimeout": "Tiempo de espera de sesión",
+ "admin.browserMinutes": "minutos",
+ "admin.browserApiKey": "Clave API",
+ "admin.browserBaseUrl": "URL base",
+ "admin.browserFirecrawlBaseUrlHint": "Cambiar para instancias de Firecrawl autoalojadas"
}
diff --git a/cptr/frontend/src/lib/i18n/locales/fr.json b/cptr/frontend/src/lib/i18n/locales/fr.json
index a9fb176..d603668 100644
--- a/cptr/frontend/src/lib/i18n/locales/fr.json
+++ b/cptr/frontend/src/lib/i18n/locales/fr.json
@@ -569,7 +569,6 @@
"admin.gateway.noKeys": "Aucune clé API",
"admin.gateway.title": "Passerelle API",
"chat.greeting": "Comment puis-je vous aider ?",
-
"admin.subagents": "Sous-agents",
"admin.subagentsEnabled": "Activer les sous-agents",
"admin.subagentsHint": "Permet à l'IA de déléguer des tâches à des sous-agents. Chaque sous-agent crée un vrai chat avec un accès complet aux outils. Utilise des appels LLM supplémentaires.",
@@ -580,5 +579,67 @@
"admin.subagentsMaxOutput": "Max. sortie",
"admin.subagentsSystemPrompt": "Prompt système",
"admin.subagentsSystemPromptPlaceholder": "Vous êtes un sous-agent...",
- "admin.subagentsSystemPromptHint": "Laisser vide pour la valeur par défaut."
+ "admin.subagentsSystemPromptHint": "Laisser vide pour la valeur par défaut.",
+ "admin.contextCompaction": "Compaction du contexte",
+ "admin.compactTokenThreshold": "Seuil de tokens",
+ "admin.compactTokenThresholdUnit": "tokens",
+ "admin.compactTokenThresholdHint": "Les messages anciens sont résumés lorsque le contexte estimé dépasse cette limite. Par défaut : 80 000.",
+ "admin.toolServers": "Serveurs d'outils",
+ "toolServers.title": "Serveurs d'outils",
+ "toolServers.empty": "Aucun serveur d'outils configuré",
+ "toolServers.add": "Ajouter un serveur",
+ "toolServers.edit": "Modifier le serveur",
+ "toolServers.id": "ID",
+ "toolServers.name": "Nom",
+ "toolServers.type": "Type",
+ "toolServers.namePlaceholder": "Nom d'affichage optionnel",
+ "toolServers.idPlaceholder": "mon_serveur",
+ "toolServers.typeOpenAPI": "OpenAPI",
+ "toolServers.typeMCP": "MCP",
+ "toolServers.connectionFailed": "Échec de la connexion",
+ "toolServers.apiKeyKeep": "•••••••• (laisser vide pour conserver)",
+ "toolServers.url": "URL",
+ "toolServers.specPath": "Chemin de spec",
+ "toolServers.fieldsRequired": "L'ID et l'URL sont requis",
+ "toolServers.idInvalid": "L'ID ne peut contenir que des lettres minuscules, des chiffres et des tirets bas",
+ "toolServers.auth": "Auth",
+ "toolServers.authNone": "Aucune",
+ "toolServers.authBearer": "Bearer",
+ "toolServers.apiKey": "Clé API",
+ "toolServers.description": "Description",
+ "toolServers.descriptionPlaceholder": "Que fait ce serveur ?",
+ "toolServers.headers": "En-têtes",
+ "toolServers.headersHint": "En-têtes HTTP supplémentaires au format JSON.",
+ "toolServers.headersInvalid": "Les en-têtes doivent être un objet JSON valide",
+ "toolServers.verify": "Vérifier",
+ "toolServers.connected": "Connecté",
+ "toolServers.toolsFound": "outils trouvés",
+ "toolServers.delete": "Supprimer",
+ "toolServers.loadError": "Impossible de charger les serveurs d'outils",
+ "toolServers.urlRequired": "L'URL est requise",
+ "toolServers.created": "Serveur d'outils ajouté",
+ "toolServers.updated": "Serveur d'outils mis à jour",
+ "toolServers.deleted": "Serveur d'outils supprimé",
+ "toolServers.saveFailed": "Impossible de sauvegarder le serveur d'outils",
+ "toolServers.deleteFailed": "Impossible de supprimer le serveur d'outils",
+ "admin.webSearch": "Recherche",
+ "admin.browser": "Navigateur",
+ "admin.browserTools": "Outils du navigateur",
+ "admin.browserHint": "Donne à l'IA accès à un navigateur web pour naviguer, cliquer et prendre des captures d'écran.",
+ "admin.browserProvider": "Fournisseur",
+ "admin.browserLocalCdp": "CDP local",
+ "admin.browserFirecrawl": "Firecrawl",
+ "admin.browserBrowserUse": "Browser-Use",
+ "admin.browserLocalHint": "Se connecte à Chrome via le protocole DevTools. Navigation interactive complète avec clics, saisie et captures.",
+ "admin.browserFirecrawlHint": "API cloud qui convertit les pages web en markdown. Extraction rapide, pas de navigation interactive.",
+ "admin.browserBrowserUseHint": "API cloud pour les tâches de navigateur pilotées par LLM. Décrivez vos besoins en langage naturel.",
+ "admin.browserAutoLaunch": "Lancement automatique de Chrome",
+ "admin.browserAutoLaunchHint": "Lancer Chrome sans interface si aucun n'est en cours d'exécution",
+ "admin.browserCdpUrl": "URL CDP",
+ "admin.browserTest": "Tester",
+ "admin.browserSessionTimeout": "Délai d'expiration de session",
+ "admin.browserMinutes": "minutes",
+ "admin.browserApiKey": "Clé API",
+ "admin.browserBaseUrl": "URL de base",
+ "admin.browserFirecrawlBaseUrlHint": "Modifier pour les instances Firecrawl auto-hébergées"
}
diff --git a/cptr/frontend/src/lib/i18n/locales/ja.json b/cptr/frontend/src/lib/i18n/locales/ja.json
index 9db4828..9fe58b4 100644
--- a/cptr/frontend/src/lib/i18n/locales/ja.json
+++ b/cptr/frontend/src/lib/i18n/locales/ja.json
@@ -570,7 +570,6 @@
"admin.gateway.noKeys": "APIキーがまだありません",
"admin.gateway.title": "APIゲートウェイ",
"chat.greeting": "何かお手伝いできますか?",
-
"admin.subagents": "サブエージェント",
"admin.subagentsEnabled": "サブエージェントを有効にする",
"admin.subagentsHint": "AIがサブエージェントにタスクを委任できるようにします。各サブエージェントはフルツールアクセス付きの実際のチャットを作成します。追加のLLMコールを使用します。",
@@ -581,5 +580,67 @@
"admin.subagentsMaxOutput": "最大出力",
"admin.subagentsSystemPrompt": "システムプロンプト",
"admin.subagentsSystemPromptPlaceholder": "あなたはサブエージェントです...",
- "admin.subagentsSystemPromptHint": "組み込みデフォルトを使用する場合は空のままにしてください。"
+ "admin.subagentsSystemPromptHint": "組み込みデフォルトを使用する場合は空のままにしてください。",
+ "admin.contextCompaction": "コンテキスト圧縮",
+ "admin.compactTokenThreshold": "トークン閾値",
+ "admin.compactTokenThresholdUnit": "トークン",
+ "admin.compactTokenThresholdHint": "推定コンテキストがこの制限を超えると、古いメッセージが要約されます。デフォルト: 80,000。",
+ "admin.toolServers": "ツールサーバー",
+ "toolServers.title": "ツールサーバー",
+ "toolServers.empty": "ツールサーバーが設定されていません",
+ "toolServers.add": "サーバーを追加",
+ "toolServers.edit": "サーバーを編集",
+ "toolServers.id": "ID",
+ "toolServers.name": "名前",
+ "toolServers.type": "タイプ",
+ "toolServers.namePlaceholder": "表示名(任意)",
+ "toolServers.idPlaceholder": "my_server",
+ "toolServers.typeOpenAPI": "OpenAPI",
+ "toolServers.typeMCP": "MCP",
+ "toolServers.connectionFailed": "接続に失敗しました",
+ "toolServers.apiKeyKeep": "••••••••(空のままで保持)",
+ "toolServers.url": "URL",
+ "toolServers.specPath": "Specパス",
+ "toolServers.fieldsRequired": "IDとURLは必須です",
+ "toolServers.idInvalid": "IDは小文字、数字、アンダースコアのみ使用できます",
+ "toolServers.auth": "認証",
+ "toolServers.authNone": "なし",
+ "toolServers.authBearer": "Bearer",
+ "toolServers.apiKey": "APIキー",
+ "toolServers.description": "説明",
+ "toolServers.descriptionPlaceholder": "このサーバーは何をしますか?",
+ "toolServers.headers": "ヘッダー",
+ "toolServers.headersHint": "JSON形式の追加HTTPヘッダー。",
+ "toolServers.headersInvalid": "ヘッダーは有効なJSONオブジェクトである必要があります",
+ "toolServers.verify": "検証",
+ "toolServers.connected": "接続済み",
+ "toolServers.toolsFound": "個のツールが見つかりました",
+ "toolServers.delete": "削除",
+ "toolServers.loadError": "ツールサーバーの読み込みに失敗しました",
+ "toolServers.urlRequired": "URLは必須です",
+ "toolServers.created": "ツールサーバーを追加しました",
+ "toolServers.updated": "ツールサーバーを更新しました",
+ "toolServers.deleted": "ツールサーバーを削除しました",
+ "toolServers.saveFailed": "ツールサーバーの保存に失敗しました",
+ "toolServers.deleteFailed": "ツールサーバーの削除に失敗しました",
+ "admin.webSearch": "検索",
+ "admin.browser": "ブラウザ",
+ "admin.browserTools": "ブラウザツール",
+ "admin.browserHint": "AIにウェブブラウザへのアクセスを提供し、ページ操作、要素のクリック、スクリーンショットの取得を可能にします。",
+ "admin.browserProvider": "プロバイダー",
+ "admin.browserLocalCdp": "ローカルCDP",
+ "admin.browserFirecrawl": "Firecrawl",
+ "admin.browserBrowserUse": "Browser-Use",
+ "admin.browserLocalHint": "DevToolsプロトコルを介してChromeに接続。クリック、入力、スクリーンショットを含む完全なインタラクティブブラウジング。",
+ "admin.browserFirecrawlHint": "ウェブページをMarkdownに変換するクラウドAPI。高速な抽出、インタラクティブブラウジングなし。",
+ "admin.browserBrowserUseHint": "LLM駆動のブラウザタスク用クラウドAPI。必要なことを自然言語で説明してください。",
+ "admin.browserAutoLaunch": "Chrome自動起動",
+ "admin.browserAutoLaunchHint": "実行中のChromeがない場合、ヘッドレスChromeを起動",
+ "admin.browserCdpUrl": "CDP URL",
+ "admin.browserTest": "テスト",
+ "admin.browserSessionTimeout": "セッションタイムアウト",
+ "admin.browserMinutes": "分",
+ "admin.browserApiKey": "APIキー",
+ "admin.browserBaseUrl": "ベースURL",
+ "admin.browserFirecrawlBaseUrlHint": "セルフホストのFirecrawlインスタンス用に変更"
}
diff --git a/cptr/frontend/src/lib/i18n/locales/ko.json b/cptr/frontend/src/lib/i18n/locales/ko.json
index 4055b37..d63d07e 100644
--- a/cptr/frontend/src/lib/i18n/locales/ko.json
+++ b/cptr/frontend/src/lib/i18n/locales/ko.json
@@ -570,7 +570,6 @@
"admin.gateway.noKeys": "API 키가 아직 없습니다",
"admin.gateway.title": "API 게이트웨이",
"chat.greeting": "무엇을 도와드릴까요?",
-
"admin.subagents": "서브 에이전트",
"admin.subagentsEnabled": "서브 에이전트 활성화",
"admin.subagentsHint": "AI가 서브 에이전트에 작업을 위임할 수 있게 합니다. 각 서브 에이전트는 전체 도구 액세스 권한이 있는 실제 채팅을 생성합니다. 추가 LLM 호출을 사용합니다.",
@@ -581,5 +580,67 @@
"admin.subagentsMaxOutput": "최대 출력",
"admin.subagentsSystemPrompt": "시스템 프롬프트",
"admin.subagentsSystemPromptPlaceholder": "당신은 서브 에이전트입니다...",
- "admin.subagentsSystemPromptHint": "기본값을 사용하려면 비워두세요."
+ "admin.subagentsSystemPromptHint": "기본값을 사용하려면 비워두세요.",
+ "admin.contextCompaction": "컨텍스트 압축",
+ "admin.compactTokenThreshold": "토큰 임계값",
+ "admin.compactTokenThresholdUnit": "토큰",
+ "admin.compactTokenThresholdHint": "예상 컨텍스트가 이 제한을 초과하면 이전 메시지가 요약됩니다. 기본값: 80,000.",
+ "admin.toolServers": "도구 서버",
+ "toolServers.title": "도구 서버",
+ "toolServers.empty": "구성된 도구 서버가 없습니다",
+ "toolServers.add": "서버 추가",
+ "toolServers.edit": "서버 편집",
+ "toolServers.id": "ID",
+ "toolServers.name": "이름",
+ "toolServers.type": "유형",
+ "toolServers.namePlaceholder": "선택적 표시 이름",
+ "toolServers.idPlaceholder": "my_server",
+ "toolServers.typeOpenAPI": "OpenAPI",
+ "toolServers.typeMCP": "MCP",
+ "toolServers.connectionFailed": "연결 실패",
+ "toolServers.apiKeyKeep": "•••••••• (유지하려면 비워두세요)",
+ "toolServers.url": "URL",
+ "toolServers.specPath": "Spec 경로",
+ "toolServers.fieldsRequired": "ID와 URL은 필수입니다",
+ "toolServers.idInvalid": "ID는 소문자, 숫자, 밑줄만 사용할 수 있습니다",
+ "toolServers.auth": "인증",
+ "toolServers.authNone": "없음",
+ "toolServers.authBearer": "Bearer",
+ "toolServers.apiKey": "API 키",
+ "toolServers.description": "설명",
+ "toolServers.descriptionPlaceholder": "이 서버는 무엇을 하나요?",
+ "toolServers.headers": "헤더",
+ "toolServers.headersHint": "JSON 형식의 추가 HTTP 헤더.",
+ "toolServers.headersInvalid": "헤더는 유효한 JSON 객체여야 합니다",
+ "toolServers.verify": "확인",
+ "toolServers.connected": "연결됨",
+ "toolServers.toolsFound": "개의 도구 발견",
+ "toolServers.delete": "삭제",
+ "toolServers.loadError": "도구 서버를 불러올 수 없습니다",
+ "toolServers.urlRequired": "URL은 필수입니다",
+ "toolServers.created": "도구 서버가 추가되었습니다",
+ "toolServers.updated": "도구 서버가 업데이트되었습니다",
+ "toolServers.deleted": "도구 서버가 삭제되었습니다",
+ "toolServers.saveFailed": "도구 서버를 저장할 수 없습니다",
+ "toolServers.deleteFailed": "도구 서버를 삭제할 수 없습니다",
+ "admin.webSearch": "검색",
+ "admin.browser": "브라우저",
+ "admin.browserTools": "브라우저 도구",
+ "admin.browserHint": "AI에게 웹 브라우저 접근 권한을 부여하여 페이지 탐색, 요소 클릭, 스크린샷 촬영을 가능하게 합니다.",
+ "admin.browserProvider": "제공자",
+ "admin.browserLocalCdp": "로컬 CDP",
+ "admin.browserFirecrawl": "Firecrawl",
+ "admin.browserBrowserUse": "Browser-Use",
+ "admin.browserLocalHint": "DevTools 프로토콜을 통해 Chrome에 연결합니다. 클릭, 입력, 스크린샷을 포함한 완전한 인터랙티브 브라우징.",
+ "admin.browserFirecrawlHint": "웹 페이지를 마크다운으로 변환하는 클라우드 API. 빠른 추출, 인터랙티브 브라우징 없음.",
+ "admin.browserBrowserUseHint": "LLM 기반 브라우저 작업용 클라우드 API. 필요한 것을 자연어로 설명하세요.",
+ "admin.browserAutoLaunch": "Chrome 자동 실행",
+ "admin.browserAutoLaunchHint": "실행 중인 Chrome이 없으면 헤드리스 Chrome 시작",
+ "admin.browserCdpUrl": "CDP URL",
+ "admin.browserTest": "테스트",
+ "admin.browserSessionTimeout": "세션 시간 초과",
+ "admin.browserMinutes": "분",
+ "admin.browserApiKey": "API 키",
+ "admin.browserBaseUrl": "기본 URL",
+ "admin.browserFirecrawlBaseUrlHint": "자체 호스팅 Firecrawl 인스턴스용으로 변경"
}
diff --git a/cptr/frontend/src/lib/i18n/locales/pt-BR.json b/cptr/frontend/src/lib/i18n/locales/pt-BR.json
index ce689a0..933ec3f 100644
--- a/cptr/frontend/src/lib/i18n/locales/pt-BR.json
+++ b/cptr/frontend/src/lib/i18n/locales/pt-BR.json
@@ -570,7 +570,6 @@
"admin.gateway.noKeys": "Nenhuma chave API ainda",
"admin.gateway.title": "API Gateway",
"chat.greeting": "Como posso ajudar?",
-
"admin.subagents": "Sub-agentes",
"admin.subagentsEnabled": "Habilitar sub-agentes",
"admin.subagentsHint": "Permite que a IA delegue tarefas para sub-agentes. Cada sub-agente cria um chat real com acesso total às ferramentas. Usa chamadas LLM adicionais.",
@@ -581,5 +580,67 @@
"admin.subagentsMaxOutput": "Máx. saída",
"admin.subagentsSystemPrompt": "Prompt do sistema",
"admin.subagentsSystemPromptPlaceholder": "Você é um sub-agente...",
- "admin.subagentsSystemPromptHint": "Deixe vazio para o padrão integrado."
+ "admin.subagentsSystemPromptHint": "Deixe vazio para o padrão integrado.",
+ "admin.contextCompaction": "Compactação de contexto",
+ "admin.compactTokenThreshold": "Limite de tokens",
+ "admin.compactTokenThresholdUnit": "tokens",
+ "admin.compactTokenThresholdHint": "Mensagens antigas são resumidas quando o contexto estimado excede este limite. Padrão: 80.000.",
+ "admin.toolServers": "Servidores de ferramentas",
+ "toolServers.title": "Servidores de ferramentas",
+ "toolServers.empty": "Nenhum servidor de ferramentas configurado",
+ "toolServers.add": "Adicionar servidor",
+ "toolServers.edit": "Editar servidor",
+ "toolServers.id": "ID",
+ "toolServers.name": "Nome",
+ "toolServers.type": "Tipo",
+ "toolServers.namePlaceholder": "Nome de exibição opcional",
+ "toolServers.idPlaceholder": "meu_servidor",
+ "toolServers.typeOpenAPI": "OpenAPI",
+ "toolServers.typeMCP": "MCP",
+ "toolServers.connectionFailed": "Falha na conexão",
+ "toolServers.apiKeyKeep": "•••••••• (deixe vazio para manter)",
+ "toolServers.url": "URL",
+ "toolServers.specPath": "Caminho da spec",
+ "toolServers.fieldsRequired": "ID e URL são obrigatórios",
+ "toolServers.idInvalid": "O ID só pode conter letras minúsculas, números e sublinhados",
+ "toolServers.auth": "Auth",
+ "toolServers.authNone": "Nenhuma",
+ "toolServers.authBearer": "Bearer",
+ "toolServers.apiKey": "Chave API",
+ "toolServers.description": "Descrição",
+ "toolServers.descriptionPlaceholder": "O que este servidor faz?",
+ "toolServers.headers": "Cabeçalhos",
+ "toolServers.headersHint": "Cabeçalhos HTTP adicionais em formato JSON.",
+ "toolServers.headersInvalid": "Os cabeçalhos devem ser um objeto JSON válido",
+ "toolServers.verify": "Verificar",
+ "toolServers.connected": "Conectado",
+ "toolServers.toolsFound": "ferramentas encontradas",
+ "toolServers.delete": "Excluir",
+ "toolServers.loadError": "Falha ao carregar servidores de ferramentas",
+ "toolServers.urlRequired": "URL é obrigatória",
+ "toolServers.created": "Servidor de ferramentas adicionado",
+ "toolServers.updated": "Servidor de ferramentas atualizado",
+ "toolServers.deleted": "Servidor de ferramentas excluído",
+ "toolServers.saveFailed": "Falha ao salvar servidor de ferramentas",
+ "toolServers.deleteFailed": "Falha ao excluir servidor de ferramentas",
+ "admin.webSearch": "Pesquisa",
+ "admin.browser": "Navegador",
+ "admin.browserTools": "Ferramentas do navegador",
+ "admin.browserHint": "Dar à IA acesso a um navegador web para navegar páginas, clicar em elementos e tirar capturas de tela.",
+ "admin.browserProvider": "Provedor",
+ "admin.browserLocalCdp": "CDP local",
+ "admin.browserFirecrawl": "Firecrawl",
+ "admin.browserBrowserUse": "Browser-Use",
+ "admin.browserLocalHint": "Conecta-se ao Chrome via Protocolo DevTools. Navegação interativa completa com cliques, digitação e capturas.",
+ "admin.browserFirecrawlHint": "API na nuvem que converte páginas web em markdown. Extração rápida, sem navegação interativa.",
+ "admin.browserBrowserUseHint": "API na nuvem para tarefas de navegador orientadas por LLM. Descreva o que precisa em linguagem natural.",
+ "admin.browserAutoLaunch": "Iniciar Chrome automaticamente",
+ "admin.browserAutoLaunchHint": "Iniciar Chrome headless se nenhum estiver em execução",
+ "admin.browserCdpUrl": "URL CDP",
+ "admin.browserTest": "Testar",
+ "admin.browserSessionTimeout": "Tempo limite da sessão",
+ "admin.browserMinutes": "minutos",
+ "admin.browserApiKey": "Chave API",
+ "admin.browserBaseUrl": "URL base",
+ "admin.browserFirecrawlBaseUrlHint": "Alterar para instâncias Firecrawl auto-hospedadas"
}
diff --git a/cptr/frontend/src/lib/i18n/locales/ru.json b/cptr/frontend/src/lib/i18n/locales/ru.json
index 5a149ea..4c54a0d 100644
--- a/cptr/frontend/src/lib/i18n/locales/ru.json
+++ b/cptr/frontend/src/lib/i18n/locales/ru.json
@@ -570,7 +570,6 @@
"admin.gateway.noKeys": "API-ключей пока нет",
"admin.gateway.title": "API-шлюз",
"chat.greeting": "Чем могу помочь?",
-
"admin.subagents": "Суб-агенты",
"admin.subagentsEnabled": "Включить суб-агентов",
"admin.subagentsHint": "Позволяет ИИ делегировать задачи суб-агентам. Каждый суб-агент создаёт реальный чат с полным доступом к инструментам. Использует дополнительные вызовы LLM.",
@@ -581,5 +580,67 @@
"admin.subagentsMaxOutput": "Макс. вывод",
"admin.subagentsSystemPrompt": "Системный промпт",
"admin.subagentsSystemPromptPlaceholder": "Вы — суб-агент...",
- "admin.subagentsSystemPromptHint": "Оставьте пустым для значения по умолчанию."
+ "admin.subagentsSystemPromptHint": "Оставьте пустым для значения по умолчанию.",
+ "admin.contextCompaction": "Сжатие контекста",
+ "admin.compactTokenThreshold": "Порог токенов",
+ "admin.compactTokenThresholdUnit": "токенов",
+ "admin.compactTokenThresholdHint": "Старые сообщения суммируются, когда расчётный контекст превышает этот лимит. По умолчанию: 80 000.",
+ "admin.toolServers": "Серверы инструментов",
+ "toolServers.title": "Серверы инструментов",
+ "toolServers.empty": "Серверы инструментов не настроены",
+ "toolServers.add": "Добавить сервер",
+ "toolServers.edit": "Редактировать сервер",
+ "toolServers.id": "ID",
+ "toolServers.name": "Название",
+ "toolServers.type": "Тип",
+ "toolServers.namePlaceholder": "Необязательное отображаемое имя",
+ "toolServers.idPlaceholder": "my_server",
+ "toolServers.typeOpenAPI": "OpenAPI",
+ "toolServers.typeMCP": "MCP",
+ "toolServers.connectionFailed": "Ошибка подключения",
+ "toolServers.apiKeyKeep": "•••••••• (оставьте пустым для сохранения)",
+ "toolServers.url": "URL",
+ "toolServers.specPath": "Путь к спецификации",
+ "toolServers.fieldsRequired": "ID и URL обязательны",
+ "toolServers.idInvalid": "ID может содержать только строчные буквы, цифры и подчёркивания",
+ "toolServers.auth": "Аутентификация",
+ "toolServers.authNone": "Нет",
+ "toolServers.authBearer": "Bearer",
+ "toolServers.apiKey": "API-ключ",
+ "toolServers.description": "Описание",
+ "toolServers.descriptionPlaceholder": "Что делает этот сервер?",
+ "toolServers.headers": "Заголовки",
+ "toolServers.headersHint": "Дополнительные HTTP-заголовки в формате JSON.",
+ "toolServers.headersInvalid": "Заголовки должны быть валидным JSON-объектом",
+ "toolServers.verify": "Проверить",
+ "toolServers.connected": "Подключено",
+ "toolServers.toolsFound": "инструментов найдено",
+ "toolServers.delete": "Удалить",
+ "toolServers.loadError": "Не удалось загрузить серверы инструментов",
+ "toolServers.urlRequired": "URL обязателен",
+ "toolServers.created": "Сервер инструментов добавлен",
+ "toolServers.updated": "Сервер инструментов обновлён",
+ "toolServers.deleted": "Сервер инструментов удалён",
+ "toolServers.saveFailed": "Не удалось сохранить сервер инструментов",
+ "toolServers.deleteFailed": "Не удалось удалить сервер инструментов",
+ "admin.webSearch": "Поиск",
+ "admin.browser": "Браузер",
+ "admin.browserTools": "Инструменты браузера",
+ "admin.browserHint": "Предоставить ИИ доступ к веб-браузеру для навигации по страницам, кликов по элементам и создания скриншотов.",
+ "admin.browserProvider": "Провайдер",
+ "admin.browserLocalCdp": "Локальный CDP",
+ "admin.browserFirecrawl": "Firecrawl",
+ "admin.browserBrowserUse": "Browser-Use",
+ "admin.browserLocalHint": "Подключается к Chrome через протокол DevTools. Полноценный интерактивный просмотр с кликами, вводом и скриншотами.",
+ "admin.browserFirecrawlHint": "Облачный API, конвертирующий веб-страницы в markdown. Быстрая извлечение, без интерактивного просмотра.",
+ "admin.browserBrowserUseHint": "Облачный API для задач браузера на основе LLM. Опишите, что вам нужно, на естественном языке.",
+ "admin.browserAutoLaunch": "Автозапуск Chrome",
+ "admin.browserAutoLaunchHint": "Запустить headless Chrome, если ни один не запущен",
+ "admin.browserCdpUrl": "URL CDP",
+ "admin.browserTest": "Тест",
+ "admin.browserSessionTimeout": "Тайм-аут сессии",
+ "admin.browserMinutes": "минут",
+ "admin.browserApiKey": "API-ключ",
+ "admin.browserBaseUrl": "Базовый URL",
+ "admin.browserFirecrawlBaseUrlHint": "Изменить для самостоятельно размещённых экземпляров Firecrawl"
}
diff --git a/cptr/frontend/src/lib/i18n/locales/zh-CN.json b/cptr/frontend/src/lib/i18n/locales/zh-CN.json
index 4efb68d..4826b84 100644
--- a/cptr/frontend/src/lib/i18n/locales/zh-CN.json
+++ b/cptr/frontend/src/lib/i18n/locales/zh-CN.json
@@ -570,7 +570,6 @@
"admin.gateway.noKeys": "暂无 API 密钥",
"admin.gateway.title": "API 网关",
"chat.greeting": "有什么可以帮您的?",
-
"admin.subagents": "子代理",
"admin.subagentsEnabled": "启用子代理",
"admin.subagentsHint": "允许 AI 将任务委托给子代理。每个子代理会创建一个拥有完整工具访问权限的真实聊天。会使用额外的 LLM 调用。",
@@ -581,5 +580,67 @@
"admin.subagentsMaxOutput": "最大输出",
"admin.subagentsSystemPrompt": "系统提示词",
"admin.subagentsSystemPromptPlaceholder": "你是一个子代理...",
- "admin.subagentsSystemPromptHint": "留空以使用内置默认值。"
+ "admin.subagentsSystemPromptHint": "留空以使用内置默认值。",
+ "admin.contextCompaction": "上下文压缩",
+ "admin.compactTokenThreshold": "令牌阈值",
+ "admin.compactTokenThresholdUnit": "令牌",
+ "admin.compactTokenThresholdHint": "当估计上下文超过此限制时,旧消息将被摘要。默认值:80,000。",
+ "admin.toolServers": "工具服务器",
+ "toolServers.title": "工具服务器",
+ "toolServers.empty": "未配置工具服务器",
+ "toolServers.add": "添加服务器",
+ "toolServers.edit": "编辑服务器",
+ "toolServers.id": "ID",
+ "toolServers.name": "名称",
+ "toolServers.type": "类型",
+ "toolServers.namePlaceholder": "可选显示名称",
+ "toolServers.idPlaceholder": "my_server",
+ "toolServers.typeOpenAPI": "OpenAPI",
+ "toolServers.typeMCP": "MCP",
+ "toolServers.connectionFailed": "连接失败",
+ "toolServers.apiKeyKeep": "••••••••(留空以保持不变)",
+ "toolServers.url": "URL",
+ "toolServers.specPath": "Spec 路径",
+ "toolServers.fieldsRequired": "ID 和 URL 为必填项",
+ "toolServers.idInvalid": "ID 只能包含小写字母、数字和下划线",
+ "toolServers.auth": "认证",
+ "toolServers.authNone": "无",
+ "toolServers.authBearer": "Bearer",
+ "toolServers.apiKey": "API 密钥",
+ "toolServers.description": "描述",
+ "toolServers.descriptionPlaceholder": "这个服务器做什么?",
+ "toolServers.headers": "请求头",
+ "toolServers.headersHint": "JSON 格式的额外 HTTP 请求头。",
+ "toolServers.headersInvalid": "请求头必须是有效的 JSON 对象",
+ "toolServers.verify": "验证",
+ "toolServers.connected": "已连接",
+ "toolServers.toolsFound": "个工具已发现",
+ "toolServers.delete": "删除",
+ "toolServers.loadError": "无法加载工具服务器",
+ "toolServers.urlRequired": "URL 为必填项",
+ "toolServers.created": "工具服务器已添加",
+ "toolServers.updated": "工具服务器已更新",
+ "toolServers.deleted": "工具服务器已删除",
+ "toolServers.saveFailed": "无法保存工具服务器",
+ "toolServers.deleteFailed": "无法删除工具服务器",
+ "admin.webSearch": "搜索",
+ "admin.browser": "浏览器",
+ "admin.browserTools": "浏览器工具",
+ "admin.browserHint": "为AI提供网页浏览器访问权限,用于浏览页面、点击元素和截图。",
+ "admin.browserProvider": "提供者",
+ "admin.browserLocalCdp": "本地 CDP",
+ "admin.browserFirecrawl": "Firecrawl",
+ "admin.browserBrowserUse": "Browser-Use",
+ "admin.browserLocalHint": "通过 DevTools 协议连接到 Chrome。支持点击、输入和截图的完整交互式浏览。",
+ "admin.browserFirecrawlHint": "将网页转换为 Markdown 的云端 API。快速提取,无交互式浏览。",
+ "admin.browserBrowserUseHint": "用于 LLM 驱动浏览器任务的云端 API。用自然语言描述您的需求。",
+ "admin.browserAutoLaunch": "自动启动 Chrome",
+ "admin.browserAutoLaunchHint": "如果没有运行中的 Chrome,则启动无头 Chrome",
+ "admin.browserCdpUrl": "CDP URL",
+ "admin.browserTest": "测试",
+ "admin.browserSessionTimeout": "会话超时",
+ "admin.browserMinutes": "分钟",
+ "admin.browserApiKey": "API 密钥",
+ "admin.browserBaseUrl": "基础 URL",
+ "admin.browserFirecrawlBaseUrlHint": "为自托管的 Firecrawl 实例更改"
}
diff --git a/cptr/frontend/src/lib/i18n/locales/zh-TW.json b/cptr/frontend/src/lib/i18n/locales/zh-TW.json
index 6b54bf6..c146e48 100644
--- a/cptr/frontend/src/lib/i18n/locales/zh-TW.json
+++ b/cptr/frontend/src/lib/i18n/locales/zh-TW.json
@@ -570,7 +570,6 @@
"admin.gateway.noKeys": "尚無 API 金鑰",
"admin.gateway.title": "API 閘道",
"chat.greeting": "有什麼可以幫您的?",
-
"admin.subagents": "子代理",
"admin.subagentsEnabled": "啟用子代理",
"admin.subagentsHint": "允許 AI 將任務委派給子代理。每個子代理會建立一個擁有完整工具存取權限的真實聊天。會使用額外的 LLM 呼叫。",
@@ -581,5 +580,67 @@
"admin.subagentsMaxOutput": "最大輸出",
"admin.subagentsSystemPrompt": "系統提示詞",
"admin.subagentsSystemPromptPlaceholder": "你是一個子代理...",
- "admin.subagentsSystemPromptHint": "留空以使用內建預設值。"
+ "admin.subagentsSystemPromptHint": "留空以使用內建預設值。",
+ "admin.contextCompaction": "上下文壓縮",
+ "admin.compactTokenThreshold": "令牌閾值",
+ "admin.compactTokenThresholdUnit": "令牌",
+ "admin.compactTokenThresholdHint": "當估計上下文超過此限制時,舊訊息將被摘要。預設值:80,000。",
+ "admin.toolServers": "工具伺服器",
+ "toolServers.title": "工具伺服器",
+ "toolServers.empty": "未設定工具伺服器",
+ "toolServers.add": "新增伺服器",
+ "toolServers.edit": "編輯伺服器",
+ "toolServers.id": "ID",
+ "toolServers.name": "名稱",
+ "toolServers.type": "類型",
+ "toolServers.namePlaceholder": "選填顯示名稱",
+ "toolServers.idPlaceholder": "my_server",
+ "toolServers.typeOpenAPI": "OpenAPI",
+ "toolServers.typeMCP": "MCP",
+ "toolServers.connectionFailed": "連線失敗",
+ "toolServers.apiKeyKeep": "••••••••(留空以保持不變)",
+ "toolServers.url": "URL",
+ "toolServers.specPath": "Spec 路徑",
+ "toolServers.fieldsRequired": "ID 和 URL 為必填",
+ "toolServers.idInvalid": "ID 只能包含小寫字母、數字和底線",
+ "toolServers.auth": "驗證",
+ "toolServers.authNone": "無",
+ "toolServers.authBearer": "Bearer",
+ "toolServers.apiKey": "API 金鑰",
+ "toolServers.description": "描述",
+ "toolServers.descriptionPlaceholder": "這個伺服器做什麼?",
+ "toolServers.headers": "標頭",
+ "toolServers.headersHint": "JSON 格式的額外 HTTP 標頭。",
+ "toolServers.headersInvalid": "標頭必須是有效的 JSON 物件",
+ "toolServers.verify": "驗證",
+ "toolServers.connected": "已連線",
+ "toolServers.toolsFound": "個工具已發現",
+ "toolServers.delete": "刪除",
+ "toolServers.loadError": "無法載入工具伺服器",
+ "toolServers.urlRequired": "URL 為必填",
+ "toolServers.created": "工具伺服器已新增",
+ "toolServers.updated": "工具伺服器已更新",
+ "toolServers.deleted": "工具伺服器已刪除",
+ "toolServers.saveFailed": "無法儲存工具伺服器",
+ "toolServers.deleteFailed": "無法刪除工具伺服器",
+ "admin.webSearch": "搜尋",
+ "admin.browser": "瀏覽器",
+ "admin.browserTools": "瀏覽器工具",
+ "admin.browserHint": "為 AI 提供網頁瀏覽器存取權限,用於瀏覽頁面、點擊元素和擷取螢幕截圖。",
+ "admin.browserProvider": "提供者",
+ "admin.browserLocalCdp": "本機 CDP",
+ "admin.browserFirecrawl": "Firecrawl",
+ "admin.browserBrowserUse": "Browser-Use",
+ "admin.browserLocalHint": "透過 DevTools 協定連接到 Chrome。支援點擊、輸入和截圖的完整互動式瀏覽。",
+ "admin.browserFirecrawlHint": "將網頁轉換為 Markdown 的雲端 API。快速擷取,無互動式瀏覽。",
+ "admin.browserBrowserUseHint": "用於 LLM 驅動瀏覽器任務的雲端 API。用自然語言描述您的需求。",
+ "admin.browserAutoLaunch": "自動啟動 Chrome",
+ "admin.browserAutoLaunchHint": "如果沒有執行中的 Chrome,則啟動無頭 Chrome",
+ "admin.browserCdpUrl": "CDP URL",
+ "admin.browserTest": "測試",
+ "admin.browserSessionTimeout": "工作階段逾時",
+ "admin.browserMinutes": "分鐘",
+ "admin.browserApiKey": "API 金鑰",
+ "admin.browserBaseUrl": "基礎 URL",
+ "admin.browserFirecrawlBaseUrlHint": "為自架的 Firecrawl 實例變更"
}
diff --git a/pyproject.toml b/pyproject.toml
index 786967b..68a4c80 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "cptr"
-version = "0.4.0"
+version = "0.4.1"
description = "Your computer, from anywhere. Code, manage, and control your machine from the web."
license = {file = "LICENSE"}
readme = "README.md"