@bigduu/lotus 2026.7.12 → 2026.7.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{ChildApprovalDialog-B_n6Ybdv.js → ChildApprovalDialog-B8LV5Brg.js} +1 -1
- package/dist/assets/{CommandPalette-DjzI2pTn.js → CommandPalette-Bv7nlRLt.js} +1 -1
- package/dist/assets/{CommandSelector-BekiEqh5.js → CommandSelector-C3ulsDEO.js} +1 -1
- package/dist/assets/{ContextBar-CnIYvaBh.js → ContextBar-BZbSoylh.js} +1 -1
- package/dist/assets/{HomeDashboard-oH5yd1vb.js → HomeDashboard-CgF7UUMa.js} +1 -1
- package/dist/assets/{MetricsService-C89VqmCU.js → MetricsService-D9UHnvd2.js} +9 -9
- package/dist/assets/{QuestionDialog-BGmc5T2Q.js → QuestionDialog--OHAcOEw.js} +1 -1
- package/dist/assets/{SessionSummaryCard-CkJ4Ogvy.js → SessionSummaryCard-k8eqS5lA.js} +1 -1
- package/dist/assets/{SubAgentsPanel-CAeEPWG3.js → SubAgentsPanel-DrzlO9tS.js} +1 -1
- package/dist/assets/{SystemPromptSelector-D2ootx2k.js → SystemPromptSelector-Cgw6oRAS.js} +1 -1
- package/dist/assets/SystemSettingsPage-CBDYfyHt.js +22 -0
- package/dist/assets/{TodoList-T6kky_4B.js → TodoList-Bf7mCaiV.js} +1 -1
- package/dist/assets/{WorkspacePathModal-CUjPDoc_.js → WorkspacePathModal-BAca14jc.js} +1 -1
- package/dist/assets/{architectureDiagram-3BPJPVTR-DLK1gMqj.js → architectureDiagram-3BPJPVTR-Cc0X2SOX.js} +1 -1
- package/dist/assets/{blockDiagram-GPEHLZMM-C0NrEsKt.js → blockDiagram-GPEHLZMM-C0KHavBI.js} +1 -1
- package/dist/assets/{c4Diagram-AAUBKEIU-EMtKW39L.js → c4Diagram-AAUBKEIU-CUf6i_A7.js} +1 -1
- package/dist/assets/{chunk-4BX2VUAB-C3d--VIN.js → chunk-4BX2VUAB-BJh4D-bi.js} +1 -1
- package/dist/assets/{chunk-QZHKN3VN-Dk0mCz9-.js → chunk-QZHKN3VN-BPX3Wbyh.js} +1 -1
- package/dist/assets/{classDiagram-v2-Q7XG4LA2-CWS9sLNc.js → classDiagram-v2-Q7XG4LA2-BJbnmQ0y.js} +1 -1
- package/dist/assets/{cose-bilkent-S5V4N54A-BmOdcRKt.js → cose-bilkent-S5V4N54A-zbmmH2SQ.js} +1 -1
- package/dist/assets/{dagre-BM42HDAG-D-bUMkRu.js → dagre-BM42HDAG-D2ARftVi.js} +1 -1
- package/dist/assets/{diagram-2AECGRRQ-DqDRXgPN.js → diagram-2AECGRRQ-DS_VIDcC.js} +1 -1
- package/dist/assets/{diagram-5GNKFQAL-b5E-6nFQ.js → diagram-5GNKFQAL-DdKodxQe.js} +1 -1
- package/dist/assets/{diagram-KO2AKTUF-DdY7JK_0.js → diagram-KO2AKTUF-DyYogOtU.js} +1 -1
- package/dist/assets/{diagram-LMA3HP47-DgatY2IG.js → diagram-LMA3HP47-CRsDsyq7.js} +1 -1
- package/dist/assets/{diagram-OG6HWLK6-24xCofgD.js → diagram-OG6HWLK6-B8vR2DMt.js} +1 -1
- package/dist/assets/{erDiagram-TEJ5UH35-D0Gey1BE.js → erDiagram-TEJ5UH35-Bli7r7qi.js} +1 -1
- package/dist/assets/{flowDiagram-I6XJVG4X-B6U9ME1L.js → flowDiagram-I6XJVG4X-CYBm2UVK.js} +1 -1
- package/dist/assets/{ganttDiagram-6RSMTGT7-DilFRMw7.js → ganttDiagram-6RSMTGT7-C1M6PTcZ.js} +1 -1
- package/dist/assets/{gitGraphDiagram-PVQCEYII-DaVyEvTc.js → gitGraphDiagram-PVQCEYII-CfzDNeeT.js} +1 -1
- package/dist/assets/{ishikawaDiagram-YF4QCWOH-BGdlijUg.js → ishikawaDiagram-YF4QCWOH-CXNXjWYv.js} +1 -1
- package/dist/assets/{journeyDiagram-JHISSGLW-CWLMxmKi.js → journeyDiagram-JHISSGLW-k2I2en9e.js} +1 -1
- package/dist/assets/{kanban-definition-UN3LZRKU-D_a7lScw.js → kanban-definition-UN3LZRKU-fBzcWVq1.js} +1 -1
- package/dist/assets/{main-C8a7IHwC.js → main-CMBp6TFR.js} +7 -7
- package/dist/assets/{mindmap-definition-RKZ34NQL-BasBmfec.js → mindmap-definition-RKZ34NQL-C0aMOvXZ.js} +1 -1
- package/dist/assets/{pieDiagram-4H26LBE5-S4w4FbtF.js → pieDiagram-4H26LBE5-3JdASr15.js} +1 -1
- package/dist/assets/{quadrantDiagram-W4KKPZXB-91BUCW0p.js → quadrantDiagram-W4KKPZXB-DjWz9ih0.js} +1 -1
- package/dist/assets/{requirementDiagram-4Y6WPE33-BWvY5mIA.js → requirementDiagram-4Y6WPE33-Cuya5SaT.js} +1 -1
- package/dist/assets/{sankeyDiagram-5OEKKPKP-OiIZ5WXk.js → sankeyDiagram-5OEKKPKP-DYfSOmpL.js} +1 -1
- package/dist/assets/{sequenceDiagram-3UESZ5HK-CT1uCTgf.js → sequenceDiagram-3UESZ5HK-B5UJcnmP.js} +1 -1
- package/dist/assets/{stateDiagram-AJRCARHV--aI5VQEx.js → stateDiagram-AJRCARHV-DZXWrQl1.js} +1 -1
- package/dist/assets/{stateDiagram-v2-BHNVJYJU-DSpEO8P2.js → stateDiagram-v2-BHNVJYJU-DVbPbZiG.js} +1 -1
- package/dist/assets/{timeline-definition-PNZ67QCA-CPj-ecmC.js → timeline-definition-PNZ67QCA-B40Lgfp8.js} +1 -1
- package/dist/assets/{vendor-charts-CoZ00Nsw.js → vendor-charts-CNLSFcom.js} +1 -1
- package/dist/assets/{vendor-mermaid-BYH4D4XO.js → vendor-mermaid-GjPwPGd2.js} +3 -3
- package/dist/assets/{vendor-pdf-t-TK5evW.js → vendor-pdf-B2zC5nd1.js} +3 -3
- package/dist/assets/{vennDiagram-CIIHVFJN-Bs7RWHXR.js → vennDiagram-CIIHVFJN-CZvfEIkq.js} +1 -1
- package/dist/assets/{wardley-L42UT6IY-DZQ4GuLZ.js → wardley-L42UT6IY-BiXJ6t8a.js} +1 -1
- package/dist/assets/{wardleyDiagram-YWT4CUSO-BpCITa50.js → wardleyDiagram-YWT4CUSO-D49vkhGv.js} +1 -1
- package/dist/assets/{xychartDiagram-2RQKCTM6-BVY9sNsk.js → xychartDiagram-2RQKCTM6-DPMEuY_W.js} +1 -1
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/dist/assets/SystemSettingsPage-Cj-26_Nm.js +0 -22
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./MetricsService-
|
|
2
|
-
import{_ as S,a4 as l,an as h,bN as $,bd as G,ae as X,ac as ee}from"./vendor-mermaid-BYH4D4XO.js";import{j as r}from"./vendor-markdown-Bz_2-zkk.js";import{g as te,i as d,d as oe,R as j,u as z,a as v}from"./vendor-i18n-Dm-c3D_C.js";import{bK as se,l as ie,n as ae,bE as re,bL as ne,bw as le,bM as de}from"./vendor-antd-IzIw5qDM.js";function ce(e,t){for(var s=0;s<t.length;s++){const i=t[s];if(typeof i!="string"&&!Array.isArray(i)){for(const o in i)if(o!=="default"&&!(o in e)){const a=Object.getOwnPropertyDescriptor(i,o);a&&Object.defineProperty(e,o,a.get?a:{enumerable:!0,get:()=>i[o]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))i(o);new MutationObserver(o=>{for(const a of o)if(a.type==="childList")for(const n of a.addedNodes)n.tagName==="LINK"&&n.rel==="modulepreload"&&i(n)}).observe(document,{childList:!0,subtree:!0});function s(o){const a={};return o.integrity&&(a.integrity=o.integrity),o.referrerPolicy&&(a.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?a.credentials="include":o.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function i(o){if(o.ep)return;o.ep=!0;const a=s(o);fetch(o.href,a)}})();var y={},H;function pe(){if(H)return y;H=1;var e=se();return y.createRoot=e.createRoot,y.hydrateRoot=e.hydrateRoot,y}var V=pe();const K=te(V),Ve=ce({__proto__:null,default:K},[V]),ue={"en-US":()=>S(async()=>{const{enUsTranslation:e}=await Promise.resolve().then(()=>Fe);return{enUsTranslation:e}},void 0,import.meta.url).then(({enUsTranslation:e})=>e),"zh-CN":()=>S(async()=>{const{zhCnTranslation:e}=await Promise.resolve().then(()=>De);return{zhCnTranslation:e}},void 0,import.meta.url).then(({zhCnTranslation:e})=>e)},U=new Map,g=e=>{let t=U.get(e);return t||(t=ue[e](),U.set(e,t)),t},me={app:{errorBoundary:{title:"Un problème est survenu",description:"Une erreur inattendue s'est produite dans cette section. Vous pouvez réessayer ou recharger la page si le problème persiste.",tryAgain:"Réessayer",showDetails:"Afficher les détails",hideDetails:"Masquer les détails"},passwordGate:{title:"Entrez le mot de passe d'accès",description:"Une vérification du mot de passe est requise avant d'accéder à l'application.",passwordLabel:"Mot de passe d'accès",passwordPlaceholder:"Entrez le mot de passe d'accès",submit:"Vérifier et continuer",validation:{required:"Veuillez entrer le mot de passe d'accès",verifyFailed:"Échec de la vérification du mot de passe"}},notifications:{toolApproval:{title:"Approbation requise : {{tool}}",body:"L'outil {{tool}} nécessite votre approbation avant exécution",unknownTool:"Outil inconnu"},contextPressure:{title:"Fenêtre de contexte presque épuisée"},backgroundTask:{completedTitle:"Tâche en arrière-plan terminée",completedBody:"« {{title}} » est terminé",completedFallback:"Une tâche en arrière-plan est terminée"},clarification:{title:"Bodhi AI attend votre réponse",fallbackBody:"L'agent attend une réponse à une question"},conversationSummarized:"Conversation résumée : {{messages}} messages compressés, {{tokens}} jetons économisés",allTasksCompleted:"Toutes les tâches sont terminées ! Tours totaux : {{rounds}}, Appels d'outils : {{toolCalls}}",evaluatingTasks:"Évaluation de {{count}} tâche(s)...",evaluationCompleteUpdated:"Évaluation terminée : {{count}} tâche(s) mise(s) à jour.",evaluationCompleteNoUpdates:"Évaluation terminée : aucune mise à jour nécessaire"}},commandPalette:{searchPlaceholder:"Rechercher sessions, paramètres et actions",navigationHint:"Utilisez ↑↓ pour naviguer, Entrée pour ouvrir, Échap pour fermer.",empty:"Aucune commande correspondante",groups:{quickActions:"Actions rapides",settings:"Paramètres système"},badges:{quickAction:"Action",pinned:"Épinglé",running:"En cours",child:"Enfant",childSession:"Session enfant",rootSession:"Session"},actions:{newSession:"Créer une nouvelle session",openProviderSettings:"Ouvrir les paramètres fournisseur",openMcpSettings:"Ouvrir les paramètres MCP",openWorkflowSettings:"Ouvrir les paramètres de flux de travail",openSessionsSettings:"Ouvrir le moniteur de sessions",openSchedulesSettings:"Ouvrir les planifications"},errors:{actionFailed:"Échec de la commande"}},setup:{welcome:{heading:"Bienvenue dans Bodhi",description:"Bodhi est votre assistant de développement alimenté par l'IA. Configurez un fournisseur IA pour commencer, ou lancez-vous directement.",providerHint:"Pour commencer à discuter, vous devez configurer un fournisseur IA (ex. OpenAI, Anthropic) avec une clé API.",proxyHint:"Derrière un proxy d'entreprise ? Vous pouvez configurer les paramètres proxy plus tard dans Paramètres système > Réseau."},button:{getStarted:"Commencer",configureProvider:"Configurer le fournisseur"},complete:{title:"Tout est prêt !",restartMessage:"Rechargement de l'application..."},error:{completeFailed:"Échec de la configuration. Veuillez réessayer."}},onboarding:{welcome:{title:"Bienvenue dans Bodhi !",description:"Bodhi est votre assistant de développement alimenté par l'IA. Faisons un rapide tour d'horizon."},newSession:{title:"Nouvelle session",description:"Cliquez ici pour démarrer une nouvelle session de chat avec l'assistant IA."},taskTemplates:{title:"Modèles de tâches",description:"Choisissez parmi des modèles prédéfinis : revue de code, investigation de bug, refactoring, etc."},modelPicker:{title:"Sélection du modèle",description:"Changez de modèle IA et de fournisseur à tout moment depuis ici."},sidebar:{title:"Barre latérale des sessions",description:"Recherchez, filtrez, épinglez et naviguez entre vos conversations."},settings:{title:"Paramètres",description:"Configurez les fournisseurs IA, proxy, mappages de modèles, serveurs MCP et plus encore."}},common:{saveAnyway:"Enregistrer quand même",parentDirectory:"Répertoire parent",currentPath:"Chemin actuel :",cancel:"Annuler",ok:"OK",apply:"Appliquer",save:"Enregistrer",delete:"Supprimer",yes:"Oui",no:"Non",home:"Accueil",download:"Télécharger",directory:"Répertoire",file:"Fichier"},chat:{workspace:{modalTitle:"Définir le chemin de l'espace de travail",invalidTitle:"Chemin d'accès à l'espace de travail non valide",issuesDetected:"Problèmes potentiels détectés avec le chemin de l'espace de travail :",confirmSaveInvalid:"Voulez-vous toujours enregistrer ce chemin ?",errorEnterPath:"Veuillez saisir un chemin d'accès à l'espace de travail",errorSaveFailed:"Échec de l'enregistrement du chemin de l'espace de travail",placeholder:"par ex. /Utilisateurs/alice/Espace de travail/MonProjet",browseFolder:"Parcourir le dossier",descriptionTitle:"Description du chemin de l'espace de travail",descriptionP1:"Définissez un chemin d'accès à l'espace de travail afin que les références de fichiers et les outils de l'espace de travail puissent résoudre les fichiers de manière fiable.",descriptionP2:"Choisissez un dossier de projet existant. Vous pouvez toujours continuer avec un chemin non valide, mais les fonctionnalités associées risquent de ne pas fonctionner correctement.",checkTitle:"Vérification du chemin de l'espace de travail",checkDescription:"La validation du chemin de l'espace de travail a échoué.",label:"Espace de travail",folderSelected:"Dossier sélectionné avec succès"},folderBrowser:{title:"Sélectionnez le dossier de l'espace de travail",selectCurrent:"Sélectionnez le dossier actuel",emptyFolder:"Ce dossier est vide",tip:'Astuce : cliquez sur un dossier pour y accéder, cliquez sur "Sélectionner le dossier actuel" pour confirmer',readFolderError:"Impossible de lire le dossier"},input:{placeholder:"Envoyer un message...",placeholderWithReference:"Envoyer un message (inclut la référence)",placeholderWithWorkflows:"Envoyer un message... (saisissez '/' pour les workflows)",toolCallsOnly:"Appels d'outils uniquement (outils autorisés : {{tools}})",autoPrefixMode:"Mode de préfixe automatique : {{prefix}} (saisissez « / » pour sélectionner les outils)",toolSpecificMode:"Mode spécifique à l'outil (outils autorisés : {{tools}})",processingFiles:"Traitement des fichiers…",imageCountSingular:"Image {{count}}",imageCountPlural:"Images {{count}}",reasoning:{max:"Max"}},actions:{regenerate:"Régénérer la réponse",retryFailed:"Réessayer la demande ayant échoué",retryOptions:"Options de nouvelle tentative",cancelRequest:"Annuler la demande",sendMessage:"Envoyer un message",copyMessage:"Copier le message",referenceMessage:"Message de référence",generateTitle:"Générer un titre IA",unpin:"Détacher",pin:"Épingler"},fileReference:{title:"@ Référence du fichier",setWorkspace:"Définir l'espace de travail",noMatches:"Aucun fichier correspondant trouvé",emptyDirectory:"Le répertoire est vide"},commandSelector:{types:{mcp:"MCP"}},streaming:{assistant:"Assistant"}},settings:{configTab:{toolsLoadFailed:"Échec du chargement des outils disponibles",toolsReloadSuccess:"Liste d'outils rechargée",toolsSaveSuccess:"Paramètres de l'outil enregistrés avec succès",toolsSaveFailed:"Échec de l'enregistrement des paramètres de l'outil",languageHindi:"Hindi",backendUrlEmpty:"L'URL du back-end ne peut pas être vide",backendUrlInvalidProtocol:"L'URL du back-end doit commencer par http:// ou https://",backendUrlInvalidUrl:"L'URL du back-end n'est pas une URL valide",backendUrlMustEndWithV1:`L'URL du back-end doit se terminer par "/v1"`,accessPassword:{validation:{currentPasswordRequired:"Veuillez entrer le mot de passe actuel",newPasswordRequired:"Veuillez entrer un nouveau mot de passe",confirmPasswordRequired:"Veuillez entrer le nouveau mot de passe à nouveau",minLength:"Le mot de passe doit contenir au moins 4 caractères",passwordMismatch:"Les mots de passe ne correspondent pas"}}},modelLimits:{placeholders:{vendor:"OpenAI / Google / Moonshot"},columns:{notes:"Notes",actions:"Actions"}},systemPromptManager:{title:"Gestion des prompts système",addButton:"Ajouter un prompt",defaultPromptLocked:"Les prompts système par défaut sont verrouillés et ne peuvent pas être modifiés.",updateSuccess:"Prompt mis à jour avec succès",addSuccess:"Prompt ajouté avec succès",saveError:"Échec de l'enregistrement du prompt. Veuillez réessayer.",deleteSuccess:"Prompt supprimé avec succès",deleteError:"Échec de la suppression du prompt. Veuillez réessayer.",deleteConfirm:"Êtes-vous sûr de supprimer ce prompt ?",defaultTag:"Par défaut (verrouillé)",editTitle:"Modifier le prompt système",addTitle:"Ajouter un nouveau prompt système",nameLabel:"Nom du prompt",nameRequired:"Veuillez saisir le nom du prompt !",descriptionLabel:"Description du prompt",descriptionRequired:"Veuillez saisir la description du prompt !",contentLabel:"Contenu du prompt",contentRequired:"Veuillez saisir le contenu du prompt !"},envVars:{title:"Variables d'environnement",description:"Les variables sont injectées dans les processus de l'outil Bash. Les variables secrètes sont chiffrées au repos.",fetchError:"Échec du chargement des variables d'environnement",created:"Variable créée",updated:"Variable mise à jour",saveError:"Échec de l'enregistrement de la variable",deleted:"Variable supprimée",deleteError:"Échec de la suppression de la variable",addButton:"Ajouter une variable",noVars:"Aucune variable d'environnement configurée",addTitle:"Ajouter une variable d'environnement",editTitle:"Modifier une variable",nameRequired:"Le nom de la variable est obligatoire",nameInvalid:"Doit commencer par une lettre ou un trait de soulignement, suivi de lettres, de chiffres ou de traits de soulignement",valueRequired:"La valeur est requise pour les nouvelles variables",valueEditHint:"Laisser vide pour conserver la valeur existante",valuePlaceholder:"Entrez la valeur",valuePlaceholderEdit:"Entrez une nouvelle valeur ou laissez vide",secretHint:"Les variables secrètes sont chiffrées sur le disque et masquées dans l'interface utilisateur",descriptionPlaceholder:"Description facultative",deleteConfirm:"Supprimer cette variable ?",notSet:"(non réglé)",empty:"(vide)",save:"Enregistrer",cancel:"Annuler",name:"Nom",value:"Valeur",secret:"Secrète",descriptionField:"Description",type:"Type",plain:"Texte brut",descriptionCol:"Description",actions:"Actions",yes:"Oui",no:"Non"},hooksTab:{mode:{ocr:"OCR (Windows)",vision:"Vision (LLM)",placeholder:"Placeholder"},modeLabel:"Mode"},providerTab:{fastModel:"Modèle rapide (facultatif)",fastModelHelp:"Modèle moins cher/plus rapide pour les tâches légères telles que la génération de titres, la correction Mermaid et la synthèse. Utilise le modèle par défaut lorsqu'il n'est pas défini.",visionModel:"Modèle de vision (facultatif)",visionModelHelp:"Modèle capable de vision pour la compréhension des images. Lorsque hooks.image_fallback.mode est défini sur « vision », ce modèle décrit les images sous forme de texte afin que les modèles contenant uniquement du texte puissent les comprendre. Utilise le modèle par défaut lorsqu'il n'est pas défini.",sameAsDefault:"Identique au modèle par défaut",providerNames:{openai:"OpenAI",anthropic:"Anthropic",gemini:"Gemini",copilot:"Copilot"}},mcpTab:{statusHelp:{connecting:"Le serveur démarre ou se reconnecte",ready:"Le serveur est connecté et sert les outils normalement",degraded:"Le serveur est partiellement disponible ; certains outils peuvent échouer",stopped:"Le serveur ne fonctionne pas",error:"Le serveur n'a pas pu démarrer ou a rencontré des erreurs d'exécution"}},metricsDashboard:{sessionsCount:"{{count}} sessions",tokensAmount:"{{value}} jetons",sessionsTabLabel:"Sessions ({{count}})",roundColumns:{tokens:"Jetons"},multiplierSuffix:"x",sessionDetail:{messages:"Messages"}},page:{tabs:{prompts:"Prompts",mermaid:"Mermaid",mcp:"MCP",sessions:"Sessions",hooks:"Hooks"}},appTab:{languageHindi:"Hindi"},modelMappingCard:{modelTypeOpus:"Opus",modelTypeSonnet:"Sonnet",modelTypeHaiku:"Haïku"},mermaidTab:{switchAuto:"Auto",flowchartCurveOptions:{cardinal:"Cardinal"}},schedulesTab:{columns:{actions:"Actions"},actions:{sessions:"Sessions"},triggerTypes:{interval:"Intervalle",daily:"Quotidien",weekly:"Hebdomadaire",monthly:"Mensuel",cron:"Cron"},weekdays:{mon:"Lun",tue:"Mar",wed:"Mer",thu:"Jeu",fri:"Ven",sat:"Sam",sun:"Dim"},statusLabels:{running:"En cours",queued:"En file d'attente",failing:"En échec",disabled:"Désactivé",healthy:"Sain",idle:"Inactif"},statusDetails:{active:"{{count}} actif(s)",pending:"{{count}} en attente",consecutiveFailures:"{{count}} échecs consécutifs",lastRunSucceeded:"Dernière exécution réussie"},activityLabels:{queued:"En file : {{count}}",running:"En cours : {{count}}",ok:"OK : {{count}}",fail:"Échec : {{count}}"}},sessionsTab:{id:"Identifiant"},mcpServerTable:{columns:{actions:"Actions"},transportOptions:{sse:"SSE",stdio:"Stdio"}},mcpServerForm:{modeJson:"JSON",transportOptions:{stdio:"Stdio",sse:"SSE"},arguments:"Arguments"},metricsTable:{session:{columns:{session:"Session",tokens:"Jetons",messages:"Messages",action:"Action"}},forward:{columns:{id:"Identifiant",type:"Type",tokens:"Jetons"}}},charts:{total:"Total",prompt:"Prompt",chat:"Chat"}},components:{markdown:{codeCopiedSuccess:"Code copié dans le presse-papier",copyFailed:"Échec de la copie"},jsonSchema:{noProperties:"Aucune propriété dans le schéma",field:"Champ",type:"Type",required:"Requis",yes:"Oui",no:"Non",default:"Défaut",description:"Description"},imageGrid:{ocr:"OCR"},tokenUsage:{messages:"Messages",tokens:"jetons"},approval:{workflow:"Flux de travail"}}},ge={app:{errorBoundary:{title:"कुछ गलत हो गया",description:"इस अनुभाग में एक अप्रत्याशित त्रुटि हुई। आप पुनः प्रयास कर सकते हैं या समस्या बनी रहने पर पृष्ठ पुनः लोड कर सकते हैं।",tryAgain:"पुनः प्रयास करें",showDetails:"विवरण दिखाएँ",hideDetails:"विवरण छिपाएँ"},passwordGate:{title:"एक्सेस पासवर्ड दर्ज करें",description:"एप्लिकेशन में प्रवेश करने से पहले पासवर्ड सत्यापन आवश्यक है।",passwordLabel:"एक्सेस पासवर्ड",passwordPlaceholder:"एक्सेस पासवर्ड दर्ज करें",submit:"सत्यापित करें और जारी रखें",validation:{required:"कृपया एक्सेस पासवर्ड दर्ज करें",verifyFailed:"पासवर्ड सत्यापन विफल"}},notifications:{toolApproval:{title:"अनुमोदन आवश्यक: {{tool}}",body:"टूल {{tool}} को निष्पादित करने के लिए आपकी मंजूरी चाहिए",unknownTool:"अज्ञात टूल"},contextPressure:{title:"कॉन्टेक्स्ट विंडो लगभग भर गई है"},backgroundTask:{completedTitle:"बैकग्राउंड टास्क पूरा हुआ",completedBody:"「{{title}}」 पूरा हुआ",completedFallback:"बैकग्राउंड टास्क पूरा हुआ"},clarification:{title:"Bodhi AI आपका जवाब दे रहा है",fallbackBody:"एजेंट एक सवाल का जवाब दे रहा है"},conversationSummarized:"वार्तालाप सारांशित: {{messages}} संदेश संपीड़ित, {{tokens}} टोकन बचाए गए",allTasksCompleted:"सभी कार्य पूरे हुए! कुल राउंड: {{rounds}}, टूल कॉल: {{toolCalls}}",evaluatingTasks:"{{count}} कार्यों का मूल्यांकन हो रहा है...",evaluationCompleteUpdated:"मूल्यांकन पूर्ण: {{count}} कार्य अद्यतन किए गए।",evaluationCompleteNoUpdates:"मूल्यांकन पूर्ण: कोई अद्यतन आवश्यक नहीं"}},common:{saveAnyway:"फिर भी सहेजें",parentDirectory:"मूल निर्देशिका",currentPath:"वर्तमान पथ:",cancel:"रद्द करें",ok:"ठीक है",apply:"लागू करें",save:"सहेजें",delete:"हटाएँ",yes:"हाँ",no:"नहीं",home:"होम",download:"डाउनलोड करें",directory:"निर्देशिका",file:"फ़ाइल"},chat:{workspace:{placeholder:"जैसे /उपयोगकर्ता/ऐलिस/वर्कस्पेस/मायप्रोजेक्ट",descriptionP1:"एक वर्कस्पेस पथ सेट करें ताकि फ़ाइल संदर्भ और वर्कस्पेस उपकरण फ़ाइलों को विश्वसनीय रूप से हल कर सकें।",descriptionP2:"कोई मौजूदा प्रोजेक्ट फ़ोल्डर चुनें. आप अभी भी अमान्य पथ के साथ जारी रख सकते हैं, लेकिन हो सकता है कि संबंधित सुविधाएं ठीक से काम न करें।"},folderBrowser:{title:"वर्कस्पेस फ़ोल्डर चुनें",selectCurrent:"वर्तमान फ़ोल्डर का चयन करें",emptyFolder:"यह फ़ोल्डर खाली है",tip:'युक्ति: दर्ज करने के लिए किसी फ़ोल्डर पर क्लिक करें, पुष्टि करने के लिए "वर्तमान फ़ोल्डर का चयन करें" पर क्लिक करें'},actions:{regenerate:"प्रतिक्रिया पुनः उत्पन्न करें",retryFailed:"विफल अनुरोध पुनः प्रयास करें",retryOptions:"पुनः प्रयास विकल्प",cancelRequest:"अनुरोध को रद्द करें",sendMessage:"संदेश भेजें",copyMessage:"संदेश कॉपी करें",referenceMessage:"संदर्भ संदेश",generateTitle:"AI शीर्षक उत्पन्न करें",unpin:"अनपिन",pin:"नत्थी करें"},fileReference:{title:"@फ़ाइल संदर्भ",setWorkspace:"वर्कस्पेस सेट करें",noMatches:"कोई मेल खाती फ़ाइलें नहीं मिलीं",emptyDirectory:"निर्देशिका खाली है"},commandSelector:{types:{mcp:"MCP"}}},settings:{notifications:{deleteAllSuccess:"सभी सत्र हटा दिए गए (पिन किए गए को छोड़कर)",deleteEmptySuccess:"खाली सत्र हटा दिए गए (पिन किए गए को छोड़कर)",localStorageCleared:"स्थानीय भंडारण साफ़ कर दिया गया है",resetSuccessReloading:"एप्लिकेशन रीसेट सफल. पुनः लोड हो रहा है...",resetFailed:"एप्लिकेशन रीसेट करने में विफल",autoTitleEnabled:"स्वतः शीर्षक निर्माण सक्षम",autoTitleDisabled:"स्वतः शीर्षक निर्माण अक्षम",autoTitleUpdateFailed:"स्वतः शीर्षक प्राथमिकता अद्यतन करने में विफल",promptEnhancementSaved:"सिस्टम प्रॉम्प्ट एन्हांसमेंट सहेजा गया"},appTab:{deleteAllTitle:"सभी सत्र हटाएँ",deleteAllDescription:"क्या आपको यकीन है? इससे पिन किए गए को छोड़कर सभी सत्र हटा दिए जाएंगे.",deleteAllButton:"सभी सत्र हटाएँ",deleteEmptyTitle:"खाली सत्र हटाएँ",deleteEmptyDescription:"क्या आपको यकीन है? इससे बिना किसी संदेश वाले (पिन किए गए को छोड़कर) सभी सत्र हटा दिए जाएंगे।",deleteEmptyButton:"खाली सत्र हटाएँ",clearLocalStorageTitle:"स्थानीय संग्रहण साफ़ करें",clearLocalStorageDescription:"क्या आपको यकीन है? यह सभी स्थानीय संग्रहण डेटा को हटा देगा और एप्लिकेशन को रीसेट कर देगा।",clearLocalStorageButton:"स्थानीय संग्रहण साफ़ करें",confirmDeleteAll:"हाँ, सभी हटा दें",confirmDeleteEmpty:"हां, खाली हटाएं",confirmClear:"हाँ, इसे साफ़ करें",dangerDescription:"इन कार्रवाइयों को पूर्ववत नहीं किया जा सकता. सारा डेटा स्थायी रूप से हटा दिया जाएगा.",resetApplicationTitle:"एप्लिकेशन रीसेट करें",resetApplicationIntro:"क्या आपको यकीन है? यह करेगा:",resetStepDeleteAllSessions:"सभी सत्र हटाएं (पिन किए गए सहित)",resetStepClearStorage:"सभी स्थानीय संग्रहण डेटा साफ़ करें",resetStepResetConfig:"config.json को डिफ़ॉल्ट पर रीसेट करें",resetStepSetupFlow:"अगले लॉन्च पर प्रारंभिक सेटअप प्रवाह ट्रिगर करें",resetStepReload:"एप्लिकेशन पुनः लोड करें",resetConfirm:"हाँ, सब कुछ रीसेट करें",resetButton:"एप्लिकेशन रीसेट करें (सभी डेटा)"},configTab:{loadConfigFailed:"कॉन्फ़िगरेशन लोड करने में विफल",invalidConfig:"अमान्य कॉन्फ़िगरेशन",saveConfigSuccess:"कॉन्फ़िगरेशन सफलतापूर्वक सहेजा गया",saveConfigFailed:"कॉन्फ़िगरेशन सहेजने में विफल",toolsLoadFailed:"उपलब्ध उपकरण लोड करने में विफल",toolsReloadSuccess:"टूल सूची पुनः लोड की गई",toolsSaveSuccess:"टूल सेटिंग सफलतापूर्वक सहेजी गईं",toolsSaveFailed:"टूल सेटिंग सहेजने में विफल",backendSaved:"बैकएंड URL सहेजा गया",backendResetDefault:"बैकएंड URL डिफ़ॉल्ट पर रीसेट हो गया",backendUrlEmpty:"बैकएंड URL खाली नहीं हो सकता",backendUrlInvalidProtocol:"बैकएंड URL http:// या https:// से शुरू होना चाहिए",backendUrlInvalidUrl:"बैकएंड URL एक मान्य URL नहीं है",backendUrlMustEndWithV1:'बैकएंड URL को "/v1" पर समाप्त होना चाहिए',accessPassword:{validation:{currentPasswordRequired:"कृपया वर्तमान पासवर्ड दर्ज करें",newPasswordRequired:"कृपया नया पासवर्ड दर्ज करें",confirmPasswordRequired:"कृपया नया पासवर्ड दोबारा दर्ज करें",minLength:"पासवर्ड कम से कम 4 अक्षरों का होना चाहिए",passwordMismatch:"पासवर्ड मेल नहीं खाते"}}},modelMappingCard:{loadProviderFailed:"प्रदाता कॉन्फ़िगरेशन लोड करने में विफल",loadMappingsFailed:"मौजूदा मैपिंग लोड करने में विफल",loadModelsFailed:"मॉडल लोड करने में विफल",loadModelsHint:"मॉडल लोड करने में विफल. कृपया अपने प्रदाता कॉन्फ़िगरेशन की जाँच करें।",mappingSaved:"मॉडल मैपिंग सहेजी गई",mappingSaveFailed:"मॉडल मैपिंग सहेजने में विफल",enterModelName:"कृपया एक मॉडल नाम दर्ज करें",customMappingSaved:"कस्टम मॉडल मैपिंग सहेजी गई",customMappingSaveFailed:"कस्टम मॉडल मैपिंग सहेजने में विफल",mappedModelNotFound:'मैप किया गया मॉडल "{{model}}" वर्तमान प्रदाता के उपलब्ध मॉडल में नहीं मिला',cached:"(कैश्ड)",modelTypeOpus:"Opus",modelTypeSonnet:"Sonnet",modelTypeHaiku:"Haiku"},modelTab:{selectModelTitle:"मॉडल का चयन करें",loadingModels:"मॉडल लोड हो रहे हैं...",selectModelPlaceholder:"एक मॉडल चुनें",backendApiBaseUrlTitle:"बैकएंड API बेस URL",resetToDefault:"डिफ़ॉल्ट पर रीसेट करें",backendApiHint:"/v1 (उदा. {{example}}) सहित पूर्ण आधार URL होना चाहिए।",save:"सहेजें"},mermaidTab:{title:"Mermaid आरेख सेटिंग्स",description:"अनुकूलित करें कि आपकी चैट में Mermaid आरेख कैसे प्रस्तुत किए जाते हैं",themeLabel:"Mermaid थीम",themeTooltip:"एक अंतर्निर्मित Mermaid थीम चुनें। ऐप थीम के आधार पर प्रकाश और अंधेरे के बीच डिफ़ॉल्ट और न्यूट्रल ऑटो-स्विच।",themeOptions:{default:"डिफ़ॉल्ट (स्वतः लाइट/डार्क)",neutral:"तटस्थ (स्वतः लाइट/डार्क)",forest:"वन (हरा थीम)",base:"आधार (न्यूनतम)",dark:"अँधेरा"},themeDescriptionsTitle:"थीम डिस्क्रिप्शन:",themeDescriptions:{default:"डिफ़ॉल्ट: क्लासिक Mermaid लुक, प्रकाश/अंधेरे में स्वतः अनुकूलित",neutral:"तटस्थ: ग्रे टोन, प्रकाश/अंधेरे के लिए स्वतः अनुकूलित",dark:"डार्क: हमेशा डार्क थीम",forest:"वन: हरा रंग योजना, तकनीकी आरेखों के लिए उपयुक्त",base:"आधार: अनुकूलित थीम के लिए न्यूनतम शैली"},globalCardTitle:"वैश्विक सेटिंग्स",fontSizeLabel:"फ़ॉन्ट आकार",fontSizeTooltip:"सभी आरेख पाठ के लिए आधार फ़ॉन्ट आकार (पिक्सेल में)",defaultZoomLabel:"डिफ़ॉल्ट ज़ूम",defaultZoomTooltip:"आरेखों के लिए प्रारंभिक ज़ूम स्तर (1.0 = 100%)",responsiveWidthLabel:"प्रतिक्रियाशील चौड़ाई",responsiveWidthTooltip:"आरेखों को कंटेनर की चौड़ाई के अनुकूल बनाने में सक्षम करें। निश्चित-चौड़ाई वाले आरेखों के लिए अक्षम करें.",flowchartCardTitle:"Flowchart सेटिंग्स",flowchartNodeSpacingLabel:"नोड रिक्ति",flowchartNodeSpacingTooltip:"नोड्स के बीच क्षैतिज दूरी",flowchartRankSpacingLabel:"रैंक रिक्ति",flowchartRankSpacingTooltip:"परतों के बीच लंबवत दूरी",flowchartCurveTypeLabel:"वक्र प्रकार",flowchartCurveTypeTooltip:"कनेक्शन के लिए वक्र का प्रकार",flowchartCurveOptions:{basis:"Basis (स्मूथ)",linear:"रेखीय",cardinal:"Cardinal"},sequenceCardTitle:"Sequence Diagram सेटिंग्स",sequenceActorMarginLabel:"एक्टर मार्जिन",sequenceActorMarginTooltip:"एक्टरों के बीच अंतर",sequenceMessageMarginLabel:"संदेश मार्जिन",sequenceMessageMarginTooltip:"संदेश के बीच अंतर",sequenceActorWidthLabel:"एक्टर चौड़ाई",sequenceActorWidthTooltip:"प्रत्येक एक्टर बॉक्स की चौड़ाई",sequenceActorHeightLabel:"एक्टर की ऊंचाई",sequenceActorHeightTooltip:"प्रत्येक एक्टर बॉक्स की ऊंचाई",ganttCardTitle:"Gantt चार्ट सेटिंग्स",ganttBarHeightLabel:"बार की ऊंचाई",ganttBarHeightTooltip:"प्रत्येक कार्य पट्टी की ऊंचाई",ganttTopPaddingLabel:"शीर्ष गद्दी",ganttTopPaddingTooltip:"चार्ट के शीर्ष पर स्थान",resetToDefaults:"डिफ़ॉल्ट पर पुनः सेट करें",previewDescription:"परिवर्तन तुरंत लागू होते हैं. अपनी सेटिंग्स को क्रियान्वित होते देखने के लिए एक आरेख बनाने या देखने का प्रयास करें।",themeCardTitle:"विषय",switchAuto:"ऑटो",switchFixed:"तय",previewTitle:"पूर्व दर्शन"},modelLimits:{title:"टोकन बजट मॉडल सीमाएँ",descriptionPrefix:"संदर्भ बजटिंग के लिए प्रति-मॉडल टोकन सीमाएं कॉन्फ़िगर करें। ये सेटिंग्स Bamboo में विश्व स्तर पर कायम हैं",descriptionSuffix:"और बैकएंड रिज़ॉल्वर द्वारा उपयोग किया जाता है।",defaultsTitle:"मॉडल डिफ़ॉल्ट",defaultsDescription:"GPT-5 / GPT-4 / Gemini / Kimi / GLM डिफ़ॉल्ट के साथ प्रीलोडेड। आप आवश्यकतानुसार संपादन जारी रख सकते हैं।",migratedFromLocalStorage:"स्थानीय भंडारण से वैश्विक कॉन्फिगरेशन में स्थानांतरित मॉडल सीमाएँ।",loadFailed:"मॉडल सीमा सेटिंग लोड करने में विफल",saveSuccess:"मॉडल सीमाएँ वैश्विक कॉन्फ़िगरेशन में सहेजी गईं",saveFailed:"मॉडल सीमा सेटिंग सहेजने में विफल",resetSuccess:"मॉडल सीमाएँ उत्पाद डिफ़ॉल्ट पर रीसेट हो गईं",resetFailed:"मॉडल सीमा सेटिंग रीसेट करने में विफल",defaults:{gpt54:"तर्क की गहराई के साथ शीर्ष स्तरीय क्षमता।",gpt53Codex:"कोड रीफैक्टरिंग वर्कफ़्लोज़ के लिए अनुकूलित।",gpt52Pro:"जटिल कार्यों के लिए मजबूत तार्किक स्थिरता।",gpt5Mini:"तेज़ और लागत प्रभावी सामान्य प्रयोजन विकल्प।",gpt41:"1M विंडो वाला क्लासिक बड़े-संदर्भ वाला मॉडल।",gpt4o:"कम विलंबता, रोजमर्रा की चैट के लिए उपयुक्त।",gemini25Pro:"मजबूत मल्टीमॉडल विश्लेषण क्षमताएं।",kimiK25:"दीर्घ-रूप वाली चीनी सामग्री के लिए पसंदीदा।",kimiCoding:"कोडिंग-केंद्रित परिदृश्यों के लिए ट्यून किया गया।",glm5:"एक-शॉट बड़े-दस्तावेज़ निर्माण के लिए अच्छा है।"},columns:{contextWindow:"Context Window",maxOutput:"अधिकतम आउटपुट",model:"मॉडल",notes:"टिप्पणियाँ",actions:"कार्रवाई"},placeholders:{vendor:"OpenAI/Google/Moonshot",model:"जैसे gpt-5.4-think",optional:"वैकल्पिक"},actions:{addRow:"लाइन जोड़ें",resetToDefaults:"डिफ़ॉल्ट पर पुनः सेट करें",remove:"निकालें",save:"सहेजें",reload:"पुनः लोड करें"},validation:{atLeastOneRow:"कृपया कम से कम एक मॉडल सीमा पंक्ति रखें।",modelPatternEmpty:"मॉडल पैटर्न खाली नहीं हो सकता.",duplicateModelPattern:"डुप्लिकेट मॉडल पैटर्न: {{pattern}}",contextWindowMin:"{{pattern}} के लिए संदर्भ विंडो कम से कम 1000 होनी चाहिए।",maxOutputMin:"{{pattern}} के लिए अधिकतम आउटपुट कम से कम 1 होना चाहिए।",maxOutputExceedsContext:"{{pattern}} के लिए अधिकतम आउटपुट संदर्भ विंडो से कम या उसके बराबर होना चाहिए।",safetyMarginNegative:"{{pattern}} के लिए सुरक्षा मार्जिन नकारात्मक नहीं हो सकता।",safetyMarginTooLarge:"{{pattern}} के लिए सुरक्षा मार्जिन संदर्भ विंडो से छोटा होना चाहिए।"}},systemPromptManager:{title:"सिस्टम प्रॉम्प्ट प्रबंधन",addButton:"प्रॉम्प्ट जोड़ें",defaultPromptLocked:"डिफ़ॉल्ट सिस्टम प्रॉम्प्ट लॉक हैं और संपादित नहीं किए जा सकते।",updateSuccess:"प्रॉम्प्ट सफलतापूर्वक अद्यतन किया गया",addSuccess:"प्रॉम्प्ट सफलतापूर्वक जोड़ा गया",saveError:"प्रॉम्प्ट सहेजने में विफल. कृपया पुन: प्रयास करें।",deleteSuccess:"प्रॉम्प्ट सफलतापूर्वक हटा दिया गया",deleteError:"प्रॉम्प्ट हटाने में विफल. कृपया पुन: प्रयास करें।",deleteConfirm:"क्या आप निश्चित रूप से इस प्रॉम्प्ट को हटाना चाहते हैं?",defaultTag:"डिफ़ॉल्ट (लॉक)",editTitle:"सिस्टम प्रॉम्प्ट संपादित करें",addTitle:"नया सिस्टम प्रॉम्प्ट जोड़ें",nameLabel:"प्रॉम्प्ट नाम",nameRequired:"कृपया प्रॉम्प्ट का नाम इनपुट करें!",descriptionLabel:"प्रॉम्प्ट डिस्क्रिप्शन",descriptionRequired:"कृपया प्रॉम्प्ट का डिस्क्रिप्शन दर्ज करें!",contentLabel:"प्रॉम्प्ट सामग्री",contentRequired:"कृपया प्रॉम्प्ट की सामग्री इनपुट करें!"},envVars:{title:"एनवायरमेंट वेरिएबल्स",description:"वैरिएबल को Bash टूल प्रक्रियाओं में इंजेक्ट किया जाता है। गुप्त चर आराम से एन्क्रिप्ट किए गए हैं।",fetchError:"एनवायरमेंट वेरिएबल्स लोड करने में विफल",created:"वेरिएबल बनाया गया",updated:"वेरिएबल अद्यतन किया गया",saveError:"वेरिएबल सहेजने में विफल",deleted:"वेरिएबल हटा दिया गया",deleteError:"वेरिएबल हटाने में विफल",addButton:"वेरिएबल जोड़ें",noVars:"कोई एनवायरमेंट वेरिएबल कॉन्फ़िगर नहीं किया गया",addTitle:"एनवायरमेंट वेरिएबल जोड़ें",editTitle:"वेरिएबल संपादित करें",nameRequired:"वेरिएबल नाम आवश्यक है",nameInvalid:"एक अक्षर या अंडरस्कोर से शुरू होना चाहिए, उसके बाद अक्षर, अंक या अंडरस्कोर होना चाहिए",valueRequired:"नए वेरिएबल के लिए मान आवश्यक है",valueEditHint:"मौजूदा मान बनाए रखने के लिए खाली छोड़ें",valuePlaceholder:"मान दर्ज करें",valuePlaceholderEdit:"नया मान दर्ज करें या खाली छोड़ दें",secretHint:"गुप्त चर डिस्क पर एन्क्रिप्ट किए गए हैं और यूआई में छिपाए गए हैं",descriptionPlaceholder:"वैकल्पिक डिस्क्रिप्शन",deleteConfirm:"यह वेरिएबल हटाएं?",notSet:"(सेट नहीं)",empty:"(खाली)",save:"सहेजें",cancel:"रद्द करें",name:"नाम",value:"वैल्यू",secret:"गुप्त",descriptionField:"डिस्क्रिप्शन",type:"प्रकार",plain:"सादा",descriptionCol:"डिस्क्रिप्शन",actions:"कार्रवाई",yes:"हाँ",no:"नहीं"},promptsTab:{title:"सिस्टम प्रॉम्प्ट एन्हांसमेंट",mermaidEnhancement:"Mermaid एन्हांसमेंट",taskListRules:"साझा कार्य नियम",copilotConclusionWithOptionsBeforeFinish:"समाप्त होने से पहले Copilot ने उपयोगकर्ता से पूछा",enhancementPlaceholder:"प्रत्येक सिस्टम प्रॉम्प्ट में जोड़ने के लिए वैश्विक एन्हांसमेंट टेक्स्ट जोड़ें।",saveEnhancement:"एन्हांसमेंट सहेजें",description:"प्रत्येक अनुरोध भेजे जाने से पहले इस पाठ को पहले जोड़ा जाता है, उसके बाद सक्षम सिस्टम एन्हांसमेंट जोड़ा जाता है।",switchOn:"पर",switchOff:"बंद"},hooksTab:{title:"छवि हुक",enableImagePreflight:"छवि प्रीफ़्लाइट हुक सक्षम करें",description:"प्लेसहोल्डर मोड छवियों को पाठ सारांश में फिर से लिखता है (यह उन टूल को तोड़ सकता है जो वास्तविक छवि डेटा की अपेक्षा करते हैं)। OCR वर्तमान में केवल विंडोज़ है।",loadFailed:"हुक सेटिंग्स लोड करने में विफल",updateFailed:"हुक अद्यतन करने में विफल",modeUpdateFailed:"हुक मोड अपडेट करने में विफल",enabled:"छवि हुक सक्षम",disabled:"छवि हुक अक्षम किए गए",modeUpdated:"इमेज हुक मोड इस पर सेट है: {{mode}}",mode:{ocr:"OCR (Windows)",vision:"Vision (LLM)",placeholder:"प्लेसहोल्डर",error:"त्रुटि"},modeLabel:"मोड"},schedulesTab:{triggerTypes:{interval:"अंतराल",daily:"दैनिक",weekly:"साप्ताहिक",monthly:"मासिक",cron:"Cron"},loadFailed:"शेड्यूल लोड करने में विफल",loadSessionsFailed:"शेड्यूल सत्र लोड करने में विफल",createFailed:"शेड्यूल बनाने में विफल",updateFailed:"शेड्यूल अपडेट करने में विफल",deleteFailed:"शेड्यूल हटाने में विफल",runNowFailed:"शेड्यूल चलाने में विफल",taskMessageRequired:"ऑटो एक्ज़ीक्यूट सक्षम होने पर कार्य संदेश आवश्यक है",created:"शेड्यूल बनाया गया",updated:"शेड्यूल अपडेट किया गया",deleted:"हटाया गया शेड्यूल",enqueuedRun:"कतार में जोड़ा गया",optional:"(वैकल्पिक)",defaultName:"मेरी अनुसूची",createTitle:"शेड्यूल बनाएं",scheduleSessionsTitle:"सत्र अनुसूची",noSessionsYet:"अभी तक कोई सत्र नहीं.",editTitle:"शेड्यूल संपादित करें",columns:{autoExecute:"स्वतः निष्पादित",intervalSeconds:"अंतराल",nextRun:"अगला रन",lastRun:"आखरी बार",name:"नाम",model:"मॉडल",enabled:"सक्रिय",actions:"कार्रवाई"},form:{intervalSeconds:"अंतराल सेकंड",taskMessage:"कार्य संदेश",taskMessagePlaceholder:"(वैकल्पिक) चलाने के लिए एक कार्य",modelPlaceholder:"(वैकल्पिक) उदा. gpt-4o-mini",modelRequiredIfAuto:"यदि स्वतः निष्पादित हो तो आवश्यक है",autoExecute:"स्वतः निष्पादित",systemPrompt:"सिस्टम प्रॉम्प्ट",workspacePath:"वर्कस्पेस पथ",enhancePrompt:"प्रॉम्प्ट बढ़ाएँ",name:"नाम",enabled:"सक्रिय",model:"मॉडल"},validation:{nameRequired:"नाम आवश्यक है",intervalRequired:"अंतराल आवश्यक है"},actions:{runNow:"अब चलाएँ",create:"बनाएं",refresh:"ताज़ा करें",edit:"संपादन करें",sessions:"सत्र",delete:"हटाएँ",open:"खोलें",save:"सहेजें"},yes:"हाँ",no:"नहीं",listTitle:"अनुसूचियों",weekdays:{mon:"सोम",tue:"मंगल",wed:"बुध",thu:"गुरु",fri:"शुक्र",sat:"शनि",sun:"रवि"},statusLabels:{running:"चल रहा है",queued:"कतार में",failing:"विफल हो रहा है",disabled:"अक्षम",healthy:"स्वस्थ",idle:"निष्क्रिय"},statusDetails:{active:"{{count}} सक्रिय",pending:"{{count}} लंबित",consecutiveFailures:"{{count}} लगातार विफलताएँ",lastRunSucceeded:"अंतिम रन सफल रहा"},activityLabels:{queued:"कतार: {{count}}",running:"चल रहे: {{count}}",ok:"सफल: {{count}}",fail:"विफल: {{count}}"}},sessionsTab:{currentSessionTitle:"वर्तमान सत्र",clearMessages:"संदेश साफ़ करें",clearMessagesTitle:"सत्र संदेश साफ़ करें",clearMessagesContent:"यह वर्तमान सत्र के लिए संदेश/अनुलग्नक साफ़ करता है लेकिन सत्र प्रविष्टि रखता है।",sessionCleared:"सत्र साफ़ हो गया",noActiveSession:"कोई सक्रिय सत्र नहीं.",bulkCleanupTitle:"थोक सफ़ाई",keepPinned:"पिन किए रखें",deleteAll:"सभी हटा दो",deleteAllTitle:"सभी सत्र हटाएँ",deleteAllKeepPinned:"पिन किए गए को छोड़कर सभी सत्र हटा देता है।",deleteAllIncludePinned:"पिन किए गए सहित सभी सत्र हटा देता है।",deleteEmpty:"रिक्त हटाएँ",deleteEmptyTitle:"खाली सत्र हटाएँ",deleteEmptyKeepPinned:"पिन किए गए को छोड़कर खाली सत्र हटा देता है।",deleteEmptyIncludePinned:"पिन किए गए सहित खाली सत्र हटा देता है।",deleteChildren:"बच्चों को हटाएँ",deleteChildrenTitle:"बाल सत्र हटाएँ",deleteChildrenKeepPinned:"पिन किए गए को छोड़कर सभी चाइल्ड सत्र हटा देता है।",deleteChildrenIncludePinned:"पिन किए गए सहित सभी चाइल्ड सत्र हटा देता है।",cleanupComplete:"सफ़ाई पूर्ण",devResetTitle:"विकास रीसेट",devResetDescription:"सत्र संग्रहण के लिए ग्रीनफ़ील्ड रीसेट (सत्र हटाता है/ और session.json रीसेट करता है)।",devResetAction:"देव रीसेट सत्र",devResetConfirmTitle:"सत्र संग्रहण रीसेट करें (डेव)",devResetConfirmContent:"यह सभी सत्रों (पिन किए गए/चाइल्ड सहित) को हटा देता है और सत्र सूचकांक को रीसेट कर देता है। रीफ्रेश के बाद एक नया खाली सत्र बनाया जाएगा।",devResetDone:"सत्र संग्रहण रीसेट",id:"ID",kind:"प्रकार",clear:"साफ़ करें",cancel:"रद्द करें",delete:"हटाएँ",reset:"रीसेट करें"},workflowsTab:{description:"वर्कफ़्लो को `~/.bamboo/workflows` में मार्कडाउन फ़ाइलों के रूप में संग्रहीत किया जाता है। चैट में वर्कफ़्लो सम्मिलित करने के लिए `/name` का उपयोग करें।",loadFailed:"वर्कफ़्लो लोड करने में विफल",loadContentFailed:"वर्कफ़्लो सामग्री लोड करने में विफल",invalidName:"अमान्य वर्कफ़्लो नाम",nameAlreadyExists:"इस नाम का एक वर्कफ़्लो पहले से मौजूद है",saved:"वर्कफ़्लो सहेजा गया",saveFailed:"वर्कफ़्लो सहेजने में विफल",deleted:"वर्कफ़्लो हटा दिया गया",deleteFailed:"वर्कफ़्लो हटाने में विफल",newWorkflow:"नया वर्कफ़्लो",empty:"कोई वर्कफ़्लो नहीं मिला",namePlaceholder:"वर्कफ़्लो नाम",contentPlaceholder:`# वर्कफ़्लो शीर्षक
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./MetricsService-D9UHnvd2.js","./vendor-markdown-Bz_2-zkk.js","./vendor-i18n-Dm-c3D_C.js","./vendor-antd-IzIw5qDM.js","./vendor-mermaid-GjPwPGd2.js","./MetricsService-CPTVCb46.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{_ as b,a4 as l,an as h,bN as $,bd as G,ae as X,ac as ee}from"./vendor-mermaid-GjPwPGd2.js";import{j as r}from"./vendor-markdown-Bz_2-zkk.js";import{g as te,i as d,d as oe,R as j,u as z,a as v}from"./vendor-i18n-Dm-c3D_C.js";import{bK as se,l as ie,n as ae,bE as re,bL as ne,bw as le,bM as de}from"./vendor-antd-IzIw5qDM.js";function ce(e,t){for(var s=0;s<t.length;s++){const i=t[s];if(typeof i!="string"&&!Array.isArray(i)){for(const o in i)if(o!=="default"&&!(o in e)){const a=Object.getOwnPropertyDescriptor(i,o);a&&Object.defineProperty(e,o,a.get?a:{enumerable:!0,get:()=>i[o]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))i(o);new MutationObserver(o=>{for(const a of o)if(a.type==="childList")for(const n of a.addedNodes)n.tagName==="LINK"&&n.rel==="modulepreload"&&i(n)}).observe(document,{childList:!0,subtree:!0});function s(o){const a={};return o.integrity&&(a.integrity=o.integrity),o.referrerPolicy&&(a.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?a.credentials="include":o.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function i(o){if(o.ep)return;o.ep=!0;const a=s(o);fetch(o.href,a)}})();var y={},U;function pe(){if(U)return y;U=1;var e=se();return y.createRoot=e.createRoot,y.hydrateRoot=e.hydrateRoot,y}var K=pe();const V=te(K),Ke=ce({__proto__:null,default:V},[K]),ue={"en-US":()=>b(async()=>{const{enUsTranslation:e}=await Promise.resolve().then(()=>Fe);return{enUsTranslation:e}},void 0,import.meta.url).then(({enUsTranslation:e})=>e),"zh-CN":()=>b(async()=>{const{zhCnTranslation:e}=await Promise.resolve().then(()=>Ee);return{zhCnTranslation:e}},void 0,import.meta.url).then(({zhCnTranslation:e})=>e)},H=new Map,g=e=>{let t=H.get(e);return t||(t=ue[e](),H.set(e,t)),t},me={app:{errorBoundary:{title:"Un problème est survenu",description:"Une erreur inattendue s'est produite dans cette section. Vous pouvez réessayer ou recharger la page si le problème persiste.",tryAgain:"Réessayer",showDetails:"Afficher les détails",hideDetails:"Masquer les détails"},passwordGate:{title:"Entrez le mot de passe d'accès",description:"Une vérification du mot de passe est requise avant d'accéder à l'application.",passwordLabel:"Mot de passe d'accès",passwordPlaceholder:"Entrez le mot de passe d'accès",submit:"Vérifier et continuer",validation:{required:"Veuillez entrer le mot de passe d'accès",verifyFailed:"Échec de la vérification du mot de passe"}},notifications:{toolApproval:{title:"Approbation requise : {{tool}}",body:"L'outil {{tool}} nécessite votre approbation avant exécution",unknownTool:"Outil inconnu"},contextPressure:{title:"Fenêtre de contexte presque épuisée"},backgroundTask:{completedTitle:"Tâche en arrière-plan terminée",completedBody:"« {{title}} » est terminé",completedFallback:"Une tâche en arrière-plan est terminée"},clarification:{title:"Bodhi AI attend votre réponse",fallbackBody:"L'agent attend une réponse à une question"},conversationSummarized:"Conversation résumée : {{messages}} messages compressés, {{tokens}} jetons économisés",allTasksCompleted:"Toutes les tâches sont terminées ! Tours totaux : {{rounds}}, Appels d'outils : {{toolCalls}}",evaluatingTasks:"Évaluation de {{count}} tâche(s)...",evaluationCompleteUpdated:"Évaluation terminée : {{count}} tâche(s) mise(s) à jour.",evaluationCompleteNoUpdates:"Évaluation terminée : aucune mise à jour nécessaire"}},commandPalette:{searchPlaceholder:"Rechercher sessions, paramètres et actions",navigationHint:"Utilisez ↑↓ pour naviguer, Entrée pour ouvrir, Échap pour fermer.",empty:"Aucune commande correspondante",groups:{quickActions:"Actions rapides",settings:"Paramètres système"},badges:{quickAction:"Action",pinned:"Épinglé",running:"En cours",child:"Enfant",childSession:"Session enfant",rootSession:"Session"},actions:{newSession:"Créer une nouvelle session",openProviderSettings:"Ouvrir les paramètres fournisseur",openMcpSettings:"Ouvrir les paramètres MCP",openWorkflowSettings:"Ouvrir les paramètres de flux de travail",openSessionsSettings:"Ouvrir le moniteur de sessions",openSchedulesSettings:"Ouvrir les planifications"},errors:{actionFailed:"Échec de la commande"}},setup:{welcome:{heading:"Bienvenue dans Bodhi",description:"Bodhi est votre assistant de développement alimenté par l'IA. Configurez un fournisseur IA pour commencer, ou lancez-vous directement.",providerHint:"Pour commencer à discuter, vous devez configurer un fournisseur IA (ex. OpenAI, Anthropic) avec une clé API.",proxyHint:"Derrière un proxy d'entreprise ? Vous pouvez configurer les paramètres proxy plus tard dans Paramètres système > Réseau."},button:{getStarted:"Commencer",configureProvider:"Configurer le fournisseur"},complete:{title:"Tout est prêt !",restartMessage:"Rechargement de l'application..."},error:{completeFailed:"Échec de la configuration. Veuillez réessayer."}},onboarding:{welcome:{title:"Bienvenue dans Bodhi !",description:"Bodhi est votre assistant de développement alimenté par l'IA. Faisons un rapide tour d'horizon."},newSession:{title:"Nouvelle session",description:"Cliquez ici pour démarrer une nouvelle session de chat avec l'assistant IA."},taskTemplates:{title:"Modèles de tâches",description:"Choisissez parmi des modèles prédéfinis : revue de code, investigation de bug, refactoring, etc."},modelPicker:{title:"Sélection du modèle",description:"Changez de modèle IA et de fournisseur à tout moment depuis ici."},sidebar:{title:"Barre latérale des sessions",description:"Recherchez, filtrez, épinglez et naviguez entre vos conversations."},settings:{title:"Paramètres",description:"Configurez les fournisseurs IA, proxy, mappages de modèles, serveurs MCP et plus encore."}},common:{saveAnyway:"Enregistrer quand même",parentDirectory:"Répertoire parent",currentPath:"Chemin actuel :",cancel:"Annuler",ok:"OK",apply:"Appliquer",save:"Enregistrer",delete:"Supprimer",yes:"Oui",no:"Non",home:"Accueil",download:"Télécharger",directory:"Répertoire",file:"Fichier"},chat:{workspace:{modalTitle:"Définir le chemin de l'espace de travail",invalidTitle:"Chemin d'accès à l'espace de travail non valide",issuesDetected:"Problèmes potentiels détectés avec le chemin de l'espace de travail :",confirmSaveInvalid:"Voulez-vous toujours enregistrer ce chemin ?",errorEnterPath:"Veuillez saisir un chemin d'accès à l'espace de travail",errorSaveFailed:"Échec de l'enregistrement du chemin de l'espace de travail",placeholder:"par ex. /Utilisateurs/alice/Espace de travail/MonProjet",browseFolder:"Parcourir le dossier",descriptionTitle:"Description du chemin de l'espace de travail",descriptionP1:"Définissez un chemin d'accès à l'espace de travail afin que les références de fichiers et les outils de l'espace de travail puissent résoudre les fichiers de manière fiable.",descriptionP2:"Choisissez un dossier de projet existant. Vous pouvez toujours continuer avec un chemin non valide, mais les fonctionnalités associées risquent de ne pas fonctionner correctement.",checkTitle:"Vérification du chemin de l'espace de travail",checkDescription:"La validation du chemin de l'espace de travail a échoué.",label:"Espace de travail",folderSelected:"Dossier sélectionné avec succès"},folderBrowser:{title:"Sélectionnez le dossier de l'espace de travail",selectCurrent:"Sélectionnez le dossier actuel",emptyFolder:"Ce dossier est vide",tip:'Astuce : cliquez sur un dossier pour y accéder, cliquez sur "Sélectionner le dossier actuel" pour confirmer',readFolderError:"Impossible de lire le dossier"},input:{placeholder:"Envoyer un message...",placeholderWithReference:"Envoyer un message (inclut la référence)",placeholderWithWorkflows:"Envoyer un message... (saisissez '/' pour les workflows)",toolCallsOnly:"Appels d'outils uniquement (outils autorisés : {{tools}})",autoPrefixMode:"Mode de préfixe automatique : {{prefix}} (saisissez « / » pour sélectionner les outils)",toolSpecificMode:"Mode spécifique à l'outil (outils autorisés : {{tools}})",processingFiles:"Traitement des fichiers…",imageCountSingular:"Image {{count}}",imageCountPlural:"Images {{count}}",reasoning:{max:"Max"}},actions:{regenerate:"Régénérer la réponse",retryFailed:"Réessayer la demande ayant échoué",retryOptions:"Options de nouvelle tentative",cancelRequest:"Annuler la demande",sendMessage:"Envoyer un message",copyMessage:"Copier le message",referenceMessage:"Message de référence",generateTitle:"Générer un titre IA",unpin:"Détacher",pin:"Épingler"},fileReference:{title:"@ Référence du fichier",setWorkspace:"Définir l'espace de travail",noMatches:"Aucun fichier correspondant trouvé",emptyDirectory:"Le répertoire est vide"},commandSelector:{types:{mcp:"MCP"}},streaming:{assistant:"Assistant"}},settings:{configTab:{toolsLoadFailed:"Échec du chargement des outils disponibles",toolsReloadSuccess:"Liste d'outils rechargée",toolsSaveSuccess:"Paramètres de l'outil enregistrés avec succès",toolsSaveFailed:"Échec de l'enregistrement des paramètres de l'outil",languageHindi:"Hindi",backendUrlEmpty:"L'URL du back-end ne peut pas être vide",backendUrlInvalidProtocol:"L'URL du back-end doit commencer par http:// ou https://",backendUrlInvalidUrl:"L'URL du back-end n'est pas une URL valide",backendUrlMustEndWithV1:`L'URL du back-end doit se terminer par "/v1"`,accessPassword:{validation:{currentPasswordRequired:"Veuillez entrer le mot de passe actuel",newPasswordRequired:"Veuillez entrer un nouveau mot de passe",confirmPasswordRequired:"Veuillez entrer le nouveau mot de passe à nouveau",minLength:"Le mot de passe doit contenir au moins 4 caractères",passwordMismatch:"Les mots de passe ne correspondent pas"}}},modelLimits:{placeholders:{vendor:"OpenAI / Google / Moonshot"},columns:{notes:"Notes",actions:"Actions"}},systemPromptManager:{title:"Gestion des prompts système",addButton:"Ajouter un prompt",defaultPromptLocked:"Les prompts système par défaut sont verrouillés et ne peuvent pas être modifiés.",updateSuccess:"Prompt mis à jour avec succès",addSuccess:"Prompt ajouté avec succès",saveError:"Échec de l'enregistrement du prompt. Veuillez réessayer.",deleteSuccess:"Prompt supprimé avec succès",deleteError:"Échec de la suppression du prompt. Veuillez réessayer.",deleteConfirm:"Êtes-vous sûr de supprimer ce prompt ?",defaultTag:"Par défaut (verrouillé)",editTitle:"Modifier le prompt système",addTitle:"Ajouter un nouveau prompt système",nameLabel:"Nom du prompt",nameRequired:"Veuillez saisir le nom du prompt !",descriptionLabel:"Description du prompt",descriptionRequired:"Veuillez saisir la description du prompt !",contentLabel:"Contenu du prompt",contentRequired:"Veuillez saisir le contenu du prompt !"},envVars:{title:"Variables d'environnement",description:"Les variables sont injectées dans les processus de l'outil Bash. Les variables secrètes sont chiffrées au repos.",fetchError:"Échec du chargement des variables d'environnement",created:"Variable créée",updated:"Variable mise à jour",saveError:"Échec de l'enregistrement de la variable",deleted:"Variable supprimée",deleteError:"Échec de la suppression de la variable",addButton:"Ajouter une variable",noVars:"Aucune variable d'environnement configurée",addTitle:"Ajouter une variable d'environnement",editTitle:"Modifier une variable",nameRequired:"Le nom de la variable est obligatoire",nameInvalid:"Doit commencer par une lettre ou un trait de soulignement, suivi de lettres, de chiffres ou de traits de soulignement",valueRequired:"La valeur est requise pour les nouvelles variables",valueEditHint:"Laisser vide pour conserver la valeur existante",valuePlaceholder:"Entrez la valeur",valuePlaceholderEdit:"Entrez une nouvelle valeur ou laissez vide",secretHint:"Les variables secrètes sont chiffrées sur le disque et masquées dans l'interface utilisateur",descriptionPlaceholder:"Description facultative",deleteConfirm:"Supprimer cette variable ?",notSet:"(non réglé)",empty:"(vide)",save:"Enregistrer",cancel:"Annuler",name:"Nom",value:"Valeur",secret:"Secrète",descriptionField:"Description",type:"Type",plain:"Texte brut",descriptionCol:"Description",actions:"Actions",yes:"Oui",no:"Non"},hooksTab:{mode:{ocr:"OCR (Windows)",vision:"Vision (LLM)",placeholder:"Placeholder"},modeLabel:"Mode"},providerTab:{fastModel:"Modèle rapide (facultatif)",fastModelHelp:"Modèle moins cher/plus rapide pour les tâches légères telles que la génération de titres, la correction Mermaid et la synthèse. Utilise le modèle par défaut lorsqu'il n'est pas défini.",visionModel:"Modèle de vision (facultatif)",visionModelHelp:"Modèle capable de vision pour la compréhension des images. Lorsque hooks.image_fallback.mode est défini sur « vision », ce modèle décrit les images sous forme de texte afin que les modèles contenant uniquement du texte puissent les comprendre. Utilise le modèle par défaut lorsqu'il n'est pas défini.",sameAsDefault:"Identique au modèle par défaut",providerNames:{openai:"OpenAI",anthropic:"Anthropic",gemini:"Gemini",copilot:"Copilot"}},mcpTab:{statusHelp:{connecting:"Le serveur démarre ou se reconnecte",ready:"Le serveur est connecté et sert les outils normalement",degraded:"Le serveur est partiellement disponible ; certains outils peuvent échouer",stopped:"Le serveur ne fonctionne pas",error:"Le serveur n'a pas pu démarrer ou a rencontré des erreurs d'exécution"}},metricsDashboard:{sessionsCount:"{{count}} sessions",tokensAmount:"{{value}} jetons",sessionsTabLabel:"Sessions ({{count}})",roundColumns:{tokens:"Jetons"},multiplierSuffix:"x",sessionDetail:{messages:"Messages"}},page:{tabs:{prompts:"Prompts",mermaid:"Mermaid",mcp:"MCP",sessions:"Sessions",hooks:"Hooks"}},appTab:{languageHindi:"Hindi"},modelMappingCard:{modelTypeOpus:"Opus",modelTypeSonnet:"Sonnet",modelTypeHaiku:"Haïku"},mermaidTab:{switchAuto:"Auto",flowchartCurveOptions:{cardinal:"Cardinal"}},schedulesTab:{columns:{actions:"Actions"},actions:{sessions:"Sessions"},triggerTypes:{interval:"Intervalle",daily:"Quotidien",weekly:"Hebdomadaire",monthly:"Mensuel",cron:"Cron"},weekdays:{mon:"Lun",tue:"Mar",wed:"Mer",thu:"Jeu",fri:"Ven",sat:"Sam",sun:"Dim"},statusLabels:{running:"En cours",queued:"En file d'attente",failing:"En échec",disabled:"Désactivé",healthy:"Sain",idle:"Inactif"},statusDetails:{active:"{{count}} actif(s)",pending:"{{count}} en attente",consecutiveFailures:"{{count}} échecs consécutifs",lastRunSucceeded:"Dernière exécution réussie"},activityLabels:{queued:"En file : {{count}}",running:"En cours : {{count}}",ok:"OK : {{count}}",fail:"Échec : {{count}}"}},sessionsTab:{id:"Identifiant"},mcpServerTable:{columns:{actions:"Actions"},transportOptions:{sse:"SSE",stdio:"Stdio"}},mcpServerForm:{modeJson:"JSON",transportOptions:{stdio:"Stdio",sse:"SSE"},arguments:"Arguments"},metricsTable:{session:{columns:{session:"Session",tokens:"Jetons",messages:"Messages",action:"Action"}},forward:{columns:{id:"Identifiant",type:"Type",tokens:"Jetons"}}},charts:{total:"Total",prompt:"Prompt",chat:"Chat"}},components:{markdown:{codeCopiedSuccess:"Code copié dans le presse-papier",copyFailed:"Échec de la copie"},jsonSchema:{noProperties:"Aucune propriété dans le schéma",field:"Champ",type:"Type",required:"Requis",yes:"Oui",no:"Non",default:"Défaut",description:"Description"},imageGrid:{ocr:"OCR"},tokenUsage:{messages:"Messages",tokens:"jetons"},approval:{workflow:"Flux de travail"}}},ge={app:{errorBoundary:{title:"कुछ गलत हो गया",description:"इस अनुभाग में एक अप्रत्याशित त्रुटि हुई। आप पुनः प्रयास कर सकते हैं या समस्या बनी रहने पर पृष्ठ पुनः लोड कर सकते हैं।",tryAgain:"पुनः प्रयास करें",showDetails:"विवरण दिखाएँ",hideDetails:"विवरण छिपाएँ"},passwordGate:{title:"एक्सेस पासवर्ड दर्ज करें",description:"एप्लिकेशन में प्रवेश करने से पहले पासवर्ड सत्यापन आवश्यक है।",passwordLabel:"एक्सेस पासवर्ड",passwordPlaceholder:"एक्सेस पासवर्ड दर्ज करें",submit:"सत्यापित करें और जारी रखें",validation:{required:"कृपया एक्सेस पासवर्ड दर्ज करें",verifyFailed:"पासवर्ड सत्यापन विफल"}},notifications:{toolApproval:{title:"अनुमोदन आवश्यक: {{tool}}",body:"टूल {{tool}} को निष्पादित करने के लिए आपकी मंजूरी चाहिए",unknownTool:"अज्ञात टूल"},contextPressure:{title:"कॉन्टेक्स्ट विंडो लगभग भर गई है"},backgroundTask:{completedTitle:"बैकग्राउंड टास्क पूरा हुआ",completedBody:"「{{title}}」 पूरा हुआ",completedFallback:"बैकग्राउंड टास्क पूरा हुआ"},clarification:{title:"Bodhi AI आपका जवाब दे रहा है",fallbackBody:"एजेंट एक सवाल का जवाब दे रहा है"},conversationSummarized:"वार्तालाप सारांशित: {{messages}} संदेश संपीड़ित, {{tokens}} टोकन बचाए गए",allTasksCompleted:"सभी कार्य पूरे हुए! कुल राउंड: {{rounds}}, टूल कॉल: {{toolCalls}}",evaluatingTasks:"{{count}} कार्यों का मूल्यांकन हो रहा है...",evaluationCompleteUpdated:"मूल्यांकन पूर्ण: {{count}} कार्य अद्यतन किए गए।",evaluationCompleteNoUpdates:"मूल्यांकन पूर्ण: कोई अद्यतन आवश्यक नहीं"}},common:{saveAnyway:"फिर भी सहेजें",parentDirectory:"मूल निर्देशिका",currentPath:"वर्तमान पथ:",cancel:"रद्द करें",ok:"ठीक है",apply:"लागू करें",save:"सहेजें",delete:"हटाएँ",yes:"हाँ",no:"नहीं",home:"होम",download:"डाउनलोड करें",directory:"निर्देशिका",file:"फ़ाइल"},chat:{workspace:{placeholder:"जैसे /उपयोगकर्ता/ऐलिस/वर्कस्पेस/मायप्रोजेक्ट",descriptionP1:"एक वर्कस्पेस पथ सेट करें ताकि फ़ाइल संदर्भ और वर्कस्पेस उपकरण फ़ाइलों को विश्वसनीय रूप से हल कर सकें।",descriptionP2:"कोई मौजूदा प्रोजेक्ट फ़ोल्डर चुनें. आप अभी भी अमान्य पथ के साथ जारी रख सकते हैं, लेकिन हो सकता है कि संबंधित सुविधाएं ठीक से काम न करें।"},folderBrowser:{title:"वर्कस्पेस फ़ोल्डर चुनें",selectCurrent:"वर्तमान फ़ोल्डर का चयन करें",emptyFolder:"यह फ़ोल्डर खाली है",tip:'युक्ति: दर्ज करने के लिए किसी फ़ोल्डर पर क्लिक करें, पुष्टि करने के लिए "वर्तमान फ़ोल्डर का चयन करें" पर क्लिक करें'},actions:{regenerate:"प्रतिक्रिया पुनः उत्पन्न करें",retryFailed:"विफल अनुरोध पुनः प्रयास करें",retryOptions:"पुनः प्रयास विकल्प",cancelRequest:"अनुरोध को रद्द करें",sendMessage:"संदेश भेजें",copyMessage:"संदेश कॉपी करें",referenceMessage:"संदर्भ संदेश",generateTitle:"AI शीर्षक उत्पन्न करें",unpin:"अनपिन",pin:"नत्थी करें"},fileReference:{title:"@फ़ाइल संदर्भ",setWorkspace:"वर्कस्पेस सेट करें",noMatches:"कोई मेल खाती फ़ाइलें नहीं मिलीं",emptyDirectory:"निर्देशिका खाली है"},commandSelector:{types:{mcp:"MCP"}}},settings:{notifications:{deleteAllSuccess:"सभी सत्र हटा दिए गए (पिन किए गए को छोड़कर)",deleteEmptySuccess:"खाली सत्र हटा दिए गए (पिन किए गए को छोड़कर)",localStorageCleared:"स्थानीय भंडारण साफ़ कर दिया गया है",resetSuccessReloading:"एप्लिकेशन रीसेट सफल. पुनः लोड हो रहा है...",resetFailed:"एप्लिकेशन रीसेट करने में विफल",autoTitleEnabled:"स्वतः शीर्षक निर्माण सक्षम",autoTitleDisabled:"स्वतः शीर्षक निर्माण अक्षम",autoTitleUpdateFailed:"स्वतः शीर्षक प्राथमिकता अद्यतन करने में विफल",promptEnhancementSaved:"सिस्टम प्रॉम्प्ट एन्हांसमेंट सहेजा गया"},appTab:{deleteAllTitle:"सभी सत्र हटाएँ",deleteAllDescription:"क्या आपको यकीन है? इससे पिन किए गए को छोड़कर सभी सत्र हटा दिए जाएंगे.",deleteAllButton:"सभी सत्र हटाएँ",deleteEmptyTitle:"खाली सत्र हटाएँ",deleteEmptyDescription:"क्या आपको यकीन है? इससे बिना किसी संदेश वाले (पिन किए गए को छोड़कर) सभी सत्र हटा दिए जाएंगे।",deleteEmptyButton:"खाली सत्र हटाएँ",clearLocalStorageTitle:"स्थानीय संग्रहण साफ़ करें",clearLocalStorageDescription:"क्या आपको यकीन है? यह सभी स्थानीय संग्रहण डेटा को हटा देगा और एप्लिकेशन को रीसेट कर देगा।",clearLocalStorageButton:"स्थानीय संग्रहण साफ़ करें",confirmDeleteAll:"हाँ, सभी हटा दें",confirmDeleteEmpty:"हां, खाली हटाएं",confirmClear:"हाँ, इसे साफ़ करें",dangerDescription:"इन कार्रवाइयों को पूर्ववत नहीं किया जा सकता. सारा डेटा स्थायी रूप से हटा दिया जाएगा.",resetApplicationTitle:"एप्लिकेशन रीसेट करें",resetApplicationIntro:"क्या आपको यकीन है? यह करेगा:",resetStepDeleteAllSessions:"सभी सत्र हटाएं (पिन किए गए सहित)",resetStepClearStorage:"सभी स्थानीय संग्रहण डेटा साफ़ करें",resetStepResetConfig:"config.json को डिफ़ॉल्ट पर रीसेट करें",resetStepSetupFlow:"अगले लॉन्च पर प्रारंभिक सेटअप प्रवाह ट्रिगर करें",resetStepReload:"एप्लिकेशन पुनः लोड करें",resetConfirm:"हाँ, सब कुछ रीसेट करें",resetButton:"एप्लिकेशन रीसेट करें (सभी डेटा)"},configTab:{loadConfigFailed:"कॉन्फ़िगरेशन लोड करने में विफल",invalidConfig:"अमान्य कॉन्फ़िगरेशन",saveConfigSuccess:"कॉन्फ़िगरेशन सफलतापूर्वक सहेजा गया",saveConfigFailed:"कॉन्फ़िगरेशन सहेजने में विफल",toolsLoadFailed:"उपलब्ध उपकरण लोड करने में विफल",toolsReloadSuccess:"टूल सूची पुनः लोड की गई",toolsSaveSuccess:"टूल सेटिंग सफलतापूर्वक सहेजी गईं",toolsSaveFailed:"टूल सेटिंग सहेजने में विफल",backendSaved:"बैकएंड URL सहेजा गया",backendResetDefault:"बैकएंड URL डिफ़ॉल्ट पर रीसेट हो गया",backendUrlEmpty:"बैकएंड URL खाली नहीं हो सकता",backendUrlInvalidProtocol:"बैकएंड URL http:// या https:// से शुरू होना चाहिए",backendUrlInvalidUrl:"बैकएंड URL एक मान्य URL नहीं है",backendUrlMustEndWithV1:'बैकएंड URL को "/v1" पर समाप्त होना चाहिए',accessPassword:{validation:{currentPasswordRequired:"कृपया वर्तमान पासवर्ड दर्ज करें",newPasswordRequired:"कृपया नया पासवर्ड दर्ज करें",confirmPasswordRequired:"कृपया नया पासवर्ड दोबारा दर्ज करें",minLength:"पासवर्ड कम से कम 4 अक्षरों का होना चाहिए",passwordMismatch:"पासवर्ड मेल नहीं खाते"}}},modelMappingCard:{loadProviderFailed:"प्रदाता कॉन्फ़िगरेशन लोड करने में विफल",loadMappingsFailed:"मौजूदा मैपिंग लोड करने में विफल",loadModelsFailed:"मॉडल लोड करने में विफल",loadModelsHint:"मॉडल लोड करने में विफल. कृपया अपने प्रदाता कॉन्फ़िगरेशन की जाँच करें।",mappingSaved:"मॉडल मैपिंग सहेजी गई",mappingSaveFailed:"मॉडल मैपिंग सहेजने में विफल",enterModelName:"कृपया एक मॉडल नाम दर्ज करें",customMappingSaved:"कस्टम मॉडल मैपिंग सहेजी गई",customMappingSaveFailed:"कस्टम मॉडल मैपिंग सहेजने में विफल",mappedModelNotFound:'मैप किया गया मॉडल "{{model}}" वर्तमान प्रदाता के उपलब्ध मॉडल में नहीं मिला',cached:"(कैश्ड)",modelTypeOpus:"Opus",modelTypeSonnet:"Sonnet",modelTypeHaiku:"Haiku"},modelTab:{selectModelTitle:"मॉडल का चयन करें",loadingModels:"मॉडल लोड हो रहे हैं...",selectModelPlaceholder:"एक मॉडल चुनें",backendApiBaseUrlTitle:"बैकएंड API बेस URL",resetToDefault:"डिफ़ॉल्ट पर रीसेट करें",backendApiHint:"/v1 (उदा. {{example}}) सहित पूर्ण आधार URL होना चाहिए।",save:"सहेजें"},mermaidTab:{title:"Mermaid आरेख सेटिंग्स",description:"अनुकूलित करें कि आपकी चैट में Mermaid आरेख कैसे प्रस्तुत किए जाते हैं",themeLabel:"Mermaid थीम",themeTooltip:"एक अंतर्निर्मित Mermaid थीम चुनें। ऐप थीम के आधार पर प्रकाश और अंधेरे के बीच डिफ़ॉल्ट और न्यूट्रल ऑटो-स्विच।",themeOptions:{default:"डिफ़ॉल्ट (स्वतः लाइट/डार्क)",neutral:"तटस्थ (स्वतः लाइट/डार्क)",forest:"वन (हरा थीम)",base:"आधार (न्यूनतम)",dark:"अँधेरा"},themeDescriptionsTitle:"थीम डिस्क्रिप्शन:",themeDescriptions:{default:"डिफ़ॉल्ट: क्लासिक Mermaid लुक, प्रकाश/अंधेरे में स्वतः अनुकूलित",neutral:"तटस्थ: ग्रे टोन, प्रकाश/अंधेरे के लिए स्वतः अनुकूलित",dark:"डार्क: हमेशा डार्क थीम",forest:"वन: हरा रंग योजना, तकनीकी आरेखों के लिए उपयुक्त",base:"आधार: अनुकूलित थीम के लिए न्यूनतम शैली"},globalCardTitle:"वैश्विक सेटिंग्स",fontSizeLabel:"फ़ॉन्ट आकार",fontSizeTooltip:"सभी आरेख पाठ के लिए आधार फ़ॉन्ट आकार (पिक्सेल में)",defaultZoomLabel:"डिफ़ॉल्ट ज़ूम",defaultZoomTooltip:"आरेखों के लिए प्रारंभिक ज़ूम स्तर (1.0 = 100%)",responsiveWidthLabel:"प्रतिक्रियाशील चौड़ाई",responsiveWidthTooltip:"आरेखों को कंटेनर की चौड़ाई के अनुकूल बनाने में सक्षम करें। निश्चित-चौड़ाई वाले आरेखों के लिए अक्षम करें.",flowchartCardTitle:"Flowchart सेटिंग्स",flowchartNodeSpacingLabel:"नोड रिक्ति",flowchartNodeSpacingTooltip:"नोड्स के बीच क्षैतिज दूरी",flowchartRankSpacingLabel:"रैंक रिक्ति",flowchartRankSpacingTooltip:"परतों के बीच लंबवत दूरी",flowchartCurveTypeLabel:"वक्र प्रकार",flowchartCurveTypeTooltip:"कनेक्शन के लिए वक्र का प्रकार",flowchartCurveOptions:{basis:"Basis (स्मूथ)",linear:"रेखीय",cardinal:"Cardinal"},sequenceCardTitle:"Sequence Diagram सेटिंग्स",sequenceActorMarginLabel:"एक्टर मार्जिन",sequenceActorMarginTooltip:"एक्टरों के बीच अंतर",sequenceMessageMarginLabel:"संदेश मार्जिन",sequenceMessageMarginTooltip:"संदेश के बीच अंतर",sequenceActorWidthLabel:"एक्टर चौड़ाई",sequenceActorWidthTooltip:"प्रत्येक एक्टर बॉक्स की चौड़ाई",sequenceActorHeightLabel:"एक्टर की ऊंचाई",sequenceActorHeightTooltip:"प्रत्येक एक्टर बॉक्स की ऊंचाई",ganttCardTitle:"Gantt चार्ट सेटिंग्स",ganttBarHeightLabel:"बार की ऊंचाई",ganttBarHeightTooltip:"प्रत्येक कार्य पट्टी की ऊंचाई",ganttTopPaddingLabel:"शीर्ष गद्दी",ganttTopPaddingTooltip:"चार्ट के शीर्ष पर स्थान",resetToDefaults:"डिफ़ॉल्ट पर पुनः सेट करें",previewDescription:"परिवर्तन तुरंत लागू होते हैं. अपनी सेटिंग्स को क्रियान्वित होते देखने के लिए एक आरेख बनाने या देखने का प्रयास करें।",themeCardTitle:"विषय",switchAuto:"ऑटो",switchFixed:"तय",previewTitle:"पूर्व दर्शन"},modelLimits:{title:"टोकन बजट मॉडल सीमाएँ",descriptionPrefix:"संदर्भ बजटिंग के लिए प्रति-मॉडल टोकन सीमाएं कॉन्फ़िगर करें। ये सेटिंग्स Bamboo में विश्व स्तर पर कायम हैं",descriptionSuffix:"और बैकएंड रिज़ॉल्वर द्वारा उपयोग किया जाता है।",defaultsTitle:"मॉडल डिफ़ॉल्ट",defaultsDescription:"GPT-5 / GPT-4 / Gemini / Kimi / GLM डिफ़ॉल्ट के साथ प्रीलोडेड। आप आवश्यकतानुसार संपादन जारी रख सकते हैं।",migratedFromLocalStorage:"स्थानीय भंडारण से वैश्विक कॉन्फिगरेशन में स्थानांतरित मॉडल सीमाएँ।",loadFailed:"मॉडल सीमा सेटिंग लोड करने में विफल",saveSuccess:"मॉडल सीमाएँ वैश्विक कॉन्फ़िगरेशन में सहेजी गईं",saveFailed:"मॉडल सीमा सेटिंग सहेजने में विफल",resetSuccess:"मॉडल सीमाएँ उत्पाद डिफ़ॉल्ट पर रीसेट हो गईं",resetFailed:"मॉडल सीमा सेटिंग रीसेट करने में विफल",defaults:{gpt54:"तर्क की गहराई के साथ शीर्ष स्तरीय क्षमता।",gpt53Codex:"कोड रीफैक्टरिंग वर्कफ़्लोज़ के लिए अनुकूलित।",gpt52Pro:"जटिल कार्यों के लिए मजबूत तार्किक स्थिरता।",gpt5Mini:"तेज़ और लागत प्रभावी सामान्य प्रयोजन विकल्प।",gpt41:"1M विंडो वाला क्लासिक बड़े-संदर्भ वाला मॉडल।",gpt4o:"कम विलंबता, रोजमर्रा की चैट के लिए उपयुक्त।",gemini25Pro:"मजबूत मल्टीमॉडल विश्लेषण क्षमताएं।",kimiK25:"दीर्घ-रूप वाली चीनी सामग्री के लिए पसंदीदा।",kimiCoding:"कोडिंग-केंद्रित परिदृश्यों के लिए ट्यून किया गया।",glm5:"एक-शॉट बड़े-दस्तावेज़ निर्माण के लिए अच्छा है।"},columns:{contextWindow:"Context Window",maxOutput:"अधिकतम आउटपुट",model:"मॉडल",notes:"टिप्पणियाँ",actions:"कार्रवाई"},placeholders:{vendor:"OpenAI/Google/Moonshot",model:"जैसे gpt-5.4-think",optional:"वैकल्पिक"},actions:{addRow:"लाइन जोड़ें",resetToDefaults:"डिफ़ॉल्ट पर पुनः सेट करें",remove:"निकालें",save:"सहेजें",reload:"पुनः लोड करें"},validation:{atLeastOneRow:"कृपया कम से कम एक मॉडल सीमा पंक्ति रखें।",modelPatternEmpty:"मॉडल पैटर्न खाली नहीं हो सकता.",duplicateModelPattern:"डुप्लिकेट मॉडल पैटर्न: {{pattern}}",contextWindowMin:"{{pattern}} के लिए संदर्भ विंडो कम से कम 1000 होनी चाहिए।",maxOutputMin:"{{pattern}} के लिए अधिकतम आउटपुट कम से कम 1 होना चाहिए।",maxOutputExceedsContext:"{{pattern}} के लिए अधिकतम आउटपुट संदर्भ विंडो से कम या उसके बराबर होना चाहिए।",safetyMarginNegative:"{{pattern}} के लिए सुरक्षा मार्जिन नकारात्मक नहीं हो सकता।",safetyMarginTooLarge:"{{pattern}} के लिए सुरक्षा मार्जिन संदर्भ विंडो से छोटा होना चाहिए।"}},systemPromptManager:{title:"सिस्टम प्रॉम्प्ट प्रबंधन",addButton:"प्रॉम्प्ट जोड़ें",defaultPromptLocked:"डिफ़ॉल्ट सिस्टम प्रॉम्प्ट लॉक हैं और संपादित नहीं किए जा सकते।",updateSuccess:"प्रॉम्प्ट सफलतापूर्वक अद्यतन किया गया",addSuccess:"प्रॉम्प्ट सफलतापूर्वक जोड़ा गया",saveError:"प्रॉम्प्ट सहेजने में विफल. कृपया पुन: प्रयास करें।",deleteSuccess:"प्रॉम्प्ट सफलतापूर्वक हटा दिया गया",deleteError:"प्रॉम्प्ट हटाने में विफल. कृपया पुन: प्रयास करें।",deleteConfirm:"क्या आप निश्चित रूप से इस प्रॉम्प्ट को हटाना चाहते हैं?",defaultTag:"डिफ़ॉल्ट (लॉक)",editTitle:"सिस्टम प्रॉम्प्ट संपादित करें",addTitle:"नया सिस्टम प्रॉम्प्ट जोड़ें",nameLabel:"प्रॉम्प्ट नाम",nameRequired:"कृपया प्रॉम्प्ट का नाम इनपुट करें!",descriptionLabel:"प्रॉम्प्ट डिस्क्रिप्शन",descriptionRequired:"कृपया प्रॉम्प्ट का डिस्क्रिप्शन दर्ज करें!",contentLabel:"प्रॉम्प्ट सामग्री",contentRequired:"कृपया प्रॉम्प्ट की सामग्री इनपुट करें!"},envVars:{title:"एनवायरमेंट वेरिएबल्स",description:"वैरिएबल को Bash टूल प्रक्रियाओं में इंजेक्ट किया जाता है। गुप्त चर आराम से एन्क्रिप्ट किए गए हैं।",fetchError:"एनवायरमेंट वेरिएबल्स लोड करने में विफल",created:"वेरिएबल बनाया गया",updated:"वेरिएबल अद्यतन किया गया",saveError:"वेरिएबल सहेजने में विफल",deleted:"वेरिएबल हटा दिया गया",deleteError:"वेरिएबल हटाने में विफल",addButton:"वेरिएबल जोड़ें",noVars:"कोई एनवायरमेंट वेरिएबल कॉन्फ़िगर नहीं किया गया",addTitle:"एनवायरमेंट वेरिएबल जोड़ें",editTitle:"वेरिएबल संपादित करें",nameRequired:"वेरिएबल नाम आवश्यक है",nameInvalid:"एक अक्षर या अंडरस्कोर से शुरू होना चाहिए, उसके बाद अक्षर, अंक या अंडरस्कोर होना चाहिए",valueRequired:"नए वेरिएबल के लिए मान आवश्यक है",valueEditHint:"मौजूदा मान बनाए रखने के लिए खाली छोड़ें",valuePlaceholder:"मान दर्ज करें",valuePlaceholderEdit:"नया मान दर्ज करें या खाली छोड़ दें",secretHint:"गुप्त चर डिस्क पर एन्क्रिप्ट किए गए हैं और यूआई में छिपाए गए हैं",descriptionPlaceholder:"वैकल्पिक डिस्क्रिप्शन",deleteConfirm:"यह वेरिएबल हटाएं?",notSet:"(सेट नहीं)",empty:"(खाली)",save:"सहेजें",cancel:"रद्द करें",name:"नाम",value:"वैल्यू",secret:"गुप्त",descriptionField:"डिस्क्रिप्शन",type:"प्रकार",plain:"सादा",descriptionCol:"डिस्क्रिप्शन",actions:"कार्रवाई",yes:"हाँ",no:"नहीं"},promptsTab:{title:"सिस्टम प्रॉम्प्ट एन्हांसमेंट",mermaidEnhancement:"Mermaid एन्हांसमेंट",taskListRules:"साझा कार्य नियम",copilotConclusionWithOptionsBeforeFinish:"समाप्त होने से पहले Copilot ने उपयोगकर्ता से पूछा",enhancementPlaceholder:"प्रत्येक सिस्टम प्रॉम्प्ट में जोड़ने के लिए वैश्विक एन्हांसमेंट टेक्स्ट जोड़ें।",saveEnhancement:"एन्हांसमेंट सहेजें",description:"प्रत्येक अनुरोध भेजे जाने से पहले इस पाठ को पहले जोड़ा जाता है, उसके बाद सक्षम सिस्टम एन्हांसमेंट जोड़ा जाता है।",switchOn:"पर",switchOff:"बंद"},hooksTab:{title:"छवि हुक",enableImagePreflight:"छवि प्रीफ़्लाइट हुक सक्षम करें",description:"प्लेसहोल्डर मोड छवियों को पाठ सारांश में फिर से लिखता है (यह उन टूल को तोड़ सकता है जो वास्तविक छवि डेटा की अपेक्षा करते हैं)। OCR वर्तमान में केवल विंडोज़ है।",loadFailed:"हुक सेटिंग्स लोड करने में विफल",updateFailed:"हुक अद्यतन करने में विफल",modeUpdateFailed:"हुक मोड अपडेट करने में विफल",enabled:"छवि हुक सक्षम",disabled:"छवि हुक अक्षम किए गए",modeUpdated:"इमेज हुक मोड इस पर सेट है: {{mode}}",mode:{ocr:"OCR (Windows)",vision:"Vision (LLM)",placeholder:"प्लेसहोल्डर",error:"त्रुटि"},modeLabel:"मोड"},schedulesTab:{triggerTypes:{interval:"अंतराल",daily:"दैनिक",weekly:"साप्ताहिक",monthly:"मासिक",cron:"Cron"},loadFailed:"शेड्यूल लोड करने में विफल",loadSessionsFailed:"शेड्यूल सत्र लोड करने में विफल",createFailed:"शेड्यूल बनाने में विफल",updateFailed:"शेड्यूल अपडेट करने में विफल",deleteFailed:"शेड्यूल हटाने में विफल",runNowFailed:"शेड्यूल चलाने में विफल",taskMessageRequired:"ऑटो एक्ज़ीक्यूट सक्षम होने पर कार्य संदेश आवश्यक है",created:"शेड्यूल बनाया गया",updated:"शेड्यूल अपडेट किया गया",deleted:"हटाया गया शेड्यूल",enqueuedRun:"कतार में जोड़ा गया",optional:"(वैकल्पिक)",defaultName:"मेरी अनुसूची",createTitle:"शेड्यूल बनाएं",scheduleSessionsTitle:"सत्र अनुसूची",noSessionsYet:"अभी तक कोई सत्र नहीं.",editTitle:"शेड्यूल संपादित करें",columns:{autoExecute:"स्वतः निष्पादित",intervalSeconds:"अंतराल",nextRun:"अगला रन",lastRun:"आखरी बार",name:"नाम",model:"मॉडल",enabled:"सक्रिय",actions:"कार्रवाई"},form:{intervalSeconds:"अंतराल सेकंड",taskMessage:"कार्य संदेश",taskMessagePlaceholder:"(वैकल्पिक) चलाने के लिए एक कार्य",modelPlaceholder:"(वैकल्पिक) उदा. gpt-4o-mini",modelRequiredIfAuto:"यदि स्वतः निष्पादित हो तो आवश्यक है",autoExecute:"स्वतः निष्पादित",systemPrompt:"सिस्टम प्रॉम्प्ट",workspacePath:"वर्कस्पेस पथ",enhancePrompt:"प्रॉम्प्ट बढ़ाएँ",name:"नाम",enabled:"सक्रिय",model:"मॉडल"},validation:{nameRequired:"नाम आवश्यक है",intervalRequired:"अंतराल आवश्यक है"},actions:{runNow:"अब चलाएँ",create:"बनाएं",refresh:"ताज़ा करें",edit:"संपादन करें",sessions:"सत्र",delete:"हटाएँ",open:"खोलें",save:"सहेजें"},yes:"हाँ",no:"नहीं",listTitle:"अनुसूचियों",weekdays:{mon:"सोम",tue:"मंगल",wed:"बुध",thu:"गुरु",fri:"शुक्र",sat:"शनि",sun:"रवि"},statusLabels:{running:"चल रहा है",queued:"कतार में",failing:"विफल हो रहा है",disabled:"अक्षम",healthy:"स्वस्थ",idle:"निष्क्रिय"},statusDetails:{active:"{{count}} सक्रिय",pending:"{{count}} लंबित",consecutiveFailures:"{{count}} लगातार विफलताएँ",lastRunSucceeded:"अंतिम रन सफल रहा"},activityLabels:{queued:"कतार: {{count}}",running:"चल रहे: {{count}}",ok:"सफल: {{count}}",fail:"विफल: {{count}}"}},sessionsTab:{currentSessionTitle:"वर्तमान सत्र",clearMessages:"संदेश साफ़ करें",clearMessagesTitle:"सत्र संदेश साफ़ करें",clearMessagesContent:"यह वर्तमान सत्र के लिए संदेश/अनुलग्नक साफ़ करता है लेकिन सत्र प्रविष्टि रखता है।",sessionCleared:"सत्र साफ़ हो गया",noActiveSession:"कोई सक्रिय सत्र नहीं.",bulkCleanupTitle:"थोक सफ़ाई",keepPinned:"पिन किए रखें",deleteAll:"सभी हटा दो",deleteAllTitle:"सभी सत्र हटाएँ",deleteAllKeepPinned:"पिन किए गए को छोड़कर सभी सत्र हटा देता है।",deleteAllIncludePinned:"पिन किए गए सहित सभी सत्र हटा देता है।",deleteEmpty:"रिक्त हटाएँ",deleteEmptyTitle:"खाली सत्र हटाएँ",deleteEmptyKeepPinned:"पिन किए गए को छोड़कर खाली सत्र हटा देता है।",deleteEmptyIncludePinned:"पिन किए गए सहित खाली सत्र हटा देता है।",deleteChildren:"बच्चों को हटाएँ",deleteChildrenTitle:"बाल सत्र हटाएँ",deleteChildrenKeepPinned:"पिन किए गए को छोड़कर सभी चाइल्ड सत्र हटा देता है।",deleteChildrenIncludePinned:"पिन किए गए सहित सभी चाइल्ड सत्र हटा देता है।",cleanupComplete:"सफ़ाई पूर्ण",devResetTitle:"विकास रीसेट",devResetDescription:"सत्र संग्रहण के लिए ग्रीनफ़ील्ड रीसेट (सत्र हटाता है/ और session.json रीसेट करता है)।",devResetAction:"देव रीसेट सत्र",devResetConfirmTitle:"सत्र संग्रहण रीसेट करें (डेव)",devResetConfirmContent:"यह सभी सत्रों (पिन किए गए/चाइल्ड सहित) को हटा देता है और सत्र सूचकांक को रीसेट कर देता है। रीफ्रेश के बाद एक नया खाली सत्र बनाया जाएगा।",devResetDone:"सत्र संग्रहण रीसेट",id:"ID",kind:"प्रकार",clear:"साफ़ करें",cancel:"रद्द करें",delete:"हटाएँ",reset:"रीसेट करें"},workflowsTab:{description:"वर्कफ़्लो को `~/.bamboo/workflows` में मार्कडाउन फ़ाइलों के रूप में संग्रहीत किया जाता है। चैट में वर्कफ़्लो सम्मिलित करने के लिए `/name` का उपयोग करें।",loadFailed:"वर्कफ़्लो लोड करने में विफल",loadContentFailed:"वर्कफ़्लो सामग्री लोड करने में विफल",invalidName:"अमान्य वर्कफ़्लो नाम",nameAlreadyExists:"इस नाम का एक वर्कफ़्लो पहले से मौजूद है",saved:"वर्कफ़्लो सहेजा गया",saveFailed:"वर्कफ़्लो सहेजने में विफल",deleted:"वर्कफ़्लो हटा दिया गया",deleteFailed:"वर्कफ़्लो हटाने में विफल",newWorkflow:"नया वर्कफ़्लो",empty:"कोई वर्कफ़्लो नहीं मिला",namePlaceholder:"वर्कफ़्लो नाम",contentPlaceholder:`# वर्कफ़्लो शीर्षक
|
|
3
3
|
|
|
4
|
-
यहां वर्कफ़्लो चरणों का वर्णन करें.`,title:"वर्कफ़्लो",refresh:"ताज़ा करें",save:"सहेजें"},providerTab:{title:"LLM प्रदाता कॉन्फ़िगरेशन",description:'अपने पसंदीदा LLM प्रदाता को कॉन्फ़िगर करें। "कॉन्फ़िगरेशन सहेजें और लागू करें" पर क्लिक करने पर कॉन्फ़िगरेशन सहेजा और लागू हो जाएगा।',currentProvider:"वर्तमान प्रदाता",activeProvider:"सक्रिय LLM प्रदाता",selectProviderRequired:"कृपया एक प्रदाता चुनें",saveAndApply:"कॉन्फ़िगरेशन सहेजें और लागू करें",loadConfigFailed:"प्रदाता कॉन्फ़िगरेशन लोड करने में विफल",checkStatusFailed:"स्थिति जाँचने में विफल",startCopilotAuthFailed:"Copilot प्रमाणीकरण प्रारंभ करने में विफल",copilotAuthSuccess:"Copilot प्रमाणीकरण सफल!",providerReloaded:"प्रदाता ने नए प्रमाणीकरण के साथ पुनः लोड किया।",completeAuthFailed:"प्रमाणीकरण पूर्ण होने में विफल रहा. कृपया पुन: प्रयास करें।",userCodeCopied:"उपयोगकर्ता कोड क्लिपबोर्ड पर कॉपी किया गया!",copyCodeFailedPrefix:"कोड कॉपी करने में विफल. कृपया मैन्युअल रूप से कॉपी करें:",logoutSuccess:"Copilot से लॉग आउट किया गया",logoutFailed:"Copilot से लॉगआउट करने में विफल",unknownError:"अज्ञात त्रुटि",invalidConfig:"अमान्य कॉन्फ़िगरेशन",invalidConfigPrefix:"अमान्य कॉन्फ़िगरेशन",invalidRequestOverridesJson:"{{provider}} के लिए अमान्य request_overrides JSON: {{error}}",fetchModelsCopilotFailed:"मॉडल लाने में विफल. कृपया Copilot को प्रमाणित करें और पुनः प्रयास करें।",fetchModelsFailed:"मॉडल लाने में विफल. कृपया अपनी API कुंजी और आधार URL जांचें।",noModelsReturned:"कोई मॉडल वापस नहीं आया. पहले Copilot को प्रमाणित करें, फिर मॉडल लाएँ।",foundModels:"{{count}} उपलब्ध मॉडल मिले",fetchModelsErrorPrefix:"मॉडल लाने में विफल",saveConfigSuccess:"कॉन्फ़िगरेशन सफलतापूर्वक सहेजा गया",saveConfigFailed:"कॉन्फ़िगरेशन सहेजने में विफल",saveConfigErrorPrefix:"कॉन्फ़िगरेशन सहेजने में विफल",applyConfigSuccess:"कॉन्फ़िगरेशन सफलतापूर्वक लागू किया गया। परिवर्तन नए सत्रों में प्रभावी होंगे।",applyConfigFailed:"कॉन्फ़िगरेशन लागू करने में विफल",applyConfigErrorPrefix:"कॉन्फ़िगरेशन लागू करने में विफल",modelUpdated:"मॉडल सफलतापूर्वक अपडेट किया गया",updateModelFailed:"मॉडल अद्यतन करने में विफल",updateModelErrorPrefix:"मॉडल अद्यतन करने में विफल",fetchingModels:"मॉडल लाये जा रहे हैं...",refreshModelsFrom:"{{source}} से उपलब्ध मॉडल ताज़ा करें",fetchModelsFrom:"{{source}} से उपलब्ध मॉडल प्राप्त करें",saveModelChangeFailed:"मॉडल परिवर्तन सहेजने में विफल",fetchModelsFailedShort:"मॉडल लाने में विफल",openaiConfigTitle:"OpenAI कॉन्फ़िगरेशन",openaiConfigDescription:"GPT मॉडल का उपयोग करने के लिए अपनी OpenAI API कुंजी दर्ज करें। आप वैकल्पिक रूप से प्रॉक्सी सर्वर के लिए एक कस्टम बेस URL निर्दिष्ट कर सकते हैं।",openaiApiKey:"OpenAI API कुंजी",openaiApiKeyRequired:"कृपया अपनी OpenAI API कुंजी दर्ज करें",baseUrlOptional:"आधार URL (वैकल्पिक)",openaiBaseUrlHelp:"डिफ़ॉल्ट OpenAI API एंडपॉइंट का उपयोग करने के लिए खाली छोड़ दें। यदि आवश्यक हो तो पूर्ण पथ शामिल करें (उदाहरण के लिए, /v1)।",defaultModel:"डिफ़ॉल्ट मॉडल",fastModel:"तेज़ मॉडल (वैकल्पिक)",fastModelHelp:"शीर्षक निर्माण, Mermaid रेंडरिंग और सारांशीकरण जैसे हल्के कार्यों के लिए सस्ता/तेज़ मॉडल। सेट न होने पर डिफ़ॉल्ट मॉडल का उपयोग करता है।",visionModel:"विज़न मॉडल (वैकल्पिक)",visionModelHelp:"छवि समझ के लिए दृष्टि-सक्षम मॉडल। जब hooks.image_fallback.mode को 'vision' पर सेट किया जाता है, तो यह मॉडल छवियों को टेक्स्ट के रूप में वर्णित करता है ताकि केवल टेक्स्ट वाले मॉडल उन्हें समझ सकें। सेट न होने पर डिफ़ॉल्ट मॉडल का उपयोग करता है।",sameAsDefault:"डिफ़ॉल्ट मॉडल के समान",selectModelRequired:"कृपया एक मॉडल चुनें",selectModel:"एक मॉडल चुनें",responsesOnlyModelsOptional:"केवल प्रतिक्रियाएँ मॉडल (वैकल्पिक)",responsesOnlyHelp1:"कुछ मॉडल केवल OpenAI रिस्पॉन्स API (चैट/पूर्णता नहीं) का समर्थन करते हैं। Bamboo को अपस्ट्रीम का उपयोग करने के लिए मजबूर करने के लिए यहां मॉडल आईडी जोड़ें",responsesOnlyHelp2:"सटीक मिलान (उदा. gpt-5.3-codex) और अनुगामी * (उदा. gpt-5*) के साथ उपसर्ग मिलान का समर्थन करता है।",anthropicConfigTitle:"Anthropic कॉन्फ़िगरेशन",anthropicConfigDescription:"Claude मॉडल का उपयोग करने के लिए अपनी Anthropic API कुंजी दर्ज करें।",anthropicApiKey:"Anthropic API कुंजी",anthropicApiKeyRequired:"कृपया अपनी एंथ्रोपिक API कुंजी दर्ज करें",anthropicBaseUrlHelp:"डिफ़ॉल्ट एंथ्रोपिक API एंडपॉइंट का उपयोग करने के लिए खाली छोड़ दें। यदि आवश्यक हो तो पूर्ण पथ शामिल करें (उदाहरण के लिए, /v1)।",maxTokensOptional:"अधिकतम टोकन (वैकल्पिक)",maxTokensHelp:"उत्पन्न करने के लिए टोकन की अधिकतम संख्या",geminiConfigTitle:"Google Gemini कॉन्फ़िगरेशन",geminiConfigDescription:"Gemini मॉडल का उपयोग करने के लिए अपनी Google AI API कुंजी दर्ज करें।",geminiApiKey:"Gemini API कुंजी",geminiApiKeyRequired:"कृपया अपनी Gemini API कुंजी दर्ज करें",geminiBaseUrlHelp:"डिफ़ॉल्ट Google AI API एंडपॉइंट का उपयोग करने के लिए खाली छोड़ दें। यदि आवश्यक हो तो पूर्ण पथ शामिल करें।",copilotConfigTitle:"GitHub Copilot कॉन्फ़िगरेशन",copilotConfigDescription:"GitHub Copilot OAuth प्रमाणीकरण का उपयोग करता है। किसी API कुंजी की आवश्यकता नहीं है. सुनिश्चित करें कि आपके पास सक्रिय GitHub Copilot सदस्यता है।",authStatusTitle:"प्रमाणीकरण स्थिति",notAuthenticated:"प्रमाणित नहीं",logoutCopilot:"Copilot से लॉगआउट करें",authenticateCopilot:"Copilot को प्रमाणित करें",refreshStatus:"ताज़ा स्थिति",headlessAuth:"हेडलेस प्रमाणीकरण",headlessAuthHelp:"ब्राउज़र को स्वतः खोलने के बजाय कंसोल में लॉगिन URL प्रिंट करें",noModelsLoaded:'अभी तक कोई मॉडल लोड नहीं हुआ। "बैकएंड से मॉडल लाएँ" पर क्लिक करें।',authFirstThenFetch:"पहले Copilot को प्रमाणित करें, फिर मॉडल लाएँ।",copilotUsageTitle:"GitHub Copilot का उपयोग करने के लिए:",copilotUsageStep1:"सुनिश्चित करें कि आपके पास सक्रिय GitHub Copilot सदस्यता है",copilotUsageStep2:'डिवाइस कोड प्रवाह प्रारंभ करने के लिए "प्रमाणीकृत Copilot" पर क्लिक करें',copilotUsageStep3:"प्रमाणीकरण पूरा करने के लिए अपने टर्मिनल में दिए गए निर्देशों का पालन करें",copilotAuthModalTitle:"Copilot प्रमाणीकरण",completedAuthorization:"मैंने प्राधिकरण पूरा कर लिया है",browserOpened:"ब्राउज़र अपने आप खुल गया",authStep1:"आपके ब्राउज़र में एक GitHub पेज खुल जाना चाहिए",authStep2:"नीचे दिए गए कोड को कॉपी करें और GitHub पेज पर पेस्ट करें",authStep3:'अधिकृत करने के लिए GitHub पर "जारी रखें" पर क्लिक करें',visitUrl:"1. इस URL पर जाएँ:",enterCode:"2. यह कोड दर्ज करें:",copied:"कॉपी किया गया!",copyCode:"कोड कॉपी करें",afterContinueHint:'GitHub पर "जारी रखें" पर क्लिक करने के बाद, नीचे "मैंने प्राधिकरण पूरा कर लिया है" बटन पर क्लिक करें।',retry:"पुनः प्रयास करें",authenticated:"प्रमाणीकृत",cancel:"रद्द करें",providerNames:{openai:"OpenAI",anthropic:"Anthropic",gemini:"Gemini",copilot:"Copilot"}},mcpTab:{statusGuideTitle:"स्थिति मार्गदर्शिका:",statusHelp:{connecting:"सर्वर प्रारंभ हो रहा है या पुनः कनेक्ट हो रहा है",ready:"सर्वर जुड़ा हुआ है और टूल सामान्य रूप से परोस रहा है",degraded:"सर्वर आंशिक रूप से उपलब्ध है; कुछ टूल विफल हो सकते हैं",stopped:"सर्वर नहीं चल रहा है",error:"सर्वर प्रारंभ करने में विफल रहा या रनटाइम त्रुटियों का सामना करना पड़ा"},statusLastError:"अंतिम त्रुटि: {{error}}",serverDeleted:"MCP सर्वर हटा दिया गया",deleteServerFailed:"MCP सर्वर को हटाने में विफल",connectedTo:"{{name}} से कनेक्टेड",connectServerFailed:"MCP सर्वर कनेक्ट करने में विफल",disconnected:"{{name}} डिस्कनेक्ट किया गया",disconnectServerFailed:"MCP सर्वर को डिस्कनेक्ट करने में विफल",toolsRefreshedFor:"{{name}} के लिए टूल ताज़ा किए गए",refreshToolsFailed:"टूल ताज़ा करने में विफल",statusRefreshed:"MCP स्थिति ताज़ा की गई",refreshStatusFailed:"MCP स्थिति ताज़ा करने में विफल",noServerForEditing:"संपादन के लिए कोई सर्वर चयनित नहीं",savedServer:"{{name}} सहेजा गया",addedServer:"{{name}} जोड़ा गया",saveServerFailed:"MCP सर्वर सहेजने में विफल",copiedConfig:"MCP कॉन्फिगरेशन को क्लिपबोर्ड पर कॉपी किया गया",clipboardUnavailable:"क्लिपबोर्ड उपलब्ध नहीं है. निर्यात को मोडल में दिखाया गया है।",invalidJsonPrefix:"अमान्य JSON",unknownError:"अज्ञात त्रुटि",jsonMustBeObject:"JSON एक ऑब्जेक्ट होना चाहिए",missingMcpServers:`'mcpServers' गुम है। पूर्ण क्लाउड डेस्कटॉप-शैली कॉन्फिग भाग चिपकाएँ: { "mcpServers": {... } }`,importSummary:"आयातित {{count}} सर्वर ({{added}} जोड़ा गया, {{updated}} अद्यतन किया गया, {{removed}} हटाया गया)। {{failed}} सर्वर प्रारंभ करने में विफल रहे।",importStartFailures:"कुछ सर्वर प्रारंभ नहीं हुए. कॉन्फ़िगरेशन सहेजा गया है; त्रुटियाँ देखने के लिए सर्वर सूची खोलें।",importFailed:"MCP सर्वर आयात करने में विफल",overviewTitle:"MCP अवलोकन",overviewDescription:"बाहरी MCP सर्वर कॉन्फ़िगर करें और पंजीकृत टूल उपनामों का निरीक्षण करें।",totalServers:"कुल सर्वर: {{count}}",totalTools:"कुल टूल: {{count}}",serversTitle:"MCP सर्वर",addServer:"सर्वर जोड़ें",refreshAll:"सभी को ताज़ा करें",importModalTitle:"MCP सर्वर आयात करें",importHint:"क्लाउड डेस्कटॉप-शैली कॉन्फिग भाग चिपकाएँ। उदाहरण:",importModeMerge:"मर्ज (अप्सर्ट)",importModeReplace:"बदलें (अन्य हटाएं)",replaceWarning:"रिप्लेसमेंट मोड मौजूदा MCP सर्वर को हटा देगा जो आयातित MCP सर्वर में मौजूद नहीं हैं।",status:{connecting:"कनेक्ट हो रहा है",ready:"तैयार",degraded:"डिग्रेडेड",stopped:"रुक गया",error:"एरर"},export:"निर्यात करें",import:"आयात करें"},mcpServerTable:{columns:{transportType:"ट्रांसपोर्ट प्रकार",toolCount:"टूल संख्या",name:"नाम",status:"स्थिति",actions:"कार्रवाई"},deleteTitle:"MCP सर्वर हटाएँ",deleteDescription:'सर्वर "{{name}}" हटाएं?',empty:"कोई MCP सर्वर कॉन्फ़िगर नहीं किया गया",actions:{refreshTools:"टूल ताज़ा करें",edit:"संपादित करें",delete:"हटाएँ",disconnect:"डिस्कनेक्ट करें",connect:"जोड़ें"},transportOptions:{sse:"SSE",stdio:"Stdio"}},mcpToolList:{title:"MCP टूल्स",selectServerHint:"इसके MCP टूल्स का निरीक्षण करने के लिए एक सर्वर का चयन करें",empty:"इस सर्वर के लिए कोई टूल्स नहीं मिले",noDescription:"कोई डिस्क्रिप्शन उपलब्ध नहीं",aliasMapping:"उपनाम मैपिंग",parametersSchema:"पैरामीटर स्कीमा"},mcpServerForm:{jsonMustBeObject:"JSON एक ऑब्जेक्ट होना चाहिए",detectedBulkConfig:"MCPसर्वर (बल्क कॉन्फ़िगरेशन) का पता लगाया गया। थोक आयात के लिए MCP टैब आयात बटन का उपयोग करें, या यहां एकल सर्वर कॉन्फ़िगरेशन पेस्ट करें।",missingIdField:"गुम या अमान्य आईडी फ़ील्ड",missingTransportField:"गुम या अमान्य परिवहन फ़ील्ड",missingTransportInfo:"परिवहन संबंधी जानकारी अनुपलब्ध. या तो ट्रांसपोर्ट (बोधि प्रारूप) या कमांड/URL (मुख्यधारा MCP प्रारूप) अपेक्षित है।",invalidJson:"अमान्य JSON: {{message}}",unknownError:"अज्ञात त्रुटि",editTitle:"MCP सर्वर संपादित करें",addTitle:"MCP सर्वर जोड़ें",jsonError:"JSON त्रुटि",serverId:"सर्वर ID",serverIdRequired:"सर्वर ID आवश्यक है",serverIdPatternError:"केवल अक्षरों, संख्याओं, अंडरस्कोर और हाइफ़न का उपयोग करें",displayName:"प्रदर्शित होने वाला नाम",enabledHelp:"अक्षम सर्वर कॉन्फ़िगरेशन में बने रहेंगे लेकिन प्रारंभ नहीं होंगे।",transportType:"ट्रांसपोर्ट प्रकार",transportTypeRequired:"ट्रांसपोर्ट प्रकार आवश्यक है",commandRequired:"कमांड आवश्यक है",argumentsPlaceholder:"एक तर्क जोड़ें और Enter दबाएँ",envVars:"एनवायरमेंट वेरिएबल",addEnv:"एनवायरमेंट वेरिएबल जोड़ें",keyRequired:"कुंजी आवश्यक है",sseUrl:"SSE URL",sseUrlRequired:"SSE URL आवश्यक है",validUrlRequired:"कृपया मान्य URL दर्ज करें",addHeader:"हेडर जोड़ें",headerNameRequired:"हेडर नाम आवश्यक है",save:"सहेजें",modeForm:"फॉर्म",modeJson:"JSON",enabled:"सक्रिय",transportOptions:{stdio:"Stdio",sse:"SSE"},command:"कमांड",arguments:"आर्ग्युमेंट्स",headers:"हेडर"},metricsCards:{totalSessions:"कुल सत्र",chatTokens:"चैट टोकन",totalToolCalls:"कुल टूल कॉल",avgSessionDuration:"औसत सत्र अवधि"},forwardMetricsCards:{totalForwardRequests:"कुल फॉरवर्ड अनुरोध",successRate:"सफलता दर",forwardTokens:"फॉरवर्ड टोकन",avgResponseTime:"औसत प्रतिक्रिया समय"},unifiedMetricsCards:{totalRequests:"कुल अनुरोध",totalTokens:"कुल टोकन",successRate:"सफलता दर",avgResponseTime:"औसत प्रतिक्रिया समय",chatSessions:"चैट सत्र",chatTokens:"चैट टोकन",toolCalls:"टूल कॉल",avgSessionDuration:"औसत सत्र अवधि",forwardRequests:"अग्रेषित अनुरोध",forwardTokens:"फॉरवर्ड टोकन",successful:"सफल",failed:"असफल"},metricsTable:{session:{columns:{toolCalls:"टूल कॉल",session:"सत्र",model:"मॉडल",status:"स्थिति",started:"शुरू कर दिया",duration:"अवधि",tokens:"टोकन",messages:"संदेश",action:"कार्रवाई"},view:"देखें"},forward:{totalRequests:"{{total}} अनुरोध",empty:"इस श्रेणी के लिए कोई फॉरवर्ड अनुरोध दर्ज नहीं किया गया",columns:{id:"ID",endpoint:"एंडपॉइंट",model:"मॉडल",type:"प्रकार",status:"स्थिति",tokens:"टोकन",duration:"अवधि",started:"शुरू कर दिया",error:"एरर"},typeStream:"स्ट्रीम",typeSync:"सिंक"}},metricsDashboard:{roundColumns:{toolCalls:"टूल कॉल",round:"राउंड",status:"स्थिति",duration:"अवधि",tokens:"टोकन"},compactStats:{combinedTokens:"संयुक्त टोकन",chatTokens:"चैट टोकन",forwardTokens:"फॉरवर्ड टोकन",avgTokensPerSession:"औसत टोकन/सत्र",estimatedTimeSaved:"Est. समय बचत",estimatedEfficiencyLift:"Est. दक्षता वृद्धि",estimatedSpeedMultiplier:"Est. गति गुणक",estimatedSavedWorkdays:"Est. बचत कार्यदिवस",avgRoundsPerSession:"औसत राउंड/सत्र",toolCallsPerSession:"टूल कॉल/सत्र",activeSessionRate:"सक्रिय सत्र दर",avgTokensPerForward:"औसत टोकन/फॉरवर्ड",forwardErrorRate:"फॉरवर्ड एरर रेट",streamingRatio:"स्ट्रीमिंग अनुपात",p95ForwardLatency:"P95 फॉरवर्ड विलंबता",modelCoverage:"मॉडल कवरेज",endpointCoverage:"एंडपॉइंट कवरेज"},startDate:"आरंभ करने की तिथि",endDate:"अंतिम तिथि",daysOption:"{{value}} दिन",derivedMetricsTitle:"व्युत्पन्न मेट्रिक्स (संक्षिप्त)",derivedMetricsSubtitle:"अतिरिक्त पृष्ठ लंबाई के बिना अधिक आयाम",efficiencyHint:"दक्षता अनुमान रूढ़िवादी मान्यताओं का उपयोग करते हैं: {{manualTpm}} मैनुअल टोकन/मिनट + {{manualToolMinutes}} मिनट/टूल बनाम {{assistedTpm}} सहायता प्राप्त टोकन/मिनट + {{assistedToolMinutes}} मिनट/टूल, फिर {{realization}}% प्राप्ति और कैप्स ({{maxLift}}% / {{maxMultiplier}}x) लागू करें।",toolUsageTitle:"उपकरण उपयोग आवृत्ति",noToolUsage:"इस श्रेणी के लिए कोई टूल कॉल रिकॉर्ड नहीं की गई।",activityHeatmapTitle:"दैनिक गतिविधि हीटमैप",noActivity:"इस श्रेणी के लिए कोई गतिविधि उपलब्ध नहीं है.",sessionsCount:"{{count}} सत्र",tokensAmount:"{{value}} टोकन",sessionsTabLabel:"सत्र ({{count}})",chatSessionsLabel:"चैट सत्र ({{count}})",sessionsHint:"पूरे दौर के डिस्क्रिप्शन के लिए एक सत्र पर क्लिक करें",forwardTabLabel:"फॉरवर्ड अनुरोध ({{count}})",detailedMetricsTitle:"विस्तृत मेट्रिक्स",sessionMetricsTitle:"सत्र मेट्रिक्स",loadingSessionDetails:"सत्र डिस्क्रिप्शन लोड हो रहा है...",sessionDetail:{sessionId:"सत्र आईडी",totalTokens:"कुल टोकन",toolCalls:"टूल कॉल",model:"मॉडल",status:"स्थिति",duration:"अवधि",messages:"संदेश"},noDetail:"कोई डिटेल उपलब्ध नहीं है",multiplierSuffix:"एक्स",filtersTitle:"फिल्टर",refresh:"ताज़ा करें",model:"मॉडल",granularity:{daily:"दैनिक",weekly:"साप्ताहिक",monthly:"मासिक"},dashboardTitle:"डैशबोर्ड",tabs:{overview:"अवलोकन",analysis:"विश्लेषण",records:"रिकॉर्ड्स"},calls:"कॉल"},charts:{tokenUsageOverTime:"समय के साथ टोकन का उपयोग",unifiedTokenUsageOverTime:"समय के साथ टोकन का उपयोग (चैट + फॉरवर्ड)",noTokenUsage:"कोई टोकन उपयोग उपलब्ध नहीं है",tokenUsageDescription:"दिन/अवधि के अनुसार प्रॉम्प्ट, कम्प्लीशन और कुल टोकन।",unifiedTokenUsageDescription:"समय के साथ संयुक्त चैट और फॉरवर्ड टोकन उपयोग।",modelDistribution:"मॉडल वितरण",noModelMetrics:"कोई मॉडल मेट्रिक्स उपलब्ध नहीं है",modelDistributionDescription:"मॉडल द्वारा उपभोग किए गए कुल टोकन का हिस्सा।",endpointDistribution:"एंडपॉइंट डिस्ट्रीब्यूशन",noForwardMetrics:"इस श्रेणी के लिए कोई फ़ॉरवर्ड मेट्रिक्स उपलब्ध नहीं है।",total:"कुल",prompt:"प्रॉम्प्ट",completion:"Completion",chat:"चैट",forward:"फॉरवर्ड"},page:{tabs:{mermaid:"Mermaid",mcp:"MCP"},groups:{ai:"AI"}}},components:{markdown:{codeCopiedSuccess:"कोड क्लिपबोर्ड पर कॉपी किया गया",copyFailed:"कॉपी विफल"},jsonSchema:{noProperties:"स्कीमा में कोई प्रॉपर्टी नहीं",field:"फ़ील्ड",type:"प्रकार",required:"आवश्यक",yes:"हाँ",no:"नहीं",default:"डिफ़ॉल्ट",description:"डिस्क्रिप्शन"},imageGrid:{ocr:"OCR"}}},he="lotus_ui_locale_v1",m="en-US",_=["en-US","zh-CN","zh-TW","fr-FR","ja-JP","hi-IN"],fe=e=>e?_.includes(e):!1,ve=()=>{var t;if(typeof window>"u")return m;try{const s=window.localStorage,i=s&&typeof s.getItem=="function"?s.getItem(he):null;if(fe(i))return i}catch{}const e=((t=window.navigator.language)==null?void 0:t.toLowerCase())??"";return e.startsWith("zh")?e.includes("tw")||e.includes("hk")||e.includes("mo")||e.includes("hant")?"zh-TW":"zh-CN":e.startsWith("fr")?"fr-FR":e.startsWith("ja")?"ja-JP":e.startsWith("hi")?"hi-IN":m},B=e=>!!e&&typeof e=="object"&&!Array.isArray(e),b=(e,t)=>{const s={...e};for(const[i,o]of Object.entries(t)){const a=s[i];if(B(a)&&B(o)){s[i]=b(a,o);continue}s[i]=o}return s},ye=e=>({...e,app:{...e.app,loading:"Chargement...",retry:"Réessayer",backendNotReachable:"Le back-end est inaccessible à {{baseUrl}} (dernière erreur : {{message}})"},chat:{...e.chat,sidebar:{...e.chat.sidebar,newSession:"Nouvelle session",empty:{noSessions:"Pas encore de sessions",hint:'Cliquez sur "Nouvelle session" pour commencer'},dateGroups:{today:"Aujourd'hui",yesterday:"Hier",thisWeek:"Cette semaine",thisMonth:"Ce mois-ci",pinned:"Épinglé",scheduled:"Planifié"},actions:{collapseChildren:"Réduire les sessions enfants",expandChildren:"Développer les sessions enfants"}}},settings:{...e.settings,page:{...e.settings.page,back:"Retour",title:"Paramètres système",tabs:{...e.settings.page.tabs,config:"Configuration",prompts:"Prompts",mermaid:"Mermaid",skills:"Compétences",workflows:"Flux de travail",mcp:"MCP",modelLimits:"Limites des modèles",metrics:"Métriques",schedules:"Planifications",sessions:"Sessions",app:"Application",provider:"Fournisseur",hooks:"Hooks",masking:"Masquage"},groups:{...e.settings.page.groups,ai:"IA",toolsAndExtensions:"Outils & Extensions",securityAndPrivacy:"Sécurité",monitoring:"Surveillance",system:"Système"}},notifications:{...e.settings.notifications,deleteAllSuccess:"Toutes les sessions ont été supprimées (hors épinglées)",deleteEmptySuccess:"Les sessions vides ont été supprimées (hors épinglées)",localStorageCleared:"Le stockage local a été effacé",resetSuccessReloading:"Réinitialisation de l'application réussie. Rechargement...",resetFailed:"Échec de la réinitialisation de l'application",promptEnhancementSaved:"Amélioration du prompt système enregistrée"},configTab:{...e.settings.configTab,loadConfigFailed:"Échec du chargement de la configuration",invalidConfig:"Configuration invalide",saveConfigSuccess:"Configuration enregistrée avec succès",saveConfigFailed:"Échec de l'enregistrement de la configuration",backendSaved:"URL du back-end enregistrée",backendResetDefault:"URL du back-end rétablie par défaut",providerMovedTitle:"Configuration du fournisseur déplacée",providerMovedDescription:"Les paramètres GitHub Copilot et d'autres fournisseurs ont été déplacés vers l'onglet Paramètres fournisseur. Configurez-les là-bas.",backendApiBaseUrlTitle:"URL de base de l'API du back-end",backendApiHint:"Doit inclure le chemin /v1",resetToDefault:"Rétablir les valeurs par défaut",save:"Enregistrer",language:"Langue",languageEnglish:"Anglais",languageChinese:"Chinois simplifié",languageTraditionalChinese:"Chinois traditionnel",languageFrench:"Français",languageJapanese:"Japonais",languageHindi:"Hindi"},appTab:{...e.settings.appTab,switchOn:"ACTIVÉ",switchOff:"DÉSACTIVÉ",darkMode:"Mode sombre",darkModeDark:"Sombre",darkModeLight:"Clair",language:"Langue",languageEnglish:"Anglais",languageChinese:"Chinois simplifié",languageTraditionalChinese:"Chinois traditionnel",languageFrench:"Français",languageJapanese:"Japonais",languageHindi:"Hindi",deleteAllTitle:"Supprimer toutes les sessions",deleteAllDescription:"Voulez-vous continuer ? Cette action supprimera toutes les sessions, sauf celles épinglées.",deleteAllButton:"Supprimer toutes les sessions",deleteEmptyTitle:"Supprimer les sessions vides",deleteEmptyDescription:"Voulez-vous continuer ? Cette action supprimera toutes les sessions sans message (hors sessions épinglées).",deleteEmptyButton:"Supprimer les sessions vides",clearLocalStorageTitle:"Effacer le stockage local",clearLocalStorageDescription:"Voulez-vous continuer ? Cette action supprimera toutes les données locales et réinitialisera l'application.",clearLocalStorageButton:"Effacer le stockage local",confirmDeleteAll:"Oui, tout supprimer",confirmDeleteEmpty:"Oui, supprimer les vides",confirmClear:"Oui, effacer",cancel:"Annuler",dangerZone:"Zone dangereuse",dangerDescription:"Ces actions sont irréversibles. Toutes les données seront supprimées définitivement.",resetApplicationTitle:"Réinitialiser l'application",resetApplicationIntro:"Voulez-vous continuer ? Cette action va :",resetStepDeleteAllSessions:"Supprimer TOUTES les sessions (y compris les épinglées)",resetStepClearStorage:"Effacer toutes les données du stockage local",resetStepResetConfig:"Réinitialiser config.json aux valeurs par défaut",resetStepSetupFlow:"Relancer l'assistant de configuration au prochain démarrage",resetStepReload:"Recharger l'application",resetConfirm:"Oui, tout réinitialiser",resetButton:"Réinitialiser l'application (toutes les données)",runningVersion:"Version en cours",runningVersionDesc:"Il s'agit de la version frontend Lotus actuellement en cours d'exécution."},networkCard:{...e.settings.networkCard,title:"Paramètres réseau",httpProxy:"Proxy HTTP",httpsProxy:"Proxy HTTPS",proxyAuthTitle:"Authentification du proxy",proxyConfiguredForUser:"Configuré pour l'utilisateur : {{username}}",clearCredentials:"Effacer les identifiants",username:"Nom d'utilisateur",password:"Mot de passe",apply:"Appliquer",credentialsStorageNote:"Les identifiants du proxy sont stockés de façon chiffrée dans ~/.bamboo/config.json",reload:"Recharger",save:"Enregistrer"},modelMappingCard:{...e.settings.modelMappingCard,loadProviderFailed:"Échec du chargement de la configuration du fournisseur",loadMappingsFailed:"Échec du chargement des mappages existants",loadModelsFailed:"Échec du chargement des modèles",loadModelsHint:"Impossible de charger les modèles. Vérifiez la configuration du fournisseur.",mappingSaved:"Mappage de modèle enregistré",mappingSaveFailed:"Échec de l'enregistrement du mappage de modèle",enterModelName:"Veuillez saisir un nom de modèle",customMappingSaved:"Mappage de modèle personnalisé enregistré",customMappingSaveFailed:"Échec de l'enregistrement du mappage de modèle personnalisé",collapseTitle:"Mappage de modèles Anthropic",description:"Configurez les modèles {{provider}} à utiliser lorsque Claude CLI demande des modèles spécifiques.",loadModelsErrorTitle:"Échec du chargement des modèles",retry:"Réessayer",loadingModels:"Chargement des modèles...",modelTypeOpusDescription:'correspond aux modèles contenant "opus"',modelTypeSonnetDescription:'correspond aux modèles contenant "sonnet"',modelTypeHaikuDescription:'correspond aux modèles contenant "haiku"',selectModelPlaceholder:"Sélectionner le modèle {{label}}",customModelOption:"Modèle personnalisé...",mappedModelNotFound:'Le modèle mappé "{{model}}" est introuvable dans les modèles disponibles du fournisseur actuel',refreshModels:"Actualiser les modèles",currentProvider:"Fournisseur actuel",loadingProvider:"Chargement...",availableModels:"Modèles disponibles",cached:"(en cache)",storedIn:"Enregistré dans",customModalTitle:"Saisir un nom de modèle personnalisé",customModalDescription:"Saisissez un nom de modèle personnalisé pour {{modelType}}",customModalPlaceholder:"ex. : gpt-4-turbo-preview",customModalNote:"Note : assurez-vous que ce nom de modèle est valide pour le fournisseur actuel.",save:"Enregistrer",cancel:"Annuler"},modelTab:{...e.settings.modelTab,selectModelTitle:"Sélectionner un modèle",loadingModels:"Chargement des modèles...",selectModelPlaceholder:"Sélectionner un modèle",backendApiBaseUrlTitle:"URL de base de l'API du back-end",resetToDefault:"Rétablir les valeurs par défaut",save:"Enregistrer",backendApiHint:"Doit être une URL de base complète incluant /v1 (ex. {{example}})."},common:{...e.settings.common,loading:"Chargement...",successful:"Réussi",failed:"Échec"},promptsTab:{...e.settings.promptsTab,title:"Amélioration du prompt système",mermaidEnhancement:"Amélioration Mermaid",taskListRules:"Règles de tâches partagées",copilotConclusionWithOptionsBeforeFinish:"Copilot conclusion_with_options avant de terminer",switchOn:"ACTIVÉ",switchOff:"DÉSACTIVÉ",enhancementPlaceholder:"Ajoutez un texte d'amélioration global à ajouter à chaque prompt système.",saveEnhancement:"Enregistrer l'amélioration",description:"Ce texte est ajouté en premier, suivi des améliorations système activées, avant l'envoi de chaque requête."},hooksTab:{...e.settings.hooksTab,title:"Hooks d'images",enableImagePreflight:"Activer le hook de pré-vérification d'image",modeLabel:"Mode",description:"Le mode Placeholder réécrit les images en résumés textuels (cela peut perturber les outils qui attendent de vraies données d'image). L'OCR est actuellement disponible uniquement sous Windows.",loadFailed:"Échec du chargement des paramètres de hooks",updateFailed:"Échec de la mise à jour des hooks",modeUpdateFailed:"Échec de la mise à jour du mode de hook",enabled:"Hooks d'image activés",disabled:"Hooks d'image désactivés",modeUpdated:"Mode du hook d'image défini sur : {{mode}}",mode:{...e.settings.hooksTab.mode,error:"Erreur"}},keywordMaskingTab:{...e.settings.keywordMaskingTab,title:"Masquage de mots-clés",addKeyword:"Ajouter un mot-clé",description:"Configurez les mots-clés à masquer avant l'envoi vers l'API Copilot. Utilisez une correspondance exacte pour les chaînes littérales ou des regex pour les motifs. Toutes les correspondances seront remplacées par [MASKED].",empty:"Aucune règle de masquage de mots-clés configurée",cancel:"Annuler",patternPlaceholder:"Saisissez un motif à rechercher",examples:"Exemples",exactMatch:"Correspondance exacte",regexPattern:"Motif regex",enabled:"Activé",disabled:"Désactivé",sampleText:"Texte d'exemple",sampleTextPlaceholder:"Saisissez un texte d'exemple",maskedPreview:"Aperçu du masquage",emptyPattern:"(vide)",loadFailed:"Échec du chargement de la configuration de masquage de mots-clés",saveFailed:"Échec de l'enregistrement de la configuration",saveSuccess:"Configuration de masquage de mots-clés enregistrée",validationFailedPrefix:"Échec de validation",patternRequired:"Le motif ne peut pas être vide",example:{...e.settings.keywordMaskingTab.example,literalToken:"Masquer un jeton littéral",githubTokens:"Masquer les jetons GitHub",awsKeys:"Masquer les clés AWS",emails:"Masquer les adresses e-mail"}},workflowsTab:{...e.settings.workflowsTab,title:"Flux de travail",description:"Les workflows sont stockés dans `~/.bamboo/workflows` sous forme de fichiers Markdown. Utilisez `/nom` pour insérer un workflow dans le chat.",loadFailed:"Échec du chargement des flux de travail",loadContentFailed:"Échec du chargement du contenu du flux",invalidName:"Nom de flux invalide",nameAlreadyExists:"Un flux avec ce nom existe déjà",saved:"Flux de travail enregistré",saveFailed:"Échec de l'enregistrement du flux de travail",deleted:"Flux de travail supprimé",deleteFailed:"Échec de la suppression du flux de travail",refresh:"Actualiser",newWorkflow:"Nouveau flux",save:"Enregistrer",empty:"Aucun flux de travail trouvé",namePlaceholder:"Nom du flux",contentPlaceholder:`# Titre du flux
|
|
4
|
+
यहां वर्कफ़्लो चरणों का वर्णन करें.`,title:"वर्कफ़्लो",refresh:"ताज़ा करें",save:"सहेजें"},providerTab:{title:"LLM प्रदाता कॉन्फ़िगरेशन",description:'अपने पसंदीदा LLM प्रदाता को कॉन्फ़िगर करें। "कॉन्फ़िगरेशन सहेजें और लागू करें" पर क्लिक करने पर कॉन्फ़िगरेशन सहेजा और लागू हो जाएगा।',currentProvider:"वर्तमान प्रदाता",activeProvider:"सक्रिय LLM प्रदाता",selectProviderRequired:"कृपया एक प्रदाता चुनें",saveAndApply:"कॉन्फ़िगरेशन सहेजें और लागू करें",loadConfigFailed:"प्रदाता कॉन्फ़िगरेशन लोड करने में विफल",checkStatusFailed:"स्थिति जाँचने में विफल",startCopilotAuthFailed:"Copilot प्रमाणीकरण प्रारंभ करने में विफल",copilotAuthSuccess:"Copilot प्रमाणीकरण सफल!",providerReloaded:"प्रदाता ने नए प्रमाणीकरण के साथ पुनः लोड किया।",completeAuthFailed:"प्रमाणीकरण पूर्ण होने में विफल रहा. कृपया पुन: प्रयास करें।",userCodeCopied:"उपयोगकर्ता कोड क्लिपबोर्ड पर कॉपी किया गया!",copyCodeFailedPrefix:"कोड कॉपी करने में विफल. कृपया मैन्युअल रूप से कॉपी करें:",logoutSuccess:"Copilot से लॉग आउट किया गया",logoutFailed:"Copilot से लॉगआउट करने में विफल",unknownError:"अज्ञात त्रुटि",invalidConfig:"अमान्य कॉन्फ़िगरेशन",invalidConfigPrefix:"अमान्य कॉन्फ़िगरेशन",invalidRequestOverridesJson:"{{provider}} के लिए अमान्य request_overrides JSON: {{error}}",fetchModelsCopilotFailed:"मॉडल लाने में विफल. कृपया Copilot को प्रमाणित करें और पुनः प्रयास करें।",fetchModelsFailed:"मॉडल लाने में विफल. कृपया अपनी API कुंजी और आधार URL जांचें।",noModelsReturned:"कोई मॉडल वापस नहीं आया. पहले Copilot को प्रमाणित करें, फिर मॉडल लाएँ।",foundModels:"{{count}} उपलब्ध मॉडल मिले",fetchModelsErrorPrefix:"मॉडल लाने में विफल",saveConfigSuccess:"कॉन्फ़िगरेशन सफलतापूर्वक सहेजा गया",saveConfigFailed:"कॉन्फ़िगरेशन सहेजने में विफल",saveConfigErrorPrefix:"कॉन्फ़िगरेशन सहेजने में विफल",applyConfigSuccess:"कॉन्फ़िगरेशन सफलतापूर्वक लागू किया गया। परिवर्तन नए सत्रों में प्रभावी होंगे।",applyConfigFailed:"कॉन्फ़िगरेशन लागू करने में विफल",applyConfigErrorPrefix:"कॉन्फ़िगरेशन लागू करने में विफल",modelUpdated:"मॉडल सफलतापूर्वक अपडेट किया गया",updateModelFailed:"मॉडल अद्यतन करने में विफल",updateModelErrorPrefix:"मॉडल अद्यतन करने में विफल",fetchingModels:"मॉडल लाये जा रहे हैं...",refreshModelsFrom:"{{source}} से उपलब्ध मॉडल ताज़ा करें",fetchModelsFrom:"{{source}} से उपलब्ध मॉडल प्राप्त करें",saveModelChangeFailed:"मॉडल परिवर्तन सहेजने में विफल",fetchModelsFailedShort:"मॉडल लाने में विफल",openaiConfigTitle:"OpenAI कॉन्फ़िगरेशन",openaiConfigDescription:"GPT मॉडल का उपयोग करने के लिए अपनी OpenAI API कुंजी दर्ज करें। आप वैकल्पिक रूप से प्रॉक्सी सर्वर के लिए एक कस्टम बेस URL निर्दिष्ट कर सकते हैं।",openaiApiKey:"OpenAI API कुंजी",openaiApiKeyRequired:"कृपया अपनी OpenAI API कुंजी दर्ज करें",baseUrlOptional:"आधार URL (वैकल्पिक)",openaiBaseUrlHelp:"डिफ़ॉल्ट OpenAI API एंडपॉइंट का उपयोग करने के लिए खाली छोड़ दें। यदि आवश्यक हो तो पूर्ण पथ शामिल करें (उदाहरण के लिए, /v1)।",defaultModel:"डिफ़ॉल्ट मॉडल",fastModel:"तेज़ मॉडल (वैकल्पिक)",fastModelHelp:"शीर्षक निर्माण, Mermaid रेंडरिंग और सारांशीकरण जैसे हल्के कार्यों के लिए सस्ता/तेज़ मॉडल। सेट न होने पर डिफ़ॉल्ट मॉडल का उपयोग करता है।",visionModel:"विज़न मॉडल (वैकल्पिक)",visionModelHelp:"छवि समझ के लिए दृष्टि-सक्षम मॉडल। जब hooks.image_fallback.mode को 'vision' पर सेट किया जाता है, तो यह मॉडल छवियों को टेक्स्ट के रूप में वर्णित करता है ताकि केवल टेक्स्ट वाले मॉडल उन्हें समझ सकें। सेट न होने पर डिफ़ॉल्ट मॉडल का उपयोग करता है।",sameAsDefault:"डिफ़ॉल्ट मॉडल के समान",selectModelRequired:"कृपया एक मॉडल चुनें",selectModel:"एक मॉडल चुनें",responsesOnlyModelsOptional:"केवल प्रतिक्रियाएँ मॉडल (वैकल्पिक)",responsesOnlyHelp1:"कुछ मॉडल केवल OpenAI रिस्पॉन्स API (चैट/पूर्णता नहीं) का समर्थन करते हैं। Bamboo को अपस्ट्रीम का उपयोग करने के लिए मजबूर करने के लिए यहां मॉडल आईडी जोड़ें",responsesOnlyHelp2:"सटीक मिलान (उदा. gpt-5.3-codex) और अनुगामी * (उदा. gpt-5*) के साथ उपसर्ग मिलान का समर्थन करता है।",anthropicConfigTitle:"Anthropic कॉन्फ़िगरेशन",anthropicConfigDescription:"Claude मॉडल का उपयोग करने के लिए अपनी Anthropic API कुंजी दर्ज करें।",anthropicApiKey:"Anthropic API कुंजी",anthropicApiKeyRequired:"कृपया अपनी एंथ्रोपिक API कुंजी दर्ज करें",anthropicBaseUrlHelp:"डिफ़ॉल्ट एंथ्रोपिक API एंडपॉइंट का उपयोग करने के लिए खाली छोड़ दें। यदि आवश्यक हो तो पूर्ण पथ शामिल करें (उदाहरण के लिए, /v1)।",maxTokensOptional:"अधिकतम टोकन (वैकल्पिक)",maxTokensHelp:"उत्पन्न करने के लिए टोकन की अधिकतम संख्या",geminiConfigTitle:"Google Gemini कॉन्फ़िगरेशन",geminiConfigDescription:"Gemini मॉडल का उपयोग करने के लिए अपनी Google AI API कुंजी दर्ज करें।",geminiApiKey:"Gemini API कुंजी",geminiApiKeyRequired:"कृपया अपनी Gemini API कुंजी दर्ज करें",geminiBaseUrlHelp:"डिफ़ॉल्ट Google AI API एंडपॉइंट का उपयोग करने के लिए खाली छोड़ दें। यदि आवश्यक हो तो पूर्ण पथ शामिल करें।",copilotConfigTitle:"GitHub Copilot कॉन्फ़िगरेशन",copilotConfigDescription:"GitHub Copilot OAuth प्रमाणीकरण का उपयोग करता है। किसी API कुंजी की आवश्यकता नहीं है. सुनिश्चित करें कि आपके पास सक्रिय GitHub Copilot सदस्यता है।",authStatusTitle:"प्रमाणीकरण स्थिति",notAuthenticated:"प्रमाणित नहीं",logoutCopilot:"Copilot से लॉगआउट करें",authenticateCopilot:"Copilot को प्रमाणित करें",refreshStatus:"ताज़ा स्थिति",headlessAuth:"हेडलेस प्रमाणीकरण",headlessAuthHelp:"ब्राउज़र को स्वतः खोलने के बजाय कंसोल में लॉगिन URL प्रिंट करें",noModelsLoaded:'अभी तक कोई मॉडल लोड नहीं हुआ। "बैकएंड से मॉडल लाएँ" पर क्लिक करें।',authFirstThenFetch:"पहले Copilot को प्रमाणित करें, फिर मॉडल लाएँ।",copilotUsageTitle:"GitHub Copilot का उपयोग करने के लिए:",copilotUsageStep1:"सुनिश्चित करें कि आपके पास सक्रिय GitHub Copilot सदस्यता है",copilotUsageStep2:'डिवाइस कोड प्रवाह प्रारंभ करने के लिए "प्रमाणीकृत Copilot" पर क्लिक करें',copilotUsageStep3:"प्रमाणीकरण पूरा करने के लिए अपने टर्मिनल में दिए गए निर्देशों का पालन करें",copilotAuthModalTitle:"Copilot प्रमाणीकरण",completedAuthorization:"मैंने प्राधिकरण पूरा कर लिया है",browserOpened:"ब्राउज़र अपने आप खुल गया",authStep1:"आपके ब्राउज़र में एक GitHub पेज खुल जाना चाहिए",authStep2:"नीचे दिए गए कोड को कॉपी करें और GitHub पेज पर पेस्ट करें",authStep3:'अधिकृत करने के लिए GitHub पर "जारी रखें" पर क्लिक करें',visitUrl:"1. इस URL पर जाएँ:",enterCode:"2. यह कोड दर्ज करें:",copied:"कॉपी किया गया!",copyCode:"कोड कॉपी करें",afterContinueHint:'GitHub पर "जारी रखें" पर क्लिक करने के बाद, नीचे "मैंने प्राधिकरण पूरा कर लिया है" बटन पर क्लिक करें।',retry:"पुनः प्रयास करें",authenticated:"प्रमाणीकृत",cancel:"रद्द करें",providerNames:{openai:"OpenAI",anthropic:"Anthropic",gemini:"Gemini",copilot:"Copilot"}},mcpTab:{statusGuideTitle:"स्थिति मार्गदर्शिका:",statusHelp:{connecting:"सर्वर प्रारंभ हो रहा है या पुनः कनेक्ट हो रहा है",ready:"सर्वर जुड़ा हुआ है और टूल सामान्य रूप से परोस रहा है",degraded:"सर्वर आंशिक रूप से उपलब्ध है; कुछ टूल विफल हो सकते हैं",stopped:"सर्वर नहीं चल रहा है",error:"सर्वर प्रारंभ करने में विफल रहा या रनटाइम त्रुटियों का सामना करना पड़ा"},statusLastError:"अंतिम त्रुटि: {{error}}",serverDeleted:"MCP सर्वर हटा दिया गया",deleteServerFailed:"MCP सर्वर को हटाने में विफल",connectedTo:"{{name}} से कनेक्टेड",connectServerFailed:"MCP सर्वर कनेक्ट करने में विफल",disconnected:"{{name}} डिस्कनेक्ट किया गया",disconnectServerFailed:"MCP सर्वर को डिस्कनेक्ट करने में विफल",toolsRefreshedFor:"{{name}} के लिए टूल ताज़ा किए गए",refreshToolsFailed:"टूल ताज़ा करने में विफल",statusRefreshed:"MCP स्थिति ताज़ा की गई",refreshStatusFailed:"MCP स्थिति ताज़ा करने में विफल",noServerForEditing:"संपादन के लिए कोई सर्वर चयनित नहीं",savedServer:"{{name}} सहेजा गया",addedServer:"{{name}} जोड़ा गया",saveServerFailed:"MCP सर्वर सहेजने में विफल",copiedConfig:"MCP कॉन्फिगरेशन को क्लिपबोर्ड पर कॉपी किया गया",clipboardUnavailable:"क्लिपबोर्ड उपलब्ध नहीं है. निर्यात को मोडल में दिखाया गया है।",invalidJsonPrefix:"अमान्य JSON",unknownError:"अज्ञात त्रुटि",jsonMustBeObject:"JSON एक ऑब्जेक्ट होना चाहिए",missingMcpServers:`'mcpServers' गुम है। पूर्ण क्लाउड डेस्कटॉप-शैली कॉन्फिग भाग चिपकाएँ: { "mcpServers": {... } }`,importSummary:"आयातित {{count}} सर्वर ({{added}} जोड़ा गया, {{updated}} अद्यतन किया गया, {{removed}} हटाया गया)। {{failed}} सर्वर प्रारंभ करने में विफल रहे।",importStartFailures:"कुछ सर्वर प्रारंभ नहीं हुए. कॉन्फ़िगरेशन सहेजा गया है; त्रुटियाँ देखने के लिए सर्वर सूची खोलें।",importFailed:"MCP सर्वर आयात करने में विफल",overviewTitle:"MCP अवलोकन",overviewDescription:"बाहरी MCP सर्वर कॉन्फ़िगर करें और पंजीकृत टूल उपनामों का निरीक्षण करें।",totalServers:"कुल सर्वर: {{count}}",totalTools:"कुल टूल: {{count}}",serversTitle:"MCP सर्वर",addServer:"सर्वर जोड़ें",refreshAll:"सभी को ताज़ा करें",importModalTitle:"MCP सर्वर आयात करें",importHint:"क्लाउड डेस्कटॉप-शैली कॉन्फिग भाग चिपकाएँ। उदाहरण:",importModeMerge:"मर्ज (अप्सर्ट)",importModeReplace:"बदलें (अन्य हटाएं)",replaceWarning:"रिप्लेसमेंट मोड मौजूदा MCP सर्वर को हटा देगा जो आयातित MCP सर्वर में मौजूद नहीं हैं।",status:{connecting:"कनेक्ट हो रहा है",ready:"तैयार",degraded:"डिग्रेडेड",stopped:"रुक गया",error:"एरर"},export:"निर्यात करें",import:"आयात करें"},mcpServerTable:{columns:{transportType:"ट्रांसपोर्ट प्रकार",toolCount:"टूल संख्या",name:"नाम",status:"स्थिति",actions:"कार्रवाई"},deleteTitle:"MCP सर्वर हटाएँ",deleteDescription:'सर्वर "{{name}}" हटाएं?',empty:"कोई MCP सर्वर कॉन्फ़िगर नहीं किया गया",actions:{refreshTools:"टूल ताज़ा करें",edit:"संपादित करें",delete:"हटाएँ",disconnect:"डिस्कनेक्ट करें",connect:"जोड़ें"},transportOptions:{sse:"SSE",stdio:"Stdio"}},mcpToolList:{title:"MCP टूल्स",selectServerHint:"इसके MCP टूल्स का निरीक्षण करने के लिए एक सर्वर का चयन करें",empty:"इस सर्वर के लिए कोई टूल्स नहीं मिले",noDescription:"कोई डिस्क्रिप्शन उपलब्ध नहीं",aliasMapping:"उपनाम मैपिंग",parametersSchema:"पैरामीटर स्कीमा"},mcpServerForm:{jsonMustBeObject:"JSON एक ऑब्जेक्ट होना चाहिए",detectedBulkConfig:"MCPसर्वर (बल्क कॉन्फ़िगरेशन) का पता लगाया गया। थोक आयात के लिए MCP टैब आयात बटन का उपयोग करें, या यहां एकल सर्वर कॉन्फ़िगरेशन पेस्ट करें।",missingIdField:"गुम या अमान्य आईडी फ़ील्ड",missingTransportField:"गुम या अमान्य परिवहन फ़ील्ड",missingTransportInfo:"परिवहन संबंधी जानकारी अनुपलब्ध. या तो ट्रांसपोर्ट (बोधि प्रारूप) या कमांड/URL (मुख्यधारा MCP प्रारूप) अपेक्षित है।",invalidJson:"अमान्य JSON: {{message}}",unknownError:"अज्ञात त्रुटि",editTitle:"MCP सर्वर संपादित करें",addTitle:"MCP सर्वर जोड़ें",jsonError:"JSON त्रुटि",serverId:"सर्वर ID",serverIdRequired:"सर्वर ID आवश्यक है",serverIdPatternError:"केवल अक्षरों, संख्याओं, अंडरस्कोर और हाइफ़न का उपयोग करें",displayName:"प्रदर्शित होने वाला नाम",enabledHelp:"अक्षम सर्वर कॉन्फ़िगरेशन में बने रहेंगे लेकिन प्रारंभ नहीं होंगे।",transportType:"ट्रांसपोर्ट प्रकार",transportTypeRequired:"ट्रांसपोर्ट प्रकार आवश्यक है",commandRequired:"कमांड आवश्यक है",argumentsPlaceholder:"एक तर्क जोड़ें और Enter दबाएँ",envVars:"एनवायरमेंट वेरिएबल",addEnv:"एनवायरमेंट वेरिएबल जोड़ें",keyRequired:"कुंजी आवश्यक है",sseUrl:"SSE URL",sseUrlRequired:"SSE URL आवश्यक है",validUrlRequired:"कृपया मान्य URL दर्ज करें",addHeader:"हेडर जोड़ें",headerNameRequired:"हेडर नाम आवश्यक है",save:"सहेजें",modeForm:"फॉर्म",modeJson:"JSON",enabled:"सक्रिय",transportOptions:{stdio:"Stdio",sse:"SSE"},command:"कमांड",arguments:"आर्ग्युमेंट्स",headers:"हेडर"},metricsCards:{totalSessions:"कुल सत्र",chatTokens:"चैट टोकन",totalToolCalls:"कुल टूल कॉल",avgSessionDuration:"औसत सत्र अवधि"},forwardMetricsCards:{totalForwardRequests:"कुल फॉरवर्ड अनुरोध",successRate:"सफलता दर",forwardTokens:"फॉरवर्ड टोकन",avgResponseTime:"औसत प्रतिक्रिया समय"},unifiedMetricsCards:{totalRequests:"कुल अनुरोध",totalTokens:"कुल टोकन",successRate:"सफलता दर",avgResponseTime:"औसत प्रतिक्रिया समय",chatSessions:"चैट सत्र",chatTokens:"चैट टोकन",toolCalls:"टूल कॉल",avgSessionDuration:"औसत सत्र अवधि",forwardRequests:"अग्रेषित अनुरोध",forwardTokens:"फॉरवर्ड टोकन",successful:"सफल",failed:"असफल"},metricsTable:{session:{columns:{toolCalls:"टूल कॉल",session:"सत्र",model:"मॉडल",status:"स्थिति",started:"शुरू कर दिया",duration:"अवधि",tokens:"टोकन",messages:"संदेश",action:"कार्रवाई"},view:"देखें"},forward:{totalRequests:"{{total}} अनुरोध",empty:"इस श्रेणी के लिए कोई फॉरवर्ड अनुरोध दर्ज नहीं किया गया",columns:{id:"ID",endpoint:"एंडपॉइंट",model:"मॉडल",type:"प्रकार",status:"स्थिति",tokens:"टोकन",duration:"अवधि",started:"शुरू कर दिया",error:"एरर"},typeStream:"स्ट्रीम",typeSync:"सिंक"}},metricsDashboard:{roundColumns:{toolCalls:"टूल कॉल",round:"राउंड",status:"स्थिति",duration:"अवधि",tokens:"टोकन"},compactStats:{combinedTokens:"संयुक्त टोकन",chatTokens:"चैट टोकन",forwardTokens:"फॉरवर्ड टोकन",avgTokensPerSession:"औसत टोकन/सत्र",estimatedTimeSaved:"Est. समय बचत",estimatedEfficiencyLift:"Est. दक्षता वृद्धि",estimatedSpeedMultiplier:"Est. गति गुणक",estimatedSavedWorkdays:"Est. बचत कार्यदिवस",avgRoundsPerSession:"औसत राउंड/सत्र",toolCallsPerSession:"टूल कॉल/सत्र",activeSessionRate:"सक्रिय सत्र दर",avgTokensPerForward:"औसत टोकन/फॉरवर्ड",forwardErrorRate:"फॉरवर्ड एरर रेट",streamingRatio:"स्ट्रीमिंग अनुपात",p95ForwardLatency:"P95 फॉरवर्ड विलंबता",modelCoverage:"मॉडल कवरेज",endpointCoverage:"एंडपॉइंट कवरेज"},startDate:"आरंभ करने की तिथि",endDate:"अंतिम तिथि",daysOption:"{{value}} दिन",derivedMetricsTitle:"व्युत्पन्न मेट्रिक्स (संक्षिप्त)",derivedMetricsSubtitle:"अतिरिक्त पृष्ठ लंबाई के बिना अधिक आयाम",efficiencyHint:"दक्षता अनुमान रूढ़िवादी मान्यताओं का उपयोग करते हैं: {{manualTpm}} मैनुअल टोकन/मिनट + {{manualToolMinutes}} मिनट/टूल बनाम {{assistedTpm}} सहायता प्राप्त टोकन/मिनट + {{assistedToolMinutes}} मिनट/टूल, फिर {{realization}}% प्राप्ति और कैप्स ({{maxLift}}% / {{maxMultiplier}}x) लागू करें।",toolUsageTitle:"उपकरण उपयोग आवृत्ति",noToolUsage:"इस श्रेणी के लिए कोई टूल कॉल रिकॉर्ड नहीं की गई।",activityHeatmapTitle:"दैनिक गतिविधि हीटमैप",noActivity:"इस श्रेणी के लिए कोई गतिविधि उपलब्ध नहीं है.",sessionsCount:"{{count}} सत्र",tokensAmount:"{{value}} टोकन",sessionsTabLabel:"सत्र ({{count}})",chatSessionsLabel:"चैट सत्र ({{count}})",sessionsHint:"पूरे दौर के डिस्क्रिप्शन के लिए एक सत्र पर क्लिक करें",forwardTabLabel:"फॉरवर्ड अनुरोध ({{count}})",detailedMetricsTitle:"विस्तृत मेट्रिक्स",sessionMetricsTitle:"सत्र मेट्रिक्स",loadingSessionDetails:"सत्र डिस्क्रिप्शन लोड हो रहा है...",sessionDetail:{sessionId:"सत्र आईडी",totalTokens:"कुल टोकन",toolCalls:"टूल कॉल",model:"मॉडल",status:"स्थिति",duration:"अवधि",messages:"संदेश"},noDetail:"कोई डिटेल उपलब्ध नहीं है",multiplierSuffix:"एक्स",filtersTitle:"फिल्टर",refresh:"ताज़ा करें",model:"मॉडल",granularity:{daily:"दैनिक",weekly:"साप्ताहिक",monthly:"मासिक"},dashboardTitle:"डैशबोर्ड",tabs:{overview:"अवलोकन",analysis:"विश्लेषण",records:"रिकॉर्ड्स"},calls:"कॉल"},charts:{tokenUsageOverTime:"समय के साथ टोकन का उपयोग",unifiedTokenUsageOverTime:"समय के साथ टोकन का उपयोग (चैट + फॉरवर्ड)",noTokenUsage:"कोई टोकन उपयोग उपलब्ध नहीं है",tokenUsageDescription:"दिन/अवधि के अनुसार प्रॉम्प्ट, कम्प्लीशन और कुल टोकन।",unifiedTokenUsageDescription:"समय के साथ संयुक्त चैट और फॉरवर्ड टोकन उपयोग।",modelDistribution:"मॉडल वितरण",noModelMetrics:"कोई मॉडल मेट्रिक्स उपलब्ध नहीं है",modelDistributionDescription:"मॉडल द्वारा उपभोग किए गए कुल टोकन का हिस्सा।",endpointDistribution:"एंडपॉइंट डिस्ट्रीब्यूशन",noForwardMetrics:"इस श्रेणी के लिए कोई फ़ॉरवर्ड मेट्रिक्स उपलब्ध नहीं है।",total:"कुल",prompt:"प्रॉम्प्ट",completion:"Completion",chat:"चैट",forward:"फॉरवर्ड"},page:{tabs:{mermaid:"Mermaid",mcp:"MCP"},groups:{ai:"AI"}}},components:{markdown:{codeCopiedSuccess:"कोड क्लिपबोर्ड पर कॉपी किया गया",copyFailed:"कॉपी विफल"},jsonSchema:{noProperties:"स्कीमा में कोई प्रॉपर्टी नहीं",field:"फ़ील्ड",type:"प्रकार",required:"आवश्यक",yes:"हाँ",no:"नहीं",default:"डिफ़ॉल्ट",description:"डिस्क्रिप्शन"},imageGrid:{ocr:"OCR"}}},he="lotus_ui_locale_v1",m="en-US",_=["en-US","zh-CN","zh-TW","fr-FR","ja-JP","hi-IN"],fe=e=>e?_.includes(e):!1,ve=()=>{var t;if(typeof window>"u")return m;try{const s=window.localStorage,i=s&&typeof s.getItem=="function"?s.getItem(he):null;if(fe(i))return i}catch{}const e=((t=window.navigator.language)==null?void 0:t.toLowerCase())??"";return e.startsWith("zh")?e.includes("tw")||e.includes("hk")||e.includes("mo")||e.includes("hant")?"zh-TW":"zh-CN":e.startsWith("fr")?"fr-FR":e.startsWith("ja")?"ja-JP":e.startsWith("hi")?"hi-IN":m},B=e=>!!e&&typeof e=="object"&&!Array.isArray(e),S=(e,t)=>{const s={...e};for(const[i,o]of Object.entries(t)){const a=s[i];if(B(a)&&B(o)){s[i]=S(a,o);continue}s[i]=o}return s},ye=e=>({...e,app:{...e.app,loading:"Chargement...",retry:"Réessayer",backendNotReachable:"Le back-end est inaccessible à {{baseUrl}} (dernière erreur : {{message}})"},chat:{...e.chat,sidebar:{...e.chat.sidebar,newSession:"Nouvelle session",empty:{noSessions:"Pas encore de sessions",hint:'Cliquez sur "Nouvelle session" pour commencer'},dateGroups:{today:"Aujourd'hui",yesterday:"Hier",thisWeek:"Cette semaine",thisMonth:"Ce mois-ci",pinned:"Épinglé",scheduled:"Planifié"},actions:{collapseChildren:"Réduire les sessions enfants",expandChildren:"Développer les sessions enfants"}}},settings:{...e.settings,page:{...e.settings.page,back:"Retour",title:"Paramètres système",tabs:{...e.settings.page.tabs,config:"Configuration",prompts:"Prompts",mermaid:"Mermaid",skills:"Compétences",workflows:"Flux de travail",mcp:"MCP",modelLimits:"Limites des modèles",metrics:"Métriques",schedules:"Planifications",sessions:"Sessions",app:"Application",provider:"Fournisseur",hooks:"Hooks",masking:"Masquage"},groups:{...e.settings.page.groups,ai:"IA",toolsAndExtensions:"Outils & Extensions",securityAndPrivacy:"Sécurité",monitoring:"Surveillance",system:"Système"}},notifications:{...e.settings.notifications,deleteAllSuccess:"Toutes les sessions ont été supprimées (hors épinglées)",deleteEmptySuccess:"Les sessions vides ont été supprimées (hors épinglées)",localStorageCleared:"Le stockage local a été effacé",resetSuccessReloading:"Réinitialisation de l'application réussie. Rechargement...",resetFailed:"Échec de la réinitialisation de l'application",promptEnhancementSaved:"Amélioration du prompt système enregistrée"},configTab:{...e.settings.configTab,loadConfigFailed:"Échec du chargement de la configuration",invalidConfig:"Configuration invalide",saveConfigSuccess:"Configuration enregistrée avec succès",saveConfigFailed:"Échec de l'enregistrement de la configuration",backendSaved:"URL du back-end enregistrée",backendResetDefault:"URL du back-end rétablie par défaut",providerMovedTitle:"Configuration du fournisseur déplacée",providerMovedDescription:"Les paramètres GitHub Copilot et d'autres fournisseurs ont été déplacés vers l'onglet Paramètres fournisseur. Configurez-les là-bas.",backendApiBaseUrlTitle:"URL de base de l'API du back-end",backendApiHint:"Doit inclure le chemin /v1",resetToDefault:"Rétablir les valeurs par défaut",save:"Enregistrer",language:"Langue",languageEnglish:"Anglais",languageChinese:"Chinois simplifié",languageTraditionalChinese:"Chinois traditionnel",languageFrench:"Français",languageJapanese:"Japonais",languageHindi:"Hindi"},appTab:{...e.settings.appTab,switchOn:"ACTIVÉ",switchOff:"DÉSACTIVÉ",darkMode:"Mode sombre",darkModeDark:"Sombre",darkModeLight:"Clair",language:"Langue",languageEnglish:"Anglais",languageChinese:"Chinois simplifié",languageTraditionalChinese:"Chinois traditionnel",languageFrench:"Français",languageJapanese:"Japonais",languageHindi:"Hindi",deleteAllTitle:"Supprimer toutes les sessions",deleteAllDescription:"Voulez-vous continuer ? Cette action supprimera toutes les sessions, sauf celles épinglées.",deleteAllButton:"Supprimer toutes les sessions",deleteEmptyTitle:"Supprimer les sessions vides",deleteEmptyDescription:"Voulez-vous continuer ? Cette action supprimera toutes les sessions sans message (hors sessions épinglées).",deleteEmptyButton:"Supprimer les sessions vides",clearLocalStorageTitle:"Effacer le stockage local",clearLocalStorageDescription:"Voulez-vous continuer ? Cette action supprimera toutes les données locales et réinitialisera l'application.",clearLocalStorageButton:"Effacer le stockage local",confirmDeleteAll:"Oui, tout supprimer",confirmDeleteEmpty:"Oui, supprimer les vides",confirmClear:"Oui, effacer",cancel:"Annuler",dangerZone:"Zone dangereuse",dangerDescription:"Ces actions sont irréversibles. Toutes les données seront supprimées définitivement.",resetApplicationTitle:"Réinitialiser l'application",resetApplicationIntro:"Voulez-vous continuer ? Cette action va :",resetStepDeleteAllSessions:"Supprimer TOUTES les sessions (y compris les épinglées)",resetStepClearStorage:"Effacer toutes les données du stockage local",resetStepResetConfig:"Réinitialiser config.json aux valeurs par défaut",resetStepSetupFlow:"Relancer l'assistant de configuration au prochain démarrage",resetStepReload:"Recharger l'application",resetConfirm:"Oui, tout réinitialiser",resetButton:"Réinitialiser l'application (toutes les données)",runningVersion:"Version en cours",runningVersionDesc:"Il s'agit de la version frontend Lotus actuellement en cours d'exécution."},networkCard:{...e.settings.networkCard,title:"Paramètres réseau",httpProxy:"Proxy HTTP",httpsProxy:"Proxy HTTPS",proxyAuthTitle:"Authentification du proxy",proxyConfiguredForUser:"Configuré pour l'utilisateur : {{username}}",clearCredentials:"Effacer les identifiants",username:"Nom d'utilisateur",password:"Mot de passe",apply:"Appliquer",credentialsStorageNote:"Les identifiants du proxy sont stockés de façon chiffrée dans ~/.bamboo/config.json",reload:"Recharger",save:"Enregistrer"},modelMappingCard:{...e.settings.modelMappingCard,loadProviderFailed:"Échec du chargement de la configuration du fournisseur",loadMappingsFailed:"Échec du chargement des mappages existants",loadModelsFailed:"Échec du chargement des modèles",loadModelsHint:"Impossible de charger les modèles. Vérifiez la configuration du fournisseur.",mappingSaved:"Mappage de modèle enregistré",mappingSaveFailed:"Échec de l'enregistrement du mappage de modèle",enterModelName:"Veuillez saisir un nom de modèle",customMappingSaved:"Mappage de modèle personnalisé enregistré",customMappingSaveFailed:"Échec de l'enregistrement du mappage de modèle personnalisé",collapseTitle:"Mappage de modèles Anthropic",description:"Configurez les modèles {{provider}} à utiliser lorsque Claude CLI demande des modèles spécifiques.",loadModelsErrorTitle:"Échec du chargement des modèles",retry:"Réessayer",loadingModels:"Chargement des modèles...",modelTypeOpusDescription:'correspond aux modèles contenant "opus"',modelTypeSonnetDescription:'correspond aux modèles contenant "sonnet"',modelTypeHaikuDescription:'correspond aux modèles contenant "haiku"',selectModelPlaceholder:"Sélectionner le modèle {{label}}",customModelOption:"Modèle personnalisé...",mappedModelNotFound:'Le modèle mappé "{{model}}" est introuvable dans les modèles disponibles du fournisseur actuel',refreshModels:"Actualiser les modèles",currentProvider:"Fournisseur actuel",loadingProvider:"Chargement...",availableModels:"Modèles disponibles",cached:"(en cache)",storedIn:"Enregistré dans",customModalTitle:"Saisir un nom de modèle personnalisé",customModalDescription:"Saisissez un nom de modèle personnalisé pour {{modelType}}",customModalPlaceholder:"ex. : gpt-4-turbo-preview",customModalNote:"Note : assurez-vous que ce nom de modèle est valide pour le fournisseur actuel.",save:"Enregistrer",cancel:"Annuler"},modelTab:{...e.settings.modelTab,selectModelTitle:"Sélectionner un modèle",loadingModels:"Chargement des modèles...",selectModelPlaceholder:"Sélectionner un modèle",backendApiBaseUrlTitle:"URL de base de l'API du back-end",resetToDefault:"Rétablir les valeurs par défaut",save:"Enregistrer",backendApiHint:"Doit être une URL de base complète incluant /v1 (ex. {{example}})."},common:{...e.settings.common,loading:"Chargement...",successful:"Réussi",failed:"Échec"},promptsTab:{...e.settings.promptsTab,title:"Amélioration du prompt système",mermaidEnhancement:"Amélioration Mermaid",taskListRules:"Règles de tâches partagées",copilotConclusionWithOptionsBeforeFinish:"Copilot conclusion_with_options avant de terminer",switchOn:"ACTIVÉ",switchOff:"DÉSACTIVÉ",enhancementPlaceholder:"Ajoutez un texte d'amélioration global à ajouter à chaque prompt système.",saveEnhancement:"Enregistrer l'amélioration",description:"Ce texte est ajouté en premier, suivi des améliorations système activées, avant l'envoi de chaque requête."},hooksTab:{...e.settings.hooksTab,title:"Hooks d'images",enableImagePreflight:"Activer le hook de pré-vérification d'image",modeLabel:"Mode",description:"Le mode Placeholder réécrit les images en résumés textuels (cela peut perturber les outils qui attendent de vraies données d'image). L'OCR est actuellement disponible uniquement sous Windows.",loadFailed:"Échec du chargement des paramètres de hooks",updateFailed:"Échec de la mise à jour des hooks",modeUpdateFailed:"Échec de la mise à jour du mode de hook",enabled:"Hooks d'image activés",disabled:"Hooks d'image désactivés",modeUpdated:"Mode du hook d'image défini sur : {{mode}}",mode:{...e.settings.hooksTab.mode,error:"Erreur"}},keywordMaskingTab:{...e.settings.keywordMaskingTab,title:"Masquage de mots-clés",addKeyword:"Ajouter un mot-clé",description:"Configurez les mots-clés à masquer avant l'envoi vers l'API Copilot. Utilisez une correspondance exacte pour les chaînes littérales ou des regex pour les motifs. Toutes les correspondances seront remplacées par [MASKED].",empty:"Aucune règle de masquage de mots-clés configurée",cancel:"Annuler",patternPlaceholder:"Saisissez un motif à rechercher",examples:"Exemples",exactMatch:"Correspondance exacte",regexPattern:"Motif regex",enabled:"Activé",disabled:"Désactivé",sampleText:"Texte d'exemple",sampleTextPlaceholder:"Saisissez un texte d'exemple",maskedPreview:"Aperçu du masquage",emptyPattern:"(vide)",loadFailed:"Échec du chargement de la configuration de masquage de mots-clés",saveFailed:"Échec de l'enregistrement de la configuration",saveSuccess:"Configuration de masquage de mots-clés enregistrée",validationFailedPrefix:"Échec de validation",patternRequired:"Le motif ne peut pas être vide",example:{...e.settings.keywordMaskingTab.example,literalToken:"Masquer un jeton littéral",githubTokens:"Masquer les jetons GitHub",awsKeys:"Masquer les clés AWS",emails:"Masquer les adresses e-mail"}},workflowsTab:{...e.settings.workflowsTab,title:"Flux de travail",description:"Les workflows sont stockés dans `~/.bamboo/workflows` sous forme de fichiers Markdown. Utilisez `/nom` pour insérer un workflow dans le chat.",loadFailed:"Échec du chargement des flux de travail",loadContentFailed:"Échec du chargement du contenu du flux",invalidName:"Nom de flux invalide",nameAlreadyExists:"Un flux avec ce nom existe déjà",saved:"Flux de travail enregistré",saveFailed:"Échec de l'enregistrement du flux de travail",deleted:"Flux de travail supprimé",deleteFailed:"Échec de la suppression du flux de travail",refresh:"Actualiser",newWorkflow:"Nouveau flux",save:"Enregistrer",empty:"Aucun flux de travail trouvé",namePlaceholder:"Nom du flux",contentPlaceholder:`# Titre du flux
|
|
5
5
|
|
|
6
|
-
Décrivez ici les étapes du flux de travail.`},mermaidTab:{...e.settings.mermaidTab,title:"Paramètres des diagrammes Mermaid",description:"Personnalisez le rendu des diagrammes Mermaid dans vos conversations",themeCardTitle:"Thème",themeLabel:"Thème Mermaid",themeTooltip:"Choisissez un thème Mermaid intégré. Les thèmes Default et Neutral basculent automatiquement selon le thème clair/sombre de l'application.",themeOptions:{...e.settings.mermaidTab.themeOptions,default:"Par défaut (clair/sombre auto)",neutral:"Neutre (clair/sombre auto)",dark:"Sombre",forest:"Forêt (tons verts)",base:"Base (minimal)"},themeDescriptionsTitle:"Descriptions des thèmes :",themeDescriptions:{...e.settings.mermaidTab.themeDescriptions,default:"Par défaut : apparence Mermaid classique, s'adapte automatiquement au clair/sombre",neutral:"Neutre : tons gris, s'adapte automatiquement au clair/sombre",dark:"Sombre : thème sombre permanent",forest:"Forêt : palette verte, adaptée aux diagrammes techniques",base:"Base : style minimal, pour un thème personnalisé"},globalCardTitle:"Paramètres globaux",fontSizeLabel:"Taille de police",fontSizeTooltip:"Taille de police de base pour tout le texte du diagramme (en pixels)",defaultZoomLabel:"Zoom par défaut",defaultZoomTooltip:"Niveau de zoom initial des diagrammes (1,0 = 100 %)",responsiveWidthLabel:"Largeur adaptative",responsiveWidthTooltip:"Active l'adaptation du diagramme à la largeur du conteneur. Désactivez pour une largeur fixe.",switchAuto:"Auto",switchFixed:"Fixe",flowchartCardTitle:"Paramètres du diagramme de flux",flowchartNodeSpacingLabel:"Espacement des nœuds",flowchartNodeSpacingTooltip:"Espacement horizontal entre les nœuds",flowchartRankSpacingLabel:"Espacement des niveaux",flowchartRankSpacingTooltip:"Espacement vertical entre les couches",flowchartCurveTypeLabel:"Type de courbe",flowchartCurveTypeTooltip:"Type de courbe pour les connexions",flowchartCurveOptions:{...e.settings.mermaidTab.flowchartCurveOptions,basis:"Lisse (Basis)",linear:"Linéaire",cardinal:"Cardinal"},sequenceCardTitle:"Paramètres des diagrammes de séquence",sequenceActorMarginLabel:"Marge des acteurs",sequenceActorMarginTooltip:"Espacement entre les acteurs",sequenceMessageMarginLabel:"Marge des messages",sequenceMessageMarginTooltip:"Espacement entre les messages",sequenceActorWidthLabel:"Largeur des acteurs",sequenceActorWidthTooltip:"Largeur de chaque bloc d'acteur",sequenceActorHeightLabel:"Hauteur des acteurs",sequenceActorHeightTooltip:"Hauteur de chaque bloc d'acteur",ganttCardTitle:"Paramètres du diagramme de Gantt",ganttBarHeightLabel:"Hauteur des barres",ganttBarHeightTooltip:"Hauteur de chaque barre de tâche",ganttTopPaddingLabel:"Marge supérieure",ganttTopPaddingTooltip:"Espace en haut du graphique",resetToDefaults:"Rétablir les valeurs par défaut",previewTitle:"Aperçu",previewDescription:"Les changements sont appliqués immédiatement. Créez ou ouvrez un diagramme pour voir le résultat."},modelLimits:{...e.settings.modelLimits,title:"Limites de modèles (budget de tokens)",descriptionPrefix:"Remplacez le budget de tokens pour des modèles spécifiques ; tout modèle non remplacé utilise la valeur par défaut globale.",descriptionSuffix:"Enregistré globalement et utilisé par le résolveur du back-end.",loadFailed:"Échec du chargement des limites de modèles",saveSuccess:"Limites de modèles enregistrées",saveFailed:"Échec de l'enregistrement des limites de modèles",resetSuccess:"Limites réinitialisées — chaque modèle utilise désormais la valeur par défaut globale",resetFailed:"Échec de la réinitialisation des limites de modèles",defaultsTitle:"Modèles que vous avez utilisés",defaultsDescription:"Les modèles apparaissent ici une fois sélectionnés et utilisés. Chacun utilise la valeur par défaut globale jusqu'à personnalisation.",globalDefault:"Valeur par défaut globale : {{context}} contexte / {{output}} tokens de sortie.",emptyState:"Aucun modèle pour l'instant. Les modèles utilisés en chat apparaîtront ici automatiquement.",badge:{...e.settings.modelLimits.badge,default:"Par défaut · inchangé",defaultTooltip:"Utilise la valeur par défaut globale. Les lignes inchangées suivent les futures mises à jour.",customized:"Personnalisé"},columns:{...e.settings.modelLimits.columns,model:"Modèle",contextWindow:"Fenêtre de contexte",maxOutput:"Sortie maximale",safetyMargin:"Marge de sécurité",status:"Statut",actions:"Actions"},placeholders:{...e.settings.modelLimits.placeholders,model:"p. ex. gpt-4o",optional:"Optionnel"},actions:{...e.settings.modelLimits.actions,customize:"Personnaliser",revert:"Réinitialiser",remove:"Supprimer",addModel:"Ajouter un modèle",save:"Enregistrer",resetToDefaults:"Tout réinitialiser",reload:"Recharger"},validation:{...e.settings.modelLimits.validation,modelPatternEmpty:"Le motif du modèle ne peut pas être vide.",duplicateModelPattern:"Motif de modèle dupliqué : {{pattern}}",contextWindowMin:"La fenêtre de contexte pour {{pattern}} doit être d'au moins 1000.",maxOutputMin:"La sortie maximale pour {{pattern}} doit être d'au moins 1.",maxOutputExceedsContext:"La sortie maximale pour {{pattern}} doit être inférieure ou égale à la fenêtre de contexte.",safetyMarginNegative:"La marge de sécurité pour {{pattern}} ne peut pas être négative.",safetyMarginTooLarge:"La marge de sécurité pour {{pattern}} doit être inférieure à la fenêtre de contexte."}},schedulesTab:{...e.settings.schedulesTab,loadFailed:"Échec du chargement des planifications",loadSessionsFailed:"Échec du chargement des sessions de planification",createFailed:"Échec de la création de la planification",updateFailed:"Échec de la mise à jour de la planification",deleteFailed:"Échec de la suppression de la planification",runNowFailed:"Échec de l'exécution immédiate de la planification",taskMessageRequired:"Le message de tâche est requis lorsque l'exécution automatique est activée",created:"Planification créée",updated:"Planification mise à jour",deleted:"Planification supprimée",enqueuedRun:"Exécution mise en file d'attente",loading:"Chargement...",yes:"Oui",no:"Non",optional:"(optionnel)",defaultName:"Ma tâche planifiée",createTitle:"Créer une planification",listTitle:"Tâches planifiées",scheduleSessionsTitle:"Sessions planifiées",noSessionsYet:"Aucune session pour le moment.",editTitle:"Modifier la planification",columns:{...e.settings.schedulesTab.columns,name:"Nom",autoExecute:"Exécution automatique",model:"Modèle",enabled:"Activé",intervalSeconds:"Intervalle (s)",nextRun:"Prochaine exécution",lastRun:"Dernière exécution",actions:"Actions"},form:{...e.settings.schedulesTab.form,name:"Nom",triggerType:"Type de déclencheur",intervalSeconds:"Intervalle (secondes)",dailyHour:"Heure",dailyMinute:"Minute",weeklyWeekdays:"Jours de la semaine",monthlyDays:"Jours du mois",monthlyDaysPlaceholder:"ex. 1, 15, 28",cronExpr:"Expression Cron",cronExprPlaceholder:"ex. 0 9 * * 1-5",timezone:"Fuseau horaire",timezonePlaceholder:"ex. Europe/Paris",startAt:"Date de début",endAt:"Date de fin",datetimePlaceholder:"Format RFC3339, ex. 2026-04-05T09:00:00Z",misfirePolicy:"Politique de retard",overlapPolicy:"Politique de chevauchement",catchUpWindowMaxRuns:"Rattrapage max exécutions",catchUpWindowMaxLatenessSeconds:"Rattrapage max retard (s)",enabled:"Activé",taskMessage:"Consigne de tâche",taskMessagePlaceholder:"(Optionnel) Consigne à exécuter",model:"Modèle",modelPlaceholder:"(Optionnel) ex. gpt-4o-mini",modelRequiredIfAuto:"Requis si l'exécution automatique est activée",autoExecute:"Exécution automatique",systemPrompt:"Prompt système",workspacePath:"Chemin de l'espace de travail",enhancePrompt:"Améliorer le prompt"},validation:{...e.settings.schedulesTab.validation,nameRequired:"Le nom est requis",triggerRequired:"Le déclencheur est requis",intervalRequired:"L'intervalle est requis",weekdaysRequired:"Sélectionnez au moins un jour",monthDaysRequired:"Sélectionnez au moins un jour du mois",invalidMonthDays:"Les jours du mois doivent être des valeurs 1-31 séparées par des virgules",cronRequired:"L'expression Cron est requise"},triggerLabels:{interval:"Toutes les {{seconds}} secondes",daily:"Chaque jour à {{time}}",weekly:"Chaque semaine {{weekdays}} à {{time}}",monthly:"Chaque mois le {{days}} à {{time}}",cron:"Cron : {{expression}}"},misfirePolicyOptions:{runOnce:"Exécuter une fois",skip:"Ignorer",catchUpAll:"Rattraper tout",catchUpWindow:"Fenêtre de rattrapage"},overlapPolicyOptions:{queueOne:"Mettre en file d'attente",skip:"Ignorer les chevauchements",allow:"Autoriser le chevauchement"},runHistory:{columns:{status:"Statut",scheduledFor:"Planifié pour",startedAt:"Début",completedAt:"Fin",session:"Session",duration:"Durée",outcome:"Résultat"}},actions:{...e.settings.schedulesTab.actions,create:"Créer",refresh:"Actualiser",edit:"Modifier",runNow:"Exécuter maintenant",sessions:"Sessions",delete:"Supprimer",open:"Ouvrir",save:"Enregistrer"}},sessionsTab:{...e.settings.sessionsTab,currentSessionTitle:"Session actuelle",id:"id",kind:"type",clearMessages:"Effacer les messages",clearMessagesTitle:"Effacer les messages de session",clearMessagesContent:"Cette action efface les messages/pièces jointes de la session actuelle, tout en conservant l'entrée de session.",clear:"Effacer",cancel:"Annuler",sessionCleared:"Session effacée",noActiveSession:"Aucune session active.",bulkCleanupTitle:"Nettoyage en lot",keepPinned:"Conserver les épinglées",deleteAll:"Supprimer tout",deleteAllTitle:"Supprimer toutes les sessions",deleteAllKeepPinned:"Supprime toutes les sessions sauf celles épinglées.",deleteAllIncludePinned:"Supprime toutes les sessions, y compris les épinglées.",deleteEmpty:"Supprimer les vides",deleteEmptyTitle:"Supprimer les sessions vides",deleteEmptyKeepPinned:"Supprime les sessions vides sauf celles épinglées.",deleteEmptyIncludePinned:"Supprime les sessions vides, y compris les épinglées.",deleteChildren:"Supprimer les enfants",deleteChildrenTitle:"Supprimer les sessions enfants",deleteChildrenKeepPinned:"Supprime toutes les sessions enfants sauf celles épinglées.",deleteChildrenIncludePinned:"Supprime toutes les sessions enfants, y compris les épinglées.",delete:"Supprimer",cleanupComplete:"Nettoyage terminé",devResetTitle:"Réinitialisation de développement",devResetDescription:"Réinitialisation complète du stockage des sessions (supprime sessions/ et réinitialise sessions.json).",devResetAction:"Réinitialiser les sessions (dev)",devResetConfirmTitle:"Réinitialiser le stockage des sessions (dev)",devResetConfirmContent:"Cette action supprime TOUTES les sessions (y compris épinglées/enfants) et réinitialise l'index des sessions. Une nouvelle session vide sera créée après rafraîchissement.",reset:"Réinitialiser",devResetDone:"Stockage des sessions réinitialisé"},providerTab:{...e.settings.providerTab,title:"Configuration du fournisseur LLM",description:"Configurez votre fournisseur LLM préféré. La configuration est enregistrée et appliquée lorsque vous cliquez sur Enregistrer et appliquer la configuration.",currentProvider:"Fournisseur actuel",activeProvider:"Fournisseur LLM actif",selectProviderRequired:"Veuillez sélectionner un fournisseur",saveAndApply:"Enregistrer et appliquer la configuration",loadConfigFailed:"Échec du chargement de la configuration du fournisseur",checkStatusFailed:"Échec de la vérification du statut",startCopilotAuthFailed:"Échec du démarrage de l'authentification Copilot",copilotAuthSuccess:"Authentification Copilot réussie !",providerReloaded:"Fournisseur rechargé avec la nouvelle authentification.",completeAuthFailed:"Échec de la finalisation de l'authentification. Veuillez réessayer.",userCodeCopied:"Code utilisateur copié dans le presse-papiers !",copyCodeFailedPrefix:"Échec de la copie du code. Veuillez copier manuellement :",logoutSuccess:"Déconnecté de Copilot",logoutFailed:"Échec de la déconnexion de Copilot",unknownError:"Erreur inconnue",invalidConfig:"Configuration invalide",invalidConfigPrefix:"Configuration invalide",fetchModelsCopilotFailed:"Échec de la récupération des modèles. Authentifiez Copilot puis réessayez.",fetchModelsFailed:"Échec de la récupération des modèles. Vérifiez votre clé API et l'URL de base.",noModelsReturned:"Aucun modèle renvoyé. Authentifiez d'abord Copilot, puis récupérez les modèles.",foundModels:"{{count}} modèles disponibles trouvés",fetchModelsErrorPrefix:"Échec de la récupération des modèles",saveConfigSuccess:"Configuration enregistrée avec succès",saveConfigFailed:"Échec de l'enregistrement de la configuration",saveConfigErrorPrefix:"Échec de l'enregistrement de la configuration",applyConfigSuccess:"Configuration appliquée avec succès. Les changements prendront effet pour les nouvelles conversations.",applyConfigFailed:"Échec de l'application de la configuration",applyConfigErrorPrefix:"Échec de l'application de la configuration",modelUpdated:"Modèle mis à jour avec succès",updateModelFailed:"Échec de la mise à jour du modèle",updateModelErrorPrefix:"Échec de la mise à jour du modèle",fetchingModels:"Récupération des modèles...",refreshModelsFrom:"Actualiser les modèles disponibles depuis {{source}}",fetchModelsFrom:"Récupérer les modèles disponibles depuis {{source}}",saveModelChangeFailed:"Échec de l'enregistrement du changement de modèle",fetchModelsFailedShort:"Échec de la récupération des modèles",retry:"Réessayer",openaiConfigTitle:"Configuration OpenAI",openaiConfigDescription:"Saisissez votre clé API OpenAI pour utiliser les modèles GPT. Vous pouvez aussi spécifier une URL de base personnalisée pour les proxys.",openaiApiKey:"Clé API OpenAI",openaiApiKeyRequired:"Veuillez saisir votre clé API OpenAI",baseUrlOptional:"URL de base (optionnel)",openaiBaseUrlHelp:"Laissez vide pour utiliser le point de terminaison API OpenAI par défaut. Incluez le chemin complet (ex. /v1) si nécessaire.",defaultModel:"Modèle par défaut",selectModelRequired:"Veuillez sélectionner un modèle",selectModel:"Sélectionner un modèle",responsesOnlyModelsOptional:"Modèles API Responses uniquement (optionnel)",responsesOnlyHelp1:"Certains modèles ne prennent en charge que l'API OpenAI Responses (pas chat/completions). Ajoutez ici des ID de modèles pour forcer Bamboo à utiliser l'API en amont.",responsesOnlyHelp2:"Prend en charge la correspondance exacte (ex. gpt-5.3-codex) et la correspondance par préfixe avec * final (ex. gpt-5*).",anthropicConfigTitle:"Configuration Anthropic",anthropicConfigDescription:"Saisissez votre clé API Anthropic pour utiliser les modèles Claude.",anthropicApiKey:"Clé API Anthropic",anthropicApiKeyRequired:"Veuillez saisir votre clé API Anthropic",anthropicBaseUrlHelp:"Laissez vide pour utiliser le point de terminaison API Anthropic par défaut. Incluez le chemin complet (ex. /v1) si nécessaire.",maxTokensOptional:"Tokens max (optionnel)",maxTokensHelp:"Nombre maximal de tokens à générer",geminiConfigTitle:"Configuration Google Gemini",geminiConfigDescription:"Saisissez votre clé API Google AI pour utiliser les modèles Gemini.",geminiApiKey:"Clé API Gemini",geminiApiKeyRequired:"Veuillez saisir votre clé API Gemini",geminiBaseUrlHelp:"Laissez vide pour utiliser le point de terminaison API Google AI par défaut. Incluez le chemin complet si nécessaire.",copilotConfigTitle:"Configuration GitHub Copilot",copilotConfigDescription:"GitHub Copilot utilise l'authentification OAuth. Aucune clé API n'est requise. Assurez-vous d'avoir un abonnement GitHub Copilot actif.",authStatusTitle:"Statut d'authentification",authenticated:"Authentifié",notAuthenticated:"Non authentifié",logoutCopilot:"Se déconnecter de Copilot",authenticateCopilot:"Authentifier Copilot",refreshStatus:"Actualiser le statut",headlessAuth:"Authentification sans interface",headlessAuthHelp:"Affiche l'URL de connexion dans la console au lieu d'ouvrir automatiquement le navigateur",noModelsLoaded:"Aucun modèle n'est encore chargé. Cliquez sur Récupérer les modèles disponibles depuis le back-end.",authFirstThenFetch:"Authentifiez d'abord Copilot, puis récupérez les modèles.",copilotUsageTitle:"Pour utiliser GitHub Copilot :",copilotUsageStep1:"Vérifiez que vous disposez d'un abonnement GitHub Copilot actif",copilotUsageStep2:"Cliquez sur Authentifier Copilot pour démarrer le flux de code appareil",copilotUsageStep3:"Suivez les instructions dans votre terminal pour finaliser l'authentification",copilotAuthModalTitle:"Authentification Copilot",cancel:"Annuler",completedAuthorization:"J'ai terminé l'autorisation",browserOpened:"Navigateur ouvert automatiquement",authStep1:"Une page GitHub devrait s'être ouverte dans votre navigateur",authStep2:"Copiez le code ci-dessous puis collez-le sur la page GitHub",authStep3:"Cliquez sur Continuer sur GitHub pour autoriser",visitUrl:"1. Ouvrez cette URL :",enterCode:"2. Saisissez ce code :",copied:"Copié !",copyCode:"Copier le code",afterContinueHint:"Après avoir cliqué sur Continuer sur GitHub, cliquez sur le bouton J'ai terminé l'autorisation ci-dessous.",providerNames:{...e.settings.providerTab.providerNames,openai:"OpenAI",anthropic:"Anthropic",gemini:"Gemini",copilot:"Copilot"}},mcpTab:{...e.settings.mcpTab,status:{...e.settings.mcpTab.status,connecting:"Connexion",ready:"Prêt",degraded:"Dégradé",stopped:"Arrêté",error:"Erreur"},statusGuideTitle:"Guide des statuts :",statusLastError:"Dernière erreur : {{error}}",serverDeleted:"Serveur MCP supprimé",deleteServerFailed:"Échec de la suppression du serveur MCP",connectedTo:"Connecté à {{name}}",connectServerFailed:"Échec de la connexion au serveur MCP",disconnected:"Déconnecté de {{name}}",disconnectServerFailed:"Échec de la déconnexion du serveur MCP",toolsRefreshedFor:"Outils actualisés pour {{name}}",refreshToolsFailed:"Échec d'actualisation des outils",statusRefreshed:"Statut MCP actualisé",refreshStatusFailed:"Échec d'actualisation du statut MCP",noServerForEditing:"Aucun serveur sélectionné pour édition",savedServer:"{{name}} enregistré",addedServer:"{{name}} ajouté",saveServerFailed:"Échec de l'enregistrement du serveur MCP",copiedConfig:"Configuration MCP copiée dans le presse-papiers",clipboardUnavailable:"Presse-papiers indisponible. L'export est affiché dans la fenêtre.",invalidJsonPrefix:"JSON invalide",unknownError:"Erreur inconnue",jsonMustBeObject:"Le JSON doit être un objet",missingMcpServers:'Champ "mcpServers" manquant. Collez un bloc de configuration complet de style Claude Desktop : { "mcpServers": { ... } }',importSummary:"{{count}} serveur(s) importé(s) ({{added}} ajoutés, {{updated}} mis à jour, {{removed}} supprimés). {{failed}} échec(s) de démarrage.",importStartFailures:"Certains serveurs n'ont pas démarré. La configuration est enregistrée ; ouvrez la liste des serveurs pour voir les erreurs.",importFailed:"Échec de l'import des serveurs MCP",overviewTitle:"Vue d'ensemble MCP",overviewDescription:"Configurez des serveurs MCP externes et inspectez les alias d'outils enregistrés.",totalServers:"Total des serveurs : {{count}}",totalTools:"Total des outils : {{count}}",serversTitle:"Serveurs MCP",addServer:"Ajouter un serveur",refreshAll:"Tout actualiser",export:"Exporter",import:"Importer",importModalTitle:"Importer des serveurs MCP",importHint:"Collez un bloc de configuration style Claude Desktop. Exemple :",importModeMerge:"Fusionner (upsert)",importModeReplace:"Remplacer (supprimer les autres)",replaceWarning:"Le mode remplacement supprimera les serveurs MCP existants absents de la configuration mcpServers importée."},mcpServerTable:{...e.settings.mcpServerTable,columns:{...e.settings.mcpServerTable.columns,name:"Nom",transportType:"Type de transport",status:"Statut",toolCount:"Nombre d'outils",actions:"Actions"},transportOptions:{...e.settings.mcpServerTable.transportOptions,sse:"SSE",stdio:"Stdio"},deleteTitle:"Supprimer le serveur MCP",deleteDescription:"Supprimer le serveur {{name}} ?",empty:"Aucun serveur MCP configuré",actions:{...e.settings.mcpServerTable.actions,edit:"Modifier",delete:"Supprimer",disconnect:"Déconnecter",connect:"Connecter",refreshTools:"Actualiser les outils"}},mcpToolList:{...e.settings.mcpToolList,title:"Outils MCP",selectServerHint:"Sélectionnez un serveur pour inspecter ses outils MCP",empty:"Aucun outil trouvé pour ce serveur",noDescription:"Aucune description disponible",aliasMapping:"Mappage d'alias",parametersSchema:"Schéma des paramètres"},mcpServerForm:{...e.settings.mcpServerForm,jsonMustBeObject:"Le JSON doit être un objet",detectedBulkConfig:"Champ mcpServers détecté (configuration groupée). Utilisez le bouton Importer de l'onglet MCP pour un import groupé, ou collez ici la configuration d'un seul serveur.",missingIdField:"Champ id manquant ou invalide",missingTransportField:"Champ transport manquant ou invalide",missingTransportInfo:"Informations de transport manquantes. Attendu : transport (format Bodhi) ou commande/url (format MCP standard).",invalidJson:"JSON invalide : {{message}}",unknownError:"Erreur inconnue",editTitle:"Modifier le serveur MCP",addTitle:"Ajouter un serveur MCP",save:"Enregistrer",modeForm:"Formulaire",modeJson:"JSON",jsonError:"Erreur JSON",serverId:"ID du serveur",serverIdRequired:"L'ID du serveur est requis",serverIdPatternError:"Utilisez uniquement des lettres, des chiffres, des underscores et des tirets",displayName:"Nom d'affichage",enabled:"Activé",enabledHelp:"Les serveurs désactivés restent en configuration, mais ne seront pas démarrés.",transportType:"Type de transport",transportTypeRequired:"Le type de transport est requis",transportOptions:{...e.settings.mcpServerForm.transportOptions,stdio:"Stdio",sse:"SSE"},command:"Commande",commandRequired:"La commande est requise",arguments:"Arguments",argumentsPlaceholder:"Ajoutez un argument puis appuyez sur Entrée",envVars:"Variables d'environnement",addEnv:"Ajouter une variable",keyRequired:"Clé requise",sseUrl:"URL SSE",sseUrlRequired:"L'URL SSE est requise",validUrlRequired:"Veuillez saisir une URL valide",headers:"En-têtes",addHeader:"Ajouter un en-tête",headerNameRequired:"Nom d'en-tête requis"},metricsCards:{...e.settings.metricsCards,totalSessions:"Sessions totales",chatTokens:"Tokens chat",totalToolCalls:"Appels d'outils totaux",avgSessionDuration:"Durée moyenne des sessions"},forwardMetricsCards:{...e.settings.forwardMetricsCards,totalForwardRequests:"Requêtes de transfert totales",successRate:"Taux de réussite",forwardTokens:"Tokens de transfert",avgResponseTime:"Temps de réponse moyen"},unifiedMetricsCards:{...e.settings.unifiedMetricsCards,totalRequests:"Requêtes totales",totalTokens:"Tokens totaux",successRate:"Taux de réussite",avgResponseTime:"Temps de réponse moyen",chatSessions:"Sessions chat",chatTokens:"Tokens chat",toolCalls:"Appels d'outils",avgSessionDuration:"Durée moyenne des sessions",forwardRequests:"Requêtes de transfert",forwardTokens:"Tokens de transfert",successful:"Réussi",failed:"Échec"},metricsTable:{...e.settings.metricsTable,session:{...e.settings.metricsTable.session,columns:{...e.settings.metricsTable.session.columns,session:"Session",model:"Modèle",status:"Statut",started:"Début",duration:"Durée",tokens:"Tokens",toolCalls:"Appels d'outils",messages:"Messages",action:"Action"},view:"Voir"},forward:{...e.settings.metricsTable.forward,columns:{...e.settings.metricsTable.forward.columns,id:"ID",endpoint:"Point de terminaison",model:"Modèle",type:"Type",status:"Statut",tokens:"Tokens",duration:"Durée",started:"Début",error:"Erreur"},typeStream:"Flux",typeSync:"Synchrone",totalRequests:"{{total}} requêtes",empty:"Aucune requête de transfert enregistrée pour cette plage"}},metricsDashboard:{...e.settings.metricsDashboard,roundColumns:{...e.settings.metricsDashboard.roundColumns,round:"Tour",status:"Statut",duration:"Durée",tokens:"Tokens",toolCalls:"Appels d'outils"},compactStats:{...e.settings.metricsDashboard.compactStats,combinedTokens:"Tokens combinés",chatTokens:"Tokens chat",forwardTokens:"Tokens de transfert",avgTokensPerSession:"Tokens moyens / session",estimatedTimeSaved:"Temps estimé économisé",estimatedEfficiencyLift:"Gain d'efficacité estimé",estimatedSpeedMultiplier:"Multiplicateur de vitesse estimé",estimatedSavedWorkdays:"Jours de travail estimés économisés",avgRoundsPerSession:"Tours moyens / session",toolCallsPerSession:"Appels d'outils / session",activeSessionRate:"Taux de sessions actives",avgTokensPerForward:"Tokens moyens / transfert",forwardErrorRate:"Taux d'erreur de transfert",streamingRatio:"Ratio de streaming",p95ForwardLatency:"Latence P95 des transferts",modelCoverage:"Couverture des modèles",endpointCoverage:"Couverture des points de terminaison"},multiplierSuffix:"x",filtersTitle:"Filtres",refresh:"Actualiser",startDate:"Date de début",endDate:"Date de fin",model:"Modèle",daysOption:"{{value}} jours",granularity:{...e.settings.metricsDashboard.granularity,daily:"Quotidien",weekly:"Hebdomadaire",monthly:"Mensuel"},dashboardTitle:"Tableau de bord",tabs:{...e.settings.metricsDashboard.tabs,overview:"Vue d'ensemble",analysis:"Analyse",records:"Journaux"},derivedMetricsTitle:"Métriques dérivées (compact)",derivedMetricsSubtitle:"Plus de dimensions sans allonger la page",efficiencyHint:"Les estimations d'efficacité utilisent des hypothèses prudentes : {{manualTpm}} tokens/min en manuel + {{manualToolMinutes}} min/outil vs {{assistedTpm}} tokens/min assisté + {{assistedToolMinutes}} min/outil, puis application de {{realization}} % de réalisation et des plafonds ({{maxLift}} % / {{maxMultiplier}}x).",toolUsageTitle:"Fréquence d'utilisation des outils",noToolUsage:"Aucun appel d'outil enregistré pour cette plage.",calls:"Appels",activityHeatmapTitle:"Carte thermique d'activité quotidienne",noActivity:"Aucune activité disponible pour cette plage.",sessionsCount:"{{count}} sessions",tokensAmount:"{{value}} tokens",sessionsTabLabel:"Sessions ({{count}})",chatSessionsLabel:"Sessions chat ({{count}})",sessionsHint:"Cliquez sur une session pour voir le détail complet",forwardTabLabel:"Requêtes de transfert ({{count}})",detailedMetricsTitle:"Métriques détaillées",sessionMetricsTitle:"Métriques de session",loadingSessionDetails:"Chargement des détails de session...",sessionDetail:{...e.settings.metricsDashboard.sessionDetail,sessionId:"ID de session",model:"Modèle",status:"Statut",duration:"Durée",messages:"Messages",totalTokens:"Tokens totaux",toolCalls:"Appels d'outils"},noDetail:"Aucun détail disponible."},charts:{...e.settings.charts,tokenUsageOverTime:"Utilisation des tokens dans le temps",unifiedTokenUsageOverTime:"Utilisation des tokens dans le temps (chat + transfert)",noTokenUsage:"Aucune utilisation de tokens disponible",tokenUsageDescription:"Tokens de prompt, de réponse et totaux par jour/période.",unifiedTokenUsageDescription:"Utilisation combinée des tokens chat et transfert au fil du temps.",total:"Total",prompt:"Prompt",completion:"Réponse",chat:"Chat",forward:"Transfert",modelDistribution:"Répartition des modèles",noModelMetrics:"Aucune métrique de modèle disponible",modelDistributionDescription:"Part des tokens totaux consommés par modèle.",endpointDistribution:"Répartition des points de terminaison",noForwardMetrics:"Aucune métrique de transfert disponible pour cette plage."}}}),Se=e=>{var t,s,i,o,a;return{...e,app:{...e.app,loading:"読み込み中...",retry:"再試行",errorBoundary:{title:"問題が発生しました",description:"このセクションで予期しないエラーが発生しました。再試行するか、問題が続く場合はページを再読み込みしてください。",tryAgain:"再試行",showDetails:"詳細を表示",hideDetails:"詳細を非表示"},passwordGate:{title:"アクセスパスワードを入力",description:"アプリケーションを使用する前にパスワード認証が必要です。",passwordLabel:"アクセスパスワード",passwordPlaceholder:"アクセスパスワードを入力",submit:"認証して続行",validation:{required:"アクセスパスワードを入力してください",verifyFailed:"パスワード認証に失敗しました"}},defaultSessionTitle:"新しいセッション",notifications:{toolApproval:{title:"承認が必要: {{tool}}",body:"ツール {{tool}} の実行には承認が必要です",unknownTool:"不明なツール"},contextPressure:{title:"コンテキストウィンドウがほぼ一杯です"},backgroundTask:{completedTitle:"バックグラウンドタスク完了",completedBody:"「{{title}}」が完了しました",completedFallback:"バックグラウンドタスクが完了しました"},clarification:{title:"Bodhi AI が回答を待っています",fallbackBody:"エージェントが質問への回答を待っています"},conversationSummarized:"会話が要約されました:{{messages}} 件のメッセージを圧縮し、{{tokens}} トークンを節約しました",allTasksCompleted:"すべてのタスクが完了しました!合計ラウンド:{{rounds}}、ツール呼び出し:{{toolCalls}}",evaluatingTasks:"{{count}} 件のタスクを評価中...",evaluationCompleteUpdated:"評価完了:{{count}} 件のタスクを更新しました。",evaluationCompleteNoUpdates:"評価完了:更新は不要です"}},commandPalette:{searchPlaceholder:"セッション、設定、アクションを検索",navigationHint:"↑↓ でナビゲーション、Enter で開く、Esc で閉じる",empty:"一致するコマンドがありません",groups:{quickActions:"クイックアクション",settings:"システム設定"},badges:{quickAction:"アクション",pinned:"ピン留め",running:"実行中",child:"子セッション",childSession:"子セッション",rootSession:"セッション"},actions:{newSession:"新しいセッションを作成",openProviderSettings:"プロバイダー設定を開く",openMcpSettings:"MCP 設定を開く",openWorkflowSettings:"ワークフロー設定を開く",openSessionsSettings:"セッションモニターを開く",openSchedulesSettings:"スケジュールを開く"},errors:{actionFailed:"コマンドの実行に失敗しました"}},setup:{welcome:{heading:"Bodhi へようこそ",description:"Bodhi は AI 駆動の開発アシスタントです。AI プロバイダーを設定して開始するか、そのまま進んでください。",providerHint:"チャットを開始するには、AI プロバイダー(例: OpenAI、Anthropic)を API キーで設定する必要があります。",proxyHint:"企業プロキシを使用していますか?後でシステム設定 > ネットワークでプロキシを設定できます。"},button:{getStarted:"開始",configureProvider:"プロバイダーを設定"},complete:{title:"設定完了!",restartMessage:"アプリケーションを再読み込み中..."},error:{completeFailed:"セットアップの完了に失敗しました。再試行してください。"}},onboarding:{welcome:{title:"Bodhi へようこそ!",description:"Bodhi は AI 駆動の開発アシスタントです。簡単に操作をご紹介します。"},newSession:{title:"新しいセッション",description:"ここをクリックして AI アシスタントとの新しいチャットを開始します。"},taskTemplates:{title:"タスクテンプレート",description:"コードレビュー、Bug 調査、リファクタリングなどのテンプレートから選択できます。"},modelPicker:{title:"モデル選択",description:"いつでもここから AI モデルとプロバイダーを切り替えられます。"},sidebar:{title:"セッションサイドバー",description:"セッションの検索、フィルタリング、ピン留め、切り替えができます。"},settings:{title:"設定",description:"AI プロバイダー、プロキシ、モデルマッピング、MCP サーバーなどを設定します。"}},layout:{...e.layout,showSidebar:"サイドバーを表示"},common:{...e.common,cancel:"キャンセル",ok:"OK",apply:"適用",save:"保存",delete:"削除",saveAnyway:"とにかく保存",yes:"はい",no:"いいえ",home:"ホーム",parentDirectory:"親ディレクトリ",currentPath:"現在のパス:",workspace:"ワークスペース",server:"サーバー:",category:"カテゴリー:",parameters:"パラメータ",approve:"承認",reject:"拒否",download:"ダウンロード",directory:"ディレクトリ",file:"ファイル"},chat:{...e.chat,sidebar:{...e.chat.sidebar,newSession:"新しいセッション",empty:{noSessions:"セッションはまだありません",hint:"「新しいセッション」をクリックして開始"},dateGroups:{today:"今日",yesterday:"昨日",thisWeek:"今週",thisMonth:"今月",pinned:"ピン留め",scheduled:"スケジュール済み"},actions:{collapseChildren:"子セッションを折りたたむ",expandChildren:"子セッションを展開"}},input:{...e.chat.input,placeholder:"メッセージを送信...",placeholderWithReference:"メッセージを送信(参照付き)",placeholderWithWorkflows:"メッセージを送信...('/' でワークフロー)",processingFiles:"ファイルを処理中…",dropImagesHere:"ここに画像をドロップ",referencing:"参照中",addAttachments:"添付ファイルを追加",referenceWorkspaceFiles:"ワークスペースファイルを参照",imageCountSingular:"{{count}} 枚の画像",imageCountPlural:"{{count}} 枚の画像",moreImages:"+{{count}} 枚",clearAllImages:"すべての画像をクリア",reasoningTitle:"推論の労力: {{label}}",reasoning:{...e.chat.input.reasoning,low:"低",medium:"中",high:"高",xhigh:"非常に高",max:"最大"},strictToolOnlyMode:"厳格なツール専用モード",toolSpecificModeLabel:"ツール指定モード",allowedTools:"許可ツール:",autoPrefixLabel:"自動プレフィックス: {{prefix}}",mustStartWithPrefix:'メッセージは "{{prefix}}" で始まる必要があります'},actions:{...e.chat.actions,regenerate:"回答を再生成",retryFailed:"失敗したリクエストを再試行",retryOptions:"再試行オプション",cancelRequest:"リクエストをキャンセル",sendMessage:"メッセージを送信",copyMessage:"メッセージをコピー",referenceMessage:"メッセージを参照",unpin:"ピン留めを解除",pin:"ピン留め",generateTitle:"AIタイトルを生成"},streaming:{...e.chat.streaming,assistant:"Bodhi",requestCancelled:"リクエストがキャンセルされました",sendFailed:"メッセージの送信に失敗しました",retryFailed:"再試行に失敗しました",modelConfigNotLoaded:"モデル設定が読み込まれていません",agentUnavailable:"エージェントが利用できません",noActiveChatTitle:"アクティブなチャットがありません",noActiveChatSendContent:"メッセージを送信する前にチャットを作成または選択してください。",noActiveChatRetryContent:"再試行する前にチャットを作成または選択してください。"},subAgents:{...e.chat.subAgents,title:"サブエージェント",expand:"展開",collapse:"折りたたむ",continue:"ここで続行",open:"開く",retry:"再試行",hiddenHint:"{{count}} 件のサブエージェントが非表示"},selectionToolbar:{...e.chat.selectionToolbar,selectMessages:"メッセージを選択",selectedCount:"{{selected}} 件選択(全 {{total}} 件)",selectAll:"すべて選択",clear:"クリア",exportMarkdown:"Markdownでエクスポート",exportPdf:"PDFでエクスポート",done:"完了"},messageCard:{...e.chat.messageCard,authRequired:"認証が必要です",goToSettings:"設定へ",assistantThinking:"アシスタントが考え中...",assistantCompactingContext:"アシスタントがコンテキストを圧縮中...",assistantCompactingContextDegraded:"アシスタントがコンテキストを圧縮中(劣化モード)...",assistantCompactingContextFailed:"コンテキスト圧縮に失敗しました。続行中...",assistantUpdatingMemory:"アシスタントがメモリを更新中...",assistantRunningTool:"アシスタントが {{tool}} を実行中...",reasoning:"推論",selected:"選択済み",selectedTool:"選択済みツール"},messageActions:{...e.chat.messageActions,copy:"コピー",exportMarkdown:"Markdownでエクスポート",exportPdf:"PDFでエクスポート",restoreChat:"チャットのみ復元",restoreFilesAndChat:"ファイルとチャットを復元",deleteMessage:"メッセージを削除",deleteFailed:"メッセージの削除に失敗しました",nothingToExport:"エクスポートするものがありません",exportFailed:"エクスポートに失敗しました",restoreFailed:"チャットの復元に失敗しました",savedFile:"{{filename}} に保存しました",cannotRestore:"このメッセージは復元できません",restorePartial:"チャットを復元しました。{{count}} 件のファイルを復元できませんでした。",restoreFilesSuccess:"ファイルとチャットを復元しました({{count}} 件のメッセージを削除)。",restoreSuccess:"チャットを復元しました({{count}} 件のメッセージを削除)。",pdfUnavailable:"この環境では PDF エクスポートは利用できません",exportingPdf:"PDF をエクスポート中..."},chatItem:{edit:"編集",childTag:"子"},title:{updated:"チャットタイトルを更新しました",generateFailed:"チャットタイトルの生成に失敗しました"},respond:{customAnswerPlaceholder:"カスタム回答を入力..."},multiPane:{splitHorizontal:"水平に分割",splitVertical:"垂直に分割",closePane:"ペインを閉じる",selectSessionHint:"セッションを選択してメッセージを表示",hoverToSplitHint:"ペインにホバーして分割し、チャットを比較",selectMessagesToExport:"エクスポートするメッセージを選択"},fileReference:{title:"@ ファイル参照",setWorkspace:"ワークスペースを設定",noMatches:"一致するファイルが見つかりません",emptyDirectory:"ディレクトリは空です"},commandSelector:{...e.chat.commandSelector,loading:"コマンドを読み込み中...",emptyWithSearch:"「{{search}}」に一致するコマンドがありません",empty:"コマンドがありません。",navigationHint:"ナビゲーション: ↑↓ または Ctrl+P/N | 選択: Enter | 補完: Space/Tab | キャンセル: Esc",types:{workflow:"ワークフロー",skill:"スキル",mcp:"MCP"}},systemPromptSelector:{defaultTag:"デフォルト",hide:"非表示",preview:"プレビュー",copy:"コピー",lines:"{{count}} 行",words:"{{count}} 単語",chars:"{{count}} 文字",noContent:"コンテンツなし"}},settings:{...e.settings,page:{...e.settings.page,back:"戻る",title:"システム設定",tabs:{...e.settings.page.tabs,config:"設定",prompts:"プロンプト",mermaid:"Mermaid",skills:"スキル",workflows:"ワークフロー",mcp:"MCP",modelLimits:"モデル制限",metrics:"メトリクス",schedules:"スケジュール",sessions:"セッション",app:"アプリ",provider:"プロバイダー",hooks:"Hooks",masking:"マスキング",envVars:"環境変数"},groups:{...e.settings.page.groups,ai:"AI",toolsAndExtensions:"ツール & 拡張",securityAndPrivacy:"セキュリティ",monitoring:"モニタリング",system:"システム"}},notifications:{...e.settings.notifications,deleteAllSuccess:"すべてのセッションを削除しました(ピン留め除く)",deleteEmptySuccess:"空のセッションを削除しました(ピン留め除く)",localStorageCleared:"ローカルストレージをクリアしました",resetSuccessReloading:"アプリケーションをリセットしました。再読み込み中...",resetFailed:"アプリケーションのリセットに失敗しました",promptEnhancementSaved:"システムプロンプト拡張を保存しました"},configTab:{...e.settings.configTab,loadConfigFailed:"設定の読み込みに失敗しました",invalidConfig:"設定が無効です",saveConfigSuccess:"設定を保存しました",saveConfigFailed:"設定の保存に失敗しました",backendSaved:"バックエンドURLを保存しました",backendResetDefault:"バックエンドURLをデフォルトに戻しました",providerMovedTitle:"プロバイダー設定が移動しました",providerMovedDescription:"GitHub Copilot などのプロバイダー設定は [プロバイダー設定] タブに移動しました。そちらで設定してください。",backendApiBaseUrlTitle:"バックエンド API ベースURL",backendApiHint:"/v1 パスを含めてください",resetToDefault:"デフォルトに戻す",save:"保存",language:"言語",languageEnglish:"英語",languageChinese:"簡体字中国語",languageTraditionalChinese:"繁体字中国語",languageFrench:"フランス語",languageJapanese:"日本語",languageHindi:"ヒンディー語",backendUrlEmpty:"バックエンド URL を入力してください",backendUrlInvalidProtocol:"バックエンド URL は http:// または https:// で始める必要があります",backendUrlInvalidUrl:"バックエンド URL が無効です",backendUrlMustEndWithV1:'バックエンド URL は "/v1" で終わる必要があります',accessPassword:{validation:{currentPasswordRequired:"現在のパスワードを入力してください",newPasswordRequired:"新しいパスワードを入力してください",confirmPasswordRequired:"新しいパスワードを再度入力してください",minLength:"パスワードは4文字以上にしてください",passwordMismatch:"パスワードが一致しません"}}},promptsTab:{...e.settings.promptsTab,title:"システムプロンプト拡張",mermaidEnhancement:"Mermaid 拡張",taskListRules:"タスクリストルール",enhancementPlaceholder:"各システムプロンプトに追加するグローバル拡張テキストを入力してください。",saveEnhancement:"拡張を保存",description:"このテキストは各リクエスト送信前に追加され、その後有効なシステム拡張が適用されます。",switchOn:"オン",switchOff:"オフ"},appTab:{...e.settings.appTab,switchOn:"オン",switchOff:"オフ",darkMode:"ダークモード",darkModeDark:"ダーク",darkModeLight:"ライト",language:"言語",languageEnglish:"英語",languageChinese:"簡体字中国語",languageTraditionalChinese:"繁体字中国語",languageFrench:"フランス語",languageJapanese:"日本語",languageHindi:"ヒンディー語",deleteAllTitle:"すべてのセッションを削除",deleteAllDescription:"よろしいですか?ピン留め以外のすべてのセッションが削除されます。",deleteAllButton:"すべてのセッションを削除",deleteEmptyTitle:"空のセッションを削除",deleteEmptyDescription:"よろしいですか?メッセージのないセッション(ピン留め除く)が削除されます。",deleteEmptyButton:"空のセッションを削除",clearLocalStorageTitle:"ローカルストレージをクリア",clearLocalStorageDescription:"よろしいですか?すべてのローカルデータが削除され、アプリケーションがリセットされます。",clearLocalStorageButton:"ローカルストレージをクリア",confirmDeleteAll:"はい、すべて削除",confirmDeleteEmpty:"はい、空を削除",confirmClear:"はい、クリア",cancel:"キャンセル",dangerZone:"危険ゾーン",dangerDescription:"これらの操作は取り消せません。すべてのデータが永久に削除されます。",resetApplicationTitle:"アプリケーションをリセット",resetApplicationIntro:"よろしいですか?以下が実行されます:",resetStepDeleteAllSessions:"すべてのセッションを削除(ピン留め含む)",resetStepClearStorage:"すべてのローカルデータをクリア",resetStepResetConfig:"config.json をデフォルトにリセット",resetStepSetupFlow:"次回起動時にセットアップフローを表示",resetStepReload:"アプリケーションを再読み込み",resetConfirm:"はい、すべてリセット",resetButton:"アプリケーションをリセット(全データ)"},common:{...e.settings.common,loading:"読み込み中...",successful:"成功",failed:"失敗"},schedulesTab:{...e.settings.schedulesTab,loadFailed:"スケジュールの読み込みに失敗しました",loadSessionsFailed:"スケジュールセッションの読み込みに失敗しました",createFailed:"スケジュールの作成に失敗しました",updateFailed:"スケジュールの更新に失敗しました",deleteFailed:"スケジュールの削除に失敗しました",runNowFailed:"スケジュールの実行に失敗しました",taskMessageRequired:"自動実行が有効な場合、タスクメッセージは必須です",created:"スケジュールを作成しました",updated:"スケジュールを更新しました",deleted:"スケジュールを削除しました",enqueuedRun:"実行をキューに追加しました",optional:"(任意)",defaultName:"マイスケジュール",createTitle:"スケジュール作成",editTitle:"スケジュール編集",listTitle:"スケジュール一覧",scheduleSessionsTitle:"セッションスケジュール",scheduleRunsTitle:"スケジュール実行履歴",noSessionsYet:"まだセッションがありません",noRunsYet:"まだ実行履歴がありません",loadRunsFailed:"実行履歴の読み込みに失敗しました",nonIntervalReadOnly:"間隔以外のトリガーは読み取り専用です",columns:{...(t=e.settings.schedulesTab)==null?void 0:t.columns,autoExecute:"自動実行",intervalSeconds:"間隔",nextRun:"次回実行",lastRun:"最終実行",name:"名前",model:"モデル",enabled:"有効",actions:"操作"},triggerTypes:{interval:"間隔",daily:"毎日",weekly:"毎週",monthly:"毎月",cron:"Cron"},weekdays:{mon:"月",tue:"火",wed:"水",thu:"木",fri:"金",sat:"土",sun:"日"},triggerLabels:{interval:"{{seconds}}秒ごと",daily:"毎日 {{time}}",weekly:"毎週 {{weekdays}} {{time}}",monthly:"毎月 {{days}}日 {{time}}",cron:"Cron: {{expression}}"},statusLabels:{running:"実行中",queued:"待機中",failing:"失敗中",disabled:"無効",healthy:"正常",idle:"アイドル"},statusDetails:{active:"{{count}}回実行済み",pending:"次回実行: {{time}}",consecutiveFailures:"{{count}}回連続失敗",lastRunSucceeded:"最終実行成功"},activityLabels:{queued:"待機中",running:"実行中",ok:"成功",fail:"失敗"},form:{...(s=e.settings.schedulesTab)==null?void 0:s.form,triggerType:"トリガー種別",intervalSeconds:"間隔(秒)",dailyHour:"時",dailyMinute:"分",weeklyWeekdays:"曜日",monthlyDays:"日付",cronExpr:"Cron 式",timezone:"タイムゾーン",startAt:"開始日時",endAt:"終了日時",datetimePlaceholder:"日時を選択",misfirePolicy:"ミスファイヤーポリシー",overlapPolicy:"重複ポリシー",catchUpWindow:"キャッチアップウィンドウ(秒)",taskMessage:"タスクメッセージ",taskMessagePlaceholder:"(任意)実行するタスク",modelPlaceholder:"(任意)例: gpt-4o-mini",modelRequiredIfAuto:"自動実行の場合は必須",autoExecute:"自動実行",systemPrompt:"システムプロンプト",workspacePath:"ワークスペースパス",enhancePrompt:"プロンプトを強化",name:"名前",enabled:"有効",model:"モデル"},misfirePolicyOptions:{fireNow:"即時実行",doNothing:"何もしない"},overlapPolicyOptions:{allow:"許可",block:"ブロック",replace:"置換"},validation:{nameRequired:"名前は必須です",intervalRequired:"間隔は必須です"},actions:{runNow:"今すぐ実行",create:"作成",refresh:"更新",edit:"編集",sessions:"セッション",runs:"実行履歴",delete:"削除",open:"開く",save:"保存"},runHistory:{columns:{runAt:"実行時刻",status:"状態",duration:"所要時間",triggerType:"トリガー種別",message:"メッセージ",actions:"操作"}},yes:"はい",no:"いいえ"},modelLimits:{...e.settings.modelLimits,title:"トークン予算モデル制限",defaultsTitle:"モデル初期値",loadFailed:"モデル制限設定の読み込みに失敗しました",saveSuccess:"モデル制限をグローバル設定に保存しました",saveFailed:"モデル制限設定の保存に失敗しました",resetSuccess:"モデル制限を初期値に戻しました",resetFailed:"モデル制限設定のリセットに失敗しました",columns:{...e.settings.modelLimits.columns,contextWindow:"コンテキストウィンドウ",maxOutput:"最大出力",model:"モデル",safetyMargin:"安全マージン",status:"状態",actions:"操作"},actions:{addRow:"行を追加",resetToDefaults:"初期値に戻す",remove:"削除",save:"保存",reload:"再読み込み"},validation:{atLeastOneRow:"1行以上のモデル制限を保持してください。",modelPatternEmpty:"モデルパターンは空にできません。",duplicateModelPattern:"重複モデルパターン: {{pattern}}",contextWindowMin:"{{pattern}} のコンテキストウィンドウは1000以上必要です。",maxOutputMin:"{{pattern}} の最大出力は1以上必要です。",maxOutputExceedsContext:"{{pattern}} の最大出力はコンテキストウィンドウ以下にしてください。"}},modelMappingCard:{...e.settings.modelMappingCard,loadProviderFailed:"プロバイダー設定の読み込みに失敗しました",loadMappingsFailed:"既存のマッピングの読み込みに失敗しました",loadModelsFailed:"モデルの読み込みに失敗しました",mappingSaved:"モデルマッピングを保存しました",mappingSaveFailed:"モデルマッピングの保存に失敗しました",enterModelName:"モデル名を入力してください",customMappingSaved:"カスタムモデルマッピングを保存しました",customMappingSaveFailed:"カスタムモデルマッピングの保存に失敗しました",modelTypeOpus:"Opus",modelTypeSonnet:"Sonnet",modelTypeHaiku:"Haiku"},keywordMaskingTab:{...e.settings.keywordMaskingTab,title:"キーワードマスキング",addKeyword:"キーワードを追加",empty:"キーワードマスキングルールが設定されていません",exactMatch:"完全一致",regexPattern:"正規表現パターン",enabled:"有効",disabled:"無効",sampleText:"サンプルテキスト",maskedPreview:"マスキングプレビュー",loadFailed:"キーワードマスキング設定の読み込みに失敗しました",saveSuccess:"キーワードマスキング設定を保存しました",patternRequired:"パターンは空にできません",invalidRegexPattern:"無効な正規表現パターンです"},metricsCards:{totalSessions:"セッション総数",chatTokens:"チャットトークン",totalToolCalls:"ツール呼び出し総数",avgSessionDuration:"平均セッション時間"},forwardMetricsCards:{totalForwardRequests:"Forward リクエスト総数",successRate:"成功率",forwardTokens:"Forward トークン",avgResponseTime:"平均応答時間"},unifiedMetricsCards:{...e.settings.unifiedMetricsCards,totalRequests:"リクエスト総数",totalTokens:"トークン総数",successRate:"成功率",avgResponseTime:"平均応答時間",chatSessions:"チャットセッション",chatTokens:"チャットトークン",toolCalls:"ツール呼び出し",forwardRequests:"Forward リクエスト",forwardTokens:"Forward トークン",successful:"成功",failed:"失敗"},metricsTable:{...e.settings.metricsTable,session:{...(i=e.settings.metricsTable)==null?void 0:i.session,columns:{session:"セッション",model:"モデル",status:"状態",started:"開始時刻",duration:"所要時間",tokens:"トークン",toolCalls:"ツール呼び出し",messages:"メッセージ",action:"操作"},view:"表示"},forward:{...(o=e.settings.metricsTable)==null?void 0:o.forward,columns:{id:"ID",endpoint:"エンドポイント",model:"モデル",type:"種別",status:"状態",tokens:"トークン",duration:"所要時間",started:"開始時刻",error:"エラー"},typeStream:"ストリーム",typeSync:"同期"}},mcpToolList:{...e.settings.mcpToolList,title:"MCP ツール",selectServerHint:"MCP ツールを確認するサーバーを選択してください",empty:"このサーバーにツールが見つかりません",noDescription:"説明がありません",aliasMapping:"エイリアスマッピング",parametersSchema:"パラメータスキーマ"},mcpServerTable:{...e.settings.mcpServerTable,columns:{name:"名前",transportType:"転送種別",status:"状態",toolCount:"ツール数",actions:"操作"},deleteTitle:"MCP サーバーを削除",empty:"MCP サーバーが設定されていません",actions:{edit:"編集",delete:"削除",disconnect:"切断",connect:"接続",refreshTools:"ツールを更新"},transportOptions:{sse:"SSE",stdio:"Stdio"}},mcpServerForm:{...e.settings.mcpServerForm,editTitle:"MCP サーバーを編集",addTitle:"MCP サーバーを追加",save:"保存",modeForm:"フォーム",modeJson:"JSON",serverId:"サーバー ID",serverIdRequired:"サーバー ID は必須です",displayName:"表示名",enabled:"有効",transportType:"転送種別",transportTypeRequired:"転送種別は必須です",command:"コマンド",commandRequired:"コマンドは必須です",arguments:"引数",argumentsPlaceholder:"引数を追加して Enter を押してください",envVars:"環境変数",addEnv:"環境変数を追加",keyRequired:"キーは必須です",sseUrl:"SSE URL",sseUrlRequired:"SSE URL は必須です",validUrlRequired:"有効な URL を入力してください",headers:"ヘッダー",addHeader:"ヘッダーを追加",headerNameRequired:"ヘッダー名は必須です",transportOptions:{stdio:"Stdio",sse:"SSE"}},providerTab:{...e.settings.providerTab,title:"LLM プロバイダー設定",description:"使用する LLM プロバイダーを設定します。「保存して適用」をクリックすると設定が保存・反映されます。",currentProvider:"現在のプロバイダー",activeProvider:"アクティブな LLM プロバイダー",selectProviderRequired:"プロバイダーを選択してください",saveAndApply:"保存して適用",loadConfigFailed:"プロバイダー設定の読み込みに失敗しました",saveConfigSuccess:"設定を保存しました",saveConfigFailed:"設定の保存に失敗しました",applyConfigSuccess:"設定を適用しました。新しいセッションから反映されます。",applyConfigFailed:"設定の適用に失敗しました",modelUpdated:"モデルを更新しました",updateModelFailed:"モデルの更新に失敗しました",fetchingModels:"モデルを取得中...",fetchModelsFailed:"モデルの取得に失敗しました。API Key と Base URL を確認してください。",noModelsReturned:"モデルが返されませんでした。先に Copilot 認証を完了してください。",foundModels:"{{count}} 個のモデルが見つかりました",retry:"再試行",defaultModel:"デフォルトモデル",modelPreferences:"モデル設定",fastModel:"高速モデル(任意)",fastModelHelp:"タイトル生成、Mermaid 修正、要約などの軽量タスク用の低コスト/高速モデル。未設定時はデフォルトモデルを使用。",subAgentModel:"サブエージェントモデル(任意)",subAgentModelHelp:"新しいサブエージェントのデフォルトモデル。未設定時は高速モデル、さらにデフォルトモデルにフォールバック。",visionModel:"ビジョンモデル(任意)",visionModelHelp:"画像理解用のビジョンモデル。hooks.image_fallback.mode が 'vision' の場合、画像をテキストとして記述します。未設定時はデフォルトモデルを使用。",sameAsDefault:"デフォルトと同じ",selectModelRequired:"モデルを選択してください",selectModel:"モデルを選択",openaiConfigTitle:"OpenAI 設定",openaiConfigDescription:"OpenAI API Key を入力して GPT モデルを使用します。カスタム Base URL も指定可能です。",openaiApiKey:"OpenAI API Key",openaiApiKeyRequired:"OpenAI API Key を入力してください",baseUrlOptional:"Base URL(任意)",openaiBaseUrlHelp:"空欄の場合はデフォルトの OpenAI API エンドポイントを使用します。必要に応じてフルパス(例: /v1)を含めてください。",anthropicConfigTitle:"Anthropic 設定",anthropicConfigDescription:"Anthropic API Key を入力して Claude モデルを使用します。",anthropicApiKey:"Anthropic API Key",anthropicApiKeyRequired:"Anthropic API Key を入力してください",anthropicBaseUrlHelp:"空欄の場合はデフォルトの Anthropic API エンドポイントを使用します。必要に応じてフルパスを含めてください。",maxTokensOptional:"最大 Tokens(任意)",maxTokensHelp:"生成時の最大トークン数",geminiConfigTitle:"Google Gemini 設定",geminiConfigDescription:"Google AI API Key を入力して Gemini モデルを使用します。",geminiApiKey:"Gemini API Key",geminiApiKeyRequired:"Gemini API Key を入力してください",geminiBaseUrlHelp:"空欄の場合はデフォルトの Google AI エンドポイントを使用します。必要に応じてフルパスを含めてください。",copilotConfigTitle:"GitHub Copilot 設定",copilotConfigDescription:"GitHub Copilot は OAuth 認証を使用します。API Key は不要です。有効な GitHub Copilot サブスクリプションが必要です。",authStatusTitle:"認証状態",authenticated:"認証済み",notAuthenticated:"未認証",logoutCopilot:"Copilot からログアウト",authenticateCopilot:"Copilot を認証",refreshStatus:"状態を更新",headlessAuth:"ヘッドレス認証",headlessAuthHelp:"ブラウザを自動で開かず、コンソールにログインリンクを出力します",providerNames:{openai:"OpenAI",anthropic:"Anthropic",gemini:"Gemini",copilot:"Copilot"},checkStatusFailed:"ステータスの確認に失敗しました",startCopilotAuthFailed:"Copilot 認証の開始に失敗しました",copilotAuthSuccess:"Copilot 認証に成功しました!",providerReloaded:"新しい認証情報でプロバイダーを再読み込みしました。",completeAuthFailed:"認証の完了に失敗しました。再試行してください。",userCodeCopied:"ユーザーコードをクリップボードにコピーしました!",copyCodeFailedPrefix:"コピーに失敗しました。手動でコピーしてください:",logoutSuccess:"Copilot からログアウトしました",logoutFailed:"Copilot のログアウトに失敗しました",unknownError:"不明なエラー",invalidConfig:"設定が無効です",invalidConfigPrefix:"設定が無効です",invalidRequestOverridesJson:"{{provider}} の request_overrides JSON が無効です:{{error}}",fetchModelsCopilotFailed:"モデルの取得に失敗しました。先に Copilot 認証を完了してください。",fetchModelsErrorPrefix:"モデルの取得に失敗しました",saveModelChangeFailed:"モデル変更の保存に失敗しました",fetchModelsFailedShort:"モデルの取得に失敗しました",refreshModelsFrom:"{{source}} からモデルを更新",fetchModelsFrom:"{{source}} からモデルを取得",noModelsLoaded:"モデルがまだ読み込まれていません。「すべてのモデルを取得」をクリックしてください。",authFirstThenFetch:"先に Copilot 認証を完了してからモデルを取得してください。",openaiApiKeyPlaceholder:"sk-...",openaiBaseUrlPlaceholder:"https://api.openai.com/v1",anthropicApiKeyPlaceholder:"sk-ant-...",anthropicBaseUrlPlaceholder:"https://api.anthropic.com",maxTokensPlaceholder:"例: 4096",geminiApiKeyPlaceholder:"AI...",geminiBaseUrlPlaceholder:"https://generativelanguage.googleapis.com",responsesOnlyModelsOptional:"Responses 専用モデル(任意)",responsesOnlyModelsPlaceholder:'例: "gpt-5.3-codex", "gpt-5*"',responsesOnlyHelp1:"一部のモデルは OpenAI Responses API のみをサポートします(chat/completions は不可)。ここにモデル ID を追加すると、Bamboo に",responsesOnlyHelp2:"完全一致(例: gpt-5.3-codex)とサフィックス * のプレフィックス一致(例: gpt-5*)をサポートします。",copilotUsageTitle:"GitHub Copilot の使い方:",copilotUsageStep1:"有効な GitHub Copilot サブスクリプションがあることを確認",copilotUsageStep2:"「Copilot を認証」をクリックしてデバイスコードフローを開始",copilotUsageStep3:"ターミナルの指示に従って認証を完了",copilotAuthModalTitle:"Copilot 認証",cancel:"キャンセル",completedAuthorization:"認証を完了しました",browserOpened:"ブラウザが自動的に開きました",authStep1:"ブラウザで GitHub ページが開きます",authStep2:"下のコードをコピーして GitHub ページに貼り付けます",authStep3:"GitHub で「Continue」をクリックして認証を完了",visitUrl:"1. URL を開く:",enterCode:"2. コードを入力:",copied:"コピーしました!",copyCode:"コードをコピー",afterContinueHint:"GitHub で Continue をクリックした後、下の「認証を完了しました」をクリックしてください。",providerModelRef:"プロバイダーモデルカタログ",providerModelRefHelp:"バックエンド提供のモデルカタログを使用してモデルを選択します。有効にすると、手動設定ではなくカタログのモデルが表示されます。",catalogModeInfo:"モデルはプロバイダーカタログから取得されます。",fetchAllModels:"すべてのモデルを取得",fetchingAllModels:"モデルを取得中...",fetchModelsSuccess:"{{count}} プロバイダーのモデルを取得しました",fetchModelsPartialSuccess:"{{success}}/{{total}} プロバイダーのモデルを取得しました",providerNotConfigured:"プロバイダー未設定",capabilityVision:"ビジョン",capabilityTools:"ツール",capabilityReasoning:"推論",refreshCatalog:"カタログを更新",noCatalogModels:"カタログにモデルがありません",reasoningEffortDefault:"デフォルト",reasoningEffortOptional:"推論の労力(任意)",reasoningEffortHelp:"モデルの推論レベルを設定します。未設定時はプロバイダーのデフォルトを使用。",activeProviderReasoningEffort:"アクティブな推論レベル",reasoningEffortUpdated:"推論レベルを更新しました",updateReasoningEffortErrorPrefix:"推論レベルの更新に失敗しました",updateReasoningEffortFailed:"推論レベルの更新に失敗しました",advancedRequestOverrides:"高度なリクエストオーバーライド",advancedRequestOverridesHelp:"各リクエストに適用するカスタム JSON オーバーライド。",envVarInjection:"環境変数インジェクション"}},components:{...e.components,workflowResult:{...e.components.workflowResult,userWorkflow:"ユーザーワークフロー",waitingForResult:"ワークフロー結果を待機中...",executionFailed:"ワークフローの実行に失敗しました",retryWorkflow:"ワークフローを再実行",copyParameters:"パラメータをコピー",copyResult:"結果をコピー",expandResult:"結果を展開",collapseResult:"結果を折りたたむ"},toolResult:{...e.components.toolResult,waiting:"待機中",waitingForResult:"結果を待機中...",executionFailed:"ツールの実行に失敗しました",copyResult:"結果をコピー"},todoList:{...e.components.todoList,title:"タスクリスト",evaluating:"評価中",pin:"ピン留め",unpin:"ピン留めを解除",llmEvaluation:"LLM 評価",tools:"ツール",dependsOn:"依存: {{deps}}",dependencies:"依存",status:{...e.components.todoList.status,pending:"保留中",inProgress:"進行中",completed:"完了",blocked:"ブロック",skipped:"スキップ",failed:"失敗"},listStatus:{active:"アクティブ",completed:"完了",abandoned:"放棄"},percentComplete:"{{percent}}% 完了",progressLabel:"{{completed}} / {{total}} タスク完了",currentLabel:"現在: {{description}}"},toolSession:{...(a=e.components)==null?void 0:a.toolSession,title:"ツールセッション",running:"実行中",done:"完了",error:"エラー",completedOnly:"{{completed}} 完了",completedWithErrors:"{{completed}} 完了(エラーあり)",completedProgress:"{{completed}} / {{total}} 完了",noPersistedMessage:"永続化された出力がありません",deleteMessage:"ツールセッションを削除"},tokenUsage:{...e.components.tokenUsage,title:"トークン使用量",summary:"サマリー",system:"システム",messages:"メッセージ",tokens:"トークン",usedPercent:"{{value}}% 使用"},plan:{...e.components.plan,executionPlan:"実行プラン",goal:"目標",steps:"ステップ",stepTitle:"ステップ {{number}}",reason:"理由",estimated:"推定",tools:"ツール",prerequisites:"前提条件",potentialRisks:"潜在的リスク ({{count}})",totalEstimatedTime:"合計推定時間",feedbackPlaceholder:"エージェントに調整内容を伝えてください...",sendFeedback:"フィードバックを送信",refinePlan:"プランを洗練",executePlan:"プランを実行"},question:{...e.components.question,agentQuestion:"エージェントからの質問",context:"コンテキスト",chooseOption:"オプションを選択",recommended:"推奨",customAnswerHint:"適切なオプションがない場合は、自分で回答を入力してください。",customAnswerPlaceholder:"カスタム回答を入力...",submitAnswer:"回答を送信"},skillManager:{...e.components.skillManager,title:"スキル",refresh:"更新",skillsRefreshed:"スキルを更新しました",lastUpdated:"最終更新: {{value}}",justNow:"たった今",secondsAgo:"{{count}} 秒前",minutesAgo:"{{count}} 分前",searchPlaceholder:"スキルを検索",noSkillsFound:"スキルが見つかりません",loadFailed:"スキルの読み込みに失敗しました",getFailed:"スキルの取得に失敗しました"},mermaid:{...e.components.mermaid,loadingDiagram:"図を読み込み中...",diagramError:"Mermaid図エラー",errorTitlePrefix:"エラー",checkConsoleHint:"Mermaidの構文を確認するか、コンソールを開いて詳細を確認してください。",fixMermaid:"Mermaidを修正",renderingDiagram:"図をレンダリング中...",exportSvg:"SVGでエクスポート",exportFailed:"図のエクスポートに失敗しました"}}}},be=e=>({...e,app:{...e.app,loading:"लोड हो रहा है...",retry:"पुनः प्रयास करें",backendNotReachable:"बैकएंड {{baseUrl}} पर उपलब्ध नहीं है (अंतिम त्रुटि: {{message}})"},chat:{...e.chat,sidebar:{...e.chat.sidebar,newSession:"नया सत्र",empty:{noSessions:"अभी तक कोई सत्र नहीं",hint:'शुरू करने के लिए "नया सत्र" पर क्लिक करें'},dateGroups:{today:"आज",yesterday:"कल",thisWeek:"इस सप्ताह",thisMonth:"इस महीने",pinned:"पिन किया गया",scheduled:"अनुसूचित"},actions:{collapseChildren:"चाइल्ड सत्र संक्षिप्त करें",expandChildren:"चाइल्ड सत्र विस्तृत करें"}}},settings:{...e.settings,page:{...e.settings.page,back:"वापस",title:"सिस्टम सेटिंग्स",tabs:{...e.settings.page.tabs,config:"कॉन्फ़िगरेशन",prompts:"प्रॉम्प्ट्स",skills:"स्किल्स",workflows:"वर्कफ़्लोज़",modelLimits:"मॉडल सीमाएँ",metrics:"मेट्रिक्स",schedules:"शेड्यूल",sessions:"सेशंस",app:"ऐप",provider:"प्रोवाइडर",hooks:"हुक्स",masking:"मास्किंग",envVars:"पर्यावरण वेरिएबल्स"},groups:{...e.settings.page.groups,ai:"AI",toolsAndExtensions:"टूल्स और एक्सटेंशन्स",securityAndPrivacy:"सुरक्षा",monitoring:"मॉनिटरिंग",system:"सिस्टम"}},configTab:{...e.settings.configTab,tabs:{...e.settings.configTab.tabs,general:"सामान्य",tools:"टूल्स"},providerMovedTitle:"प्रोवाइडर कॉन्फ़िगरेशन स्थानांतरित किया गया",providerMovedDescription:"GitHub Copilot और अन्य प्रोवाइडर सेटिंग्स को Provider Settings टैब में स्थानांतरित कर दिया गया है। कृपया अपने प्रोवाइडर वहीं कॉन्फ़िगर करें।",backendApiBaseUrlTitle:"बैकएंड API बेस URL",backendApiHint:"/v1 पथ शामिल होना चाहिए",resetToDefault:"डिफ़ॉल्ट पर रीसेट करें",save:"सहेजें",toolsTitle:"टूल उपलब्धता",toolsDescription:"नियंत्रित करें कि कौन-सा टूल AI मॉडल को भेजा जाए। बंद किए गए टूल मॉडल टूल-स्कीमा से छिपा दिए जाते हैं।",toolsEmpty:"फिलहाल कोई टूल उपलब्ध नहीं है।",reloadTools:"टूल्स रीलोड करें",language:"भाषा",languageEnglish:"अंग्रेज़ी",languageChinese:"सरलीकृत चीनी",languageTraditionalChinese:"पारंपरिक चीनी",languageFrench:"फ़्रेंच",languageJapanese:"जापानी",languageHindi:"हिन्दी"},networkCard:{...e.settings.networkCard,title:"नेटवर्क सेटिंग्स",httpProxy:"HTTP प्रॉक्सी",httpsProxy:"HTTPS प्रॉक्सी",proxyAuthTitle:"प्रॉक्सी प्रमाणीकरण",proxyConfiguredForUser:"उपयोगकर्ता के लिए कॉन्फ़िगर: {{username}}",clearCredentials:"क्रेडेंशियल्स साफ़ करें",username:"उपयोगकर्ता नाम",password:"पासवर्ड",apply:"लागू करें",credentialsStorageNote:"प्रॉक्सी क्रेडेंशियल्स एन्क्रिप्ट होकर ~/.bamboo/config.json में सहेजे जाते हैं",reload:"रीलोड",save:"सहेजें"},modelMappingCard:{...e.settings.modelMappingCard,collapseTitle:"Anthropic मॉडल मैपिंग",description:"कॉन्फ़िगर करें कि Claude CLI जब विशिष्ट मॉडल मांगे तो कौन-से {{provider}} मॉडल उपयोग हों।",loadModelsErrorTitle:"मॉडल लोड करने में विफल",retry:"पुनः प्रयास करें",loadingModels:"मॉडल लोड हो रहे हैं...",modelTypeOpusDescription:'"opus" वाले मॉडल से मेल खाता है',modelTypeSonnetDescription:'"sonnet" वाले मॉडल से मेल खाता है',modelTypeHaikuDescription:'"haiku" वाले मॉडल से मेल खाता है',selectModelPlaceholder:"{{label}} मॉडल चुनें",customModelOption:"कस्टम मॉडल...",refreshModels:"मॉडल रीफ्रेश करें",currentProvider:"वर्तमान प्रोवाइडर",loadingProvider:"लोड हो रहा है...",availableModels:"उपलब्ध मॉडल",storedIn:"संग्रहित स्थान",customModalTitle:"कस्टम मॉडल नाम दर्ज करें",customModalDescription:"{{modelType}} के लिए कस्टम मॉडल नाम दर्ज करें",customModalPlaceholder:"उदाहरण: gpt-4-turbo-preview",customModalNote:"नोट: सुनिश्चित करें कि मॉडल नाम वर्तमान प्रोवाइडर के लिए मान्य है।",save:"सहेजें",cancel:"रद्द करें"},appTab:{...e.settings.appTab,switchOn:"चालू",switchOff:"बंद",darkMode:"डार्क मोड",darkModeDark:"डार्क",darkModeLight:"लाइट",language:"भाषा",languageEnglish:"अंग्रेज़ी",languageChinese:"सरलीकृत चीनी",languageTraditionalChinese:"पारंपरिक चीनी",languageFrench:"फ़्रेंच",languageJapanese:"जापानी",languageHindi:"हिन्दी",cancel:"रद्द करें",dangerZone:"जोखिम क्षेत्र"},common:{...e.settings.common,loading:"लोड हो रहा है...",successful:"सफल",failed:"विफल"}},commandPalette:{searchPlaceholder:"सत्र, सेटिंग्स और कार्रवाइयाँ खोजें",navigationHint:"नेविगेट करने के लिए ↑↓, खोलने के लिए Enter, बंद करने के लिए Esc दबाएँ",empty:"कोई मेल खाती कमांड नहीं",groups:{quickActions:"त्वरित कार्रवाइयाँ",settings:"सिस्टम सेटिंग्स"},badges:{quickAction:"कार्रवाई",pinned:"पिन किया",running:"चल रहा है",child:"चाइल्ड",childSession:"चाइल्ड सत्र",rootSession:"सत्र"},actions:{newSession:"नया सत्र बनाएँ",openProviderSettings:"प्रोवाइडर सेटिंग्स खोलें",openMcpSettings:"MCP सेटिंग्स खोलें",openWorkflowSettings:"वर्कफ़्लो सेटिंग्स खोलें",openSessionsSettings:"सत्र मॉनिटर खोलें",openSchedulesSettings:"अनुसूचियाँ खोलें"},errors:{actionFailed:"कमांड विफल हुई"}},setup:{welcome:{heading:"Bodhi में आपका स्वागत है",description:"Bodhi आपका AI-संचालित विकास सहायक है। एक AI प्रोवाइडर कॉन्फ़िगर करें और शुरू करें, या सीधे आगे बढ़ें।",providerHint:"चैट शुरू करने के लिए, आपको एक AI प्रोवाइडर (जैसे OpenAI, Anthropic) को API कुंजी के साथ कॉन्फ़िगर करना होगा।",proxyHint:"कॉर्पोरेट प्रॉक्सी के पीछे हैं? आप बाद में सिस्टम सेटिंग्स > नेटवर्क में प्रॉक्सी सेटिंग्स कॉन्फ़िगर कर सकते हैं।"},button:{getStarted:"शुरू करें",configureProvider:"प्रोवाइडर कॉन्फ़िगर करें"},complete:{title:"सब तैयार है!",restartMessage:"एप्लिकेशन पुनः लोड हो रहा है..."},error:{completeFailed:"सेटअप पूरा करने में विफल। कृपया पुनः प्रयास करें।"}},onboarding:{welcome:{title:"Bodhi में आपका स्वागत है!",description:"Bodhi आपका AI-संचालित विकास सहायक है। आइए जल्दी से परिचित होते हैं।"},newSession:{title:"नया सत्र",description:"AI सहायक के साथ नई चैट सत्र शुरू करने के लिए यहाँ क्लिक करें।"},taskTemplates:{title:"कार्य टेम्पलेट",description:"कोड समीक्षा, Bug जाँच, रिफैक्टर आदि पूर्व-निर्मित टेम्पलेट्स से चुनें।"},modelPicker:{title:"मॉडल चयन",description:"यहाँ से कभी भी AI मॉडल और प्रोवाइडर बदलें।"},sidebar:{title:"सत्र साइडबार",description:"अपने सत्र प्रबंधित करें — खोजें, फ़िल्टर करें, पिन करें और स्विच करें।"},settings:{title:"सेटिंग्स",description:"AI प्रोवाइडर, प्रॉक्सी, मॉडल मैपिंग, MCP सर्वर और बहुत कुछ कॉन्फ़िगर करें।"}}}),Ce=e=>{const t=ye(e);return{...t,layout:{...e.layout,showSidebar:"Afficher la barre latérale"},common:{...e.common,workspace:"Espace de travail",server:"Serveur :",category:"Catégorie :",parameters:"Paramètres",approve:"Approuver",reject:"Refuser"},chat:{...t.chat,sidebar:{...t.chat.sidebar,createFailedTitle:"Échec de création de session",createFailedUnknown:"Erreur inconnue",delete:{title:"Supprimer la session",confirm:"Voulez-vous vraiment supprimer cette session ?"},deleteByDate:{title:"Supprimer les sessions du {{date}}",confirm:"Voulez-vous vraiment supprimer {{count}} session(s) du {{date}} ?"},newSessionWithPrompt:"Nouvelle session avec {{prompt}}"},workspace:{...e.chat.workspace,recentTitle:"Espaces récents",suggestedTitle:"Espaces suggérés",noRecentWorkspaces:"Aucun espace récent",noSuggestions:"Aucune suggestion",defaultWorkspaceName:"Espace de travail",validWorkspace:"Espace valide",fileCount:"{{count}} fichiers"},input:{...e.chat.input,addAttachments:"Ajouter des pièces jointes",referenceWorkspaceFiles:"Référencer des fichiers de l'espace",imageCountSingular:"{{count}} image",imageCountPlural:"{{count}} images",moreImages:"+{{count}} de plus",clearAllImages:"Effacer toutes les images",dropImagesHere:"Déposez les images ici",referencing:"Référencement",reasoningTitle:"Effort de raisonnement : {{label}}",reasoning:{...e.chat.input.reasoning,low:"Faible",medium:"Moyen",high:"Élevé",xhigh:"Très élevé",max:"Max"},strictToolOnlyMode:"Mode strict outils uniquement",toolSpecificModeLabel:"Mode spécifique à l'outil",allowedTools:"Outils autorisés :",autoPrefixLabel:"Préfixe auto : {{prefix}}",mustStartWithPrefix:'Le message doit commencer par "{{prefix}}"'},prompt:{...e.chat.prompt,selectorTitle:"Choisir un prompt système",createButton:"Créer une nouvelle session",helperText:"Choisissez un prompt système de base pour l'IA. Vous pouvez en ajouter ou modifier dans les paramètres système.",emptyDescription:"Aucun prompt système trouvé. Ajoutez-en un dans les paramètres système.",newSessionSelectorTitle:"Choisir un prompt système pour la nouvelle session",defaultDescription:"Prompt système par défaut.",loadPresetsFailed:"Échec du chargement des préréglages",loadCurrentInfoFailed:"Échec du chargement des informations actuelles"},commandSelector:{...e.chat.commandSelector,loading:"Chargement des commandes...",emptyWithSearch:'Aucune commande trouvée pour "{{search}}"',empty:"Aucune commande disponible.",navigationHint:"Navigation : Haut/Bas ou Ctrl+P/N | Sélection : Entrée | Compléter : Espace/Tab | Annuler : Échap",types:{...e.chat.commandSelector.types,workflow:"Flux de travail",skill:"Compétence",mcp:"MCP"}},model:{...e.chat.model,selectModel:"Sélectionner un modèle",noModelSelected:"Aucun modèle sélectionné",selectModelHint:"Choisissez un modèle pour commencer la discussion.",providerNotConfigured:"Fournisseur non configuré",configureProviderHint:"Configurez votre fournisseur dans les paramètres avant de choisir un modèle.",configureProvider:"Configurer le fournisseur",openSettings:"Ouvrir les paramètres",noModelsAvailable:"Aucun modèle disponible",selectModelBeforeSend:"Veuillez sélectionner un modèle avant l'envoi.",selectModelBeforeRetry:"Veuillez sélectionner un modèle avant de réessayer."},streaming:{...e.chat.streaming,assistant:"Bodhi",requestCancelled:"Requête annulée",sendFailed:"Échec de l'envoi du message",retryFailed:"Échec de la nouvelle tentative",modelConfigNotLoaded:"Configuration du modèle non chargée",agentUnavailable:"Agent indisponible",noActiveChatTitle:"Aucune conversation active",noActiveChatSendContent:"Veuillez créer ou sélectionner une conversation avant d'envoyer un message.",noActiveChatRetryContent:"Veuillez créer ou sélectionner une conversation avant de réessayer.",noChatIdTitle:"ID de conversation manquant",noChatIdSendContent:"La conversation actuelle n'a pas d'ID. Créez une nouvelle conversation puis réessayez.",noChatIdRetryContent:"La conversation actuelle n'a pas d'ID. Créez une nouvelle conversation puis réessayez."},selectionToolbar:{...e.chat.selectionToolbar,selectMessages:"Sélectionner des messages",selectedCount:"{{selected}} sélectionné(s) ({{total}} au total)",selectAll:"Tout sélectionner",clear:"Effacer",exportMarkdown:"Exporter en Markdown",exportPdf:"Exporter en PDF",done:"Terminé"},subAgents:{...e.chat.subAgents,title:"Sous-agents",expand:"Développer",collapse:"Réduire",continue:"Continuer ici",open:"Ouvrir",retry:"Réessayer",hiddenHint:"{{count}} sous-agent(s) masqué(s)"},chatItem:{...e.chat.chatItem,edit:"Modifier",childTag:"Enfant"},systemPromptSelector:{...e.chat.systemPromptSelector,defaultTag:"Par défaut",hide:"Masquer",preview:"Aperçu",copy:"Copier",lines:"{{count}} lignes",words:"{{count}} mots",chars:"{{count}} caractères",noContent:"Aucun contenu"},title:{...e.chat.title,updated:"Titre de conversation mis à jour",generateFailed:"Échec de génération du titre de conversation"},respond:{...e.chat.respond,customAnswerPlaceholder:"Saisissez votre réponse personnalisée..."},multiPane:{...e.chat.multiPane,splitHorizontal:"Diviser horizontalement",splitVertical:"Diviser verticalement",closePane:"Fermer le panneau",selectSessionHint:"Sélectionnez une session pour voir les messages",hoverToSplitHint:"Survolez un panneau pour le diviser et comparer les conversations",selectMessagesToExport:"Sélectionnez des messages à exporter"},messageCard:{...e.chat.messageCard,authRequired:"Authentification requise",goToSettings:"Aller aux paramètres",assistantThinking:"L'assistant réfléchit...",reasoning:"Raisonnement",selected:"Sélectionné",selectedTool:"Outil sélectionné"},messageActions:{...e.chat.messageActions,copy:"Copier",exportMarkdown:"Exporter en Markdown",exportPdf:"Exporter en PDF",restoreChat:"Restaurer uniquement la conversation",restoreFilesAndChat:"Restaurer les fichiers et la conversation",deleteMessage:"Supprimer le message",savedFile:"Enregistré dans {{filename}}",nothingToExport:"Rien à exporter",exportFailed:"Échec de l'export",cannotRestore:"Impossible de restaurer ce message",restorePartial:"Conversation restaurée. {{count}} fichier(s) n'ont pas pu être restaurés.",restoreFilesSuccess:"Fichiers et conversation restaurés ({{count}} message(s) supprimé(s)).",restoreSuccess:"Conversation restaurée ({{count}} message(s) supprimé(s)).",restoreFailed:"Échec de restauration de la conversation",pdfUnavailable:"L'export PDF n'est pas disponible dans cet environnement",exportingPdf:"Export PDF en cours..."},session:{...e.chat.session,defaultTitle:"Nouvelle session"}},settings:{...t.settings,page:{...t.settings.page,tabs:{...t.settings.page.tabs,hooks:"Hooks",envVars:"Variables d'environnement"}},configTab:{...t.settings.configTab,tabs:{...e.settings.configTab.tabs,general:"Général",tools:"Outils"},toolsTitle:"Disponibilité des outils",toolsDescription:"Activez/désactivez les outils pouvant être envoyés au modèle IA. Les outils désactivés sont masqués du schéma d'outils du modèle.",toolsEmpty:"Aucun outil disponible actuellement.",reloadTools:"Recharger les outils",loadBambooConfigFailed:"Échec du chargement de la configuration Bamboo",bambooConfigSaved:"Configuration Bamboo enregistrée",saveBambooConfigFailed:"Échec de l'enregistrement de la configuration Bamboo"},keywordMaskingTab:{...t.settings.keywordMaskingTab,invalidRegexPattern:"Motif regex invalide"}},components:{...e.components,workflowResult:{...e.components.workflowResult,userWorkflow:"Workflow utilisateur",waitingForResult:"En attente du résultat du workflow...",executionFailed:"Échec d'exécution du workflow",retryWorkflow:"Relancer le workflow",copyParameters:"Copier les paramètres",copyResult:"Copier le résultat",expandResult:"Développer le résultat",collapseResult:"Réduire le résultat"},toolResult:{...e.components.toolResult,waiting:"En attente",waitingForResult:"En attente du résultat...",executionFailed:"Échec d'exécution de l'outil",copyResult:"Copier le résultat",checkpoint:"Point de contrôle",checkpointNone:"Aucun",diffTruncated:"Le diff est trop long et a été tronqué"},toolCall:{...e.components.toolCall,liveOutput:"Sortie en direct",keyParameters:"Paramètres clés",fullParameters:"Paramètres complets",copyParameters:"Copier les paramètres"},plan:{...e.components.plan,executionPlan:"Plan d'exécution",goal:"Objectif",steps:"Étapes",stepTitle:"Étape {{number}}",reason:"Raison",estimated:"Estimé",tools:"Outils",prerequisites:"Prérequis",potentialRisks:"Risques potentiels ({{count}})",totalEstimatedTime:"Temps total estimé",feedbackPlaceholder:"Indiquez à l'agent ce que vous souhaitez ajuster...",sendFeedback:"Envoyer un retour",refinePlan:"Affiner le plan",executePlan:"Exécuter le plan"},question:{...e.components.question,agentQuestion:"Question de l'agent",context:"Contexte",chooseOption:"Choisir une option",recommended:"Recommandé",customAnswerHint:"Aucune option adaptée ? Saisissez votre propre réponse.",customAnswerPlaceholder:"Saisissez votre réponse personnalisée...",submitAnswer:"Soumettre la réponse"},questionDialog:{...e.components.questionDialog,selectOptionWarning:"Veuillez sélectionner une option avant de soumettre.",responseSubmitted:"Réponse soumise",responseSubmittedContinue:"Réponse soumise, l'IA va continuer le traitement",submitFailed:"Échec de soumission de la réponse",noModelConfigured:"Aucun modèle configuré",customAnswerTip:"Réponse personnalisée",otherTypeBelow:"Autre (saisir ci-dessous)",confirm:"Confirmer"},skillManager:{...e.components.skillManager,title:"Compétences",refresh:"Actualiser",skillsRefreshed:"Compétences actualisées",lastUpdated:"Dernière mise à jour : {{value}}",justNow:"à l'instant",secondsAgo:"il y a {{count}} s",minutesAgo:"il y a {{count}} min",searchPlaceholder:"Rechercher des compétences",readOnlyHint:"Mode lecture seule : les compétences ne peuvent pas être modifiées.",noSkillsFound:"Aucune compétence trouvée",noMatch:"Aucune compétence ne correspond à la recherche",loadFailed:"Échec du chargement des compétences",getFailed:"Échec de récupération de la compétence"},skillSelector:{...e.components.skillSelector,placeholder:"Sélectionner des compétences"},imageGrid:{...e.components.imageGrid,preview:"Aperçu",ocr:"OCR"},todoList:{...e.components.todoList,title:"Liste des tâches",evaluating:"Évaluation en cours",pin:"Épingler",unpin:"Désépingler",llmEvaluation:"Évaluation LLM",tools:"outils",dependsOn:"Dépend de : {{deps}}",dependencies:"dépendances",status:{...e.components.todoList.status,pending:"En attente",inProgress:"En cours",completed:"Terminée",blocked:"Bloquée",skipped:"Ignorée",failed:"Échouée"},listStatus:{active:"Active",completed:"Terminée",abandoned:"Abandonnée"},percentComplete:"{{percent}} % terminé",progressLabel:"{{completed}} / {{total}} tâches terminées",currentLabel:"En cours : {{description}}"},tokenUsage:{...e.components.tokenUsage,title:"Utilisation des tokens",summary:"Résumé",system:"Système",messages:"Messages",tokens:"tokens",usedPercent:"{{value}} % utilisés"},approval:{...e.components.approval,workflow:"Workflow",executionRequest:"Demande d'exécution",aiWantsExecute:"L'IA souhaite exécuter l'action suivante"},toolSession:{...e.components.toolSession,title:"Session d'outils",running:"En cours",done:"Terminé",error:"Erreur",completedOnly:"{{completed}} terminé(s)",completedWithErrors:"{{completed}} terminé(s) (avec erreurs)",completedProgress:"{{completed}} / {{total}} terminés",noPersistedMessage:"Aucune sortie persistée",deleteMessage:"Supprimer la session d'outils"},mermaid:{...e.components.mermaid,loadingDiagram:"Chargement du diagramme...",diagramError:"Erreur de diagramme Mermaid",errorTitlePrefix:"Erreur",checkConsoleHint:"Vérifiez la syntaxe Mermaid ou ouvrez la console pour les détails.",fixMermaid:"Corriger Mermaid",renderingDiagram:"Rendu du diagramme...",exportSvg:"Exporter en SVG",exportFailed:"Échec de l'export du diagramme"}}}},ke=e=>{const t=be(e);return{...t,layout:{...e.layout,showSidebar:"साइडबार दिखाएँ"},common:{...e.common,workspace:"वर्कस्पेस",server:"सर्वर:",category:"श्रेणी:",parameters:"पैरामीटर्स",approve:"स्वीकृत करें",reject:"अस्वीकृत करें"},chat:{...t.chat,sidebar:{...t.chat.sidebar,createFailedTitle:"सेशन बनाने में विफल",createFailedUnknown:"अज्ञात त्रुटि",delete:{title:"सेशन हटाएँ",confirm:"क्या आप वाकई इस सेशन को हटाना चाहते हैं?"},deleteByDate:{title:"{{date}} के सेशन हटाएँ",confirm:"क्या आप {{date}} के {{count}} सेशन हटाना चाहते हैं?"},newSessionWithPrompt:"{{prompt}} के साथ नया सेशन"},workspace:{...e.chat.workspace,modalTitle:"वर्कस्पेस पथ सेट करें",invalidTitle:"अमान्य वर्कस्पेस पथ",issuesDetected:"वर्कस्पेस पथ में संभावित समस्याएँ मिलीं:",confirmSaveInvalid:"क्या आप फिर भी यह पथ सहेजना चाहते हैं?",errorEnterPath:"कृपया वर्कस्पेस पथ दर्ज करें",errorSaveFailed:"वर्कस्पेस पथ सहेजने में विफल",label:"वर्कस्पेस",browseFolder:"फ़ोल्डर ब्राउज़ करें",descriptionTitle:"वर्कस्पेस पथ विवरण",checkTitle:"वर्कस्पेस पथ जाँच",checkDescription:"वर्कस्पेस पथ सत्यापन विफल।",recentTitle:"हाल के वर्कस्पेस",suggestedTitle:"सुझाए गए वर्कस्पेस",noRecentWorkspaces:"कोई हाल का वर्कस्पेस नहीं",noSuggestions:"कोई सुझाव नहीं",defaultWorkspaceName:"वर्कस्पेस",validWorkspace:"वैध वर्कस्पेस",fileCount:"{{count}} फ़ाइलें"},input:{...e.chat.input,placeholder:"संदेश भेजें...",placeholderWithReference:"संदेश भेजें (संदर्भ सहित)",placeholderWithWorkflows:"संदेश भेजें... (वर्कफ़्लो के लिए '/' टाइप करें)",toolCallsOnly:"केवल टूल कॉल (अनुमत टूल: {{tools}})",autoPrefixMode:"ऑटो-प्रिफिक्स मोड: {{prefix}} (टूल चुनने के लिए '/' टाइप करें)",toolSpecificMode:"टूल-विशिष्ट मोड (अनुमत टूल: {{tools}})",processingFiles:"फ़ाइलें प्रोसेस की जा रही हैं…",addAttachments:"संलग्नक जोड़ें",referenceWorkspaceFiles:"वर्कस्पेस फ़ाइलों का संदर्भ दें",imageCountSingular:"{{count}} छवि",imageCountPlural:"{{count}} छवियाँ",moreImages:"+{{count}} और",clearAllImages:"सभी छवियाँ साफ़ करें",reasoningTitle:"रीज़निंग प्रयास: {{label}}",reasoning:{...e.chat.input.reasoning,low:"कम",medium:"मध्यम",high:"उच्च",xhigh:"बहुत उच्च",max:"अधिकतम"},strictToolOnlyMode:"सख्त केवल-टूल मोड",toolSpecificModeLabel:"टूल-विशिष्ट मोड",allowedTools:"अनुमत टूल:",autoPrefixLabel:"ऑटो प्रिफिक्स: {{prefix}}",mustStartWithPrefix:'संदेश "{{prefix}}" से शुरू होना चाहिए'},prompt:{...e.chat.prompt,selectorTitle:"सिस्टम प्रॉम्प्ट चुनें",createButton:"नया सेशन बनाएँ",helperText:"AI के लिए आधार सिस्टम प्रॉम्प्ट चुनें। आप सिस्टम सेटिंग्स में प्रॉम्प्ट जोड़ या संपादित कर सकते हैं।",emptyDescription:"कोई सिस्टम प्रॉम्प्ट नहीं मिला। सिस्टम सेटिंग्स में एक जोड़ें।",newSessionSelectorTitle:"नए सेशन के लिए सिस्टम प्रॉम्प्ट चुनें",defaultDescription:"डिफ़ॉल्ट सिस्टम प्रॉम्प्ट।",loadPresetsFailed:"प्रिसेट लोड करने में विफल",loadCurrentInfoFailed:"वर्तमान जानकारी लोड करने में विफल"},commandSelector:{...e.chat.commandSelector,loading:"कमांड लोड हो रहे हैं...",emptyWithSearch:'"{{search}}" से मेल खाने वाली कोई कमांड नहीं मिली',empty:"कोई कमांड उपलब्ध नहीं है।",navigationHint:"नेविगेशन: ऊपर/नीचे या Ctrl+P/N | चयन: Enter | पूर्ण करें: Space/Tab | रद्द: Esc",types:{...e.chat.commandSelector.types,workflow:"वर्कफ़्लो",skill:"स्किल",mcp:"MCP"}},model:{...e.chat.model,selectModel:"मॉडल चुनें",noModelSelected:"कोई मॉडल चयनित नहीं",selectModelHint:"चैट शुरू करने के लिए एक मॉडल चुनें।",providerNotConfigured:"प्रोवाइडर कॉन्फ़िगर नहीं है",configureProviderHint:"मॉडल चुनने से पहले सेटिंग्स में प्रोवाइडर कॉन्फ़िगर करें।",configureProvider:"प्रोवाइडर कॉन्फ़िगर करें",openSettings:"सेटिंग्स खोलें",noModelsAvailable:"कोई मॉडल उपलब्ध नहीं",selectModelBeforeSend:"भेजने से पहले मॉडल चुनें।",selectModelBeforeRetry:"पुनः प्रयास से पहले मॉडल चुनें।"},streaming:{...e.chat.streaming,assistant:"Bodhi",requestCancelled:"अनुरोध रद्द किया गया",sendFailed:"संदेश भेजने में विफल",retryFailed:"पुनः प्रयास विफल",modelConfigNotLoaded:"मॉडल कॉन्फ़िगरेशन लोड नहीं हुआ",agentUnavailable:"एजेंट उपलब्ध नहीं",noActiveChatTitle:"कोई सक्रिय चैट नहीं",noActiveChatSendContent:"संदेश भेजने से पहले चैट बनाएँ या चुनें।",noActiveChatRetryContent:"पुनः प्रयास से पहले चैट बनाएँ या चुनें।",noChatIdTitle:"चैट ID अनुपस्थित",noChatIdSendContent:"वर्तमान चैट में ID नहीं है। नया चैट बनाकर पुनः प्रयास करें।",noChatIdRetryContent:"वर्तमान चैट में ID नहीं है। नया चैट बनाकर पुनः प्रयास करें।"},selectionToolbar:{...e.chat.selectionToolbar,selectMessages:"संदेश चुनें",selectedCount:"{{selected}} चयनित (कुल {{total}})",selectAll:"सभी चुनें",clear:"साफ़ करें",exportMarkdown:"Markdown निर्यात करें",exportPdf:"PDF निर्यात करें",done:"पूर्ण"},subAgents:{...e.chat.subAgents,title:"उप-एजेंट",expand:"विस्तार करें",collapse:"संक्षिप्त करें",continue:"यहीं जारी रखें",open:"खोलें",retry:"पुनः प्रयास करें",hiddenHint:"{{count}} उप-एजेंट छिपे हुए"},chatItem:{...e.chat.chatItem,edit:"संपादित करें",childTag:"चाइल्ड"},systemPromptSelector:{...e.chat.systemPromptSelector,defaultTag:"डिफ़ॉल्ट",hide:"छिपाएँ",preview:"पूर्वावलोकन",copy:"कॉपी करें",lines:"{{count}} पंक्तियाँ",words:"{{count}} शब्द",chars:"{{count}} अक्षर",noContent:"कोई सामग्री नहीं"},title:{...e.chat.title,updated:"चैट शीर्षक अपडेट हुआ",generateFailed:"चैट शीर्षक बनाने में विफल"},respond:{...e.chat.respond,customAnswerPlaceholder:"अपना कस्टम उत्तर लिखें..."},multiPane:{...e.chat.multiPane,splitHorizontal:"क्षैतिज विभाजित करें",splitVertical:"ऊर्ध्वाधर विभाजित करें",closePane:"पैन बंद करें",selectSessionHint:"संदेश देखने के लिए एक सेशन चुनें",hoverToSplitHint:"चैट तुलना के लिए पैन पर होवर करके विभाजित करें",selectMessagesToExport:"निर्यात के लिए संदेश चुनें"},messageCard:{...e.chat.messageCard,authRequired:"प्रमाणीकरण आवश्यक",goToSettings:"सेटिंग्स पर जाएँ",assistantThinking:"सहायक सोच रहा है...",reasoning:"रीज़निंग",selected:"चयनित",selectedTool:"चयनित टूल"},messageActions:{...e.chat.messageActions,copy:"कॉपी करें",exportMarkdown:"Markdown के रूप में निर्यात करें",exportPdf:"PDF के रूप में निर्यात करें",restoreChat:"केवल चैट पुनर्स्थापित करें",restoreFilesAndChat:"फ़ाइलें और चैट पुनर्स्थापित करें",deleteMessage:"संदेश हटाएँ",savedFile:"{{filename}} में सहेजा गया",nothingToExport:"निर्यात करने के लिए कुछ नहीं",exportFailed:"निर्यात विफल",cannotRestore:"यह संदेश पुनर्स्थापित नहीं किया जा सकता",restorePartial:"चैट पुनर्स्थापित हुई। {{count}} फ़ाइल(ें) पुनर्स्थापित नहीं हो सकीं।",restoreFilesSuccess:"फ़ाइलें और चैट पुनर्स्थापित ({{count}} संदेश हटाए गए)।",restoreSuccess:"चैट पुनर्स्थापित ({{count}} संदेश हटाए गए)।",restoreFailed:"चैट पुनर्स्थापित करने में विफल",pdfUnavailable:"इस वातावरण में PDF निर्यात उपलब्ध नहीं है",exportingPdf:"PDF निर्यात हो रहा है..."},session:{...e.chat.session,defaultTitle:"नया सत्र"}},settings:{...t.settings,page:{...t.settings.page,tabs:{...t.settings.page.tabs,envVars:"पर्यावरण वेरिएबल्स"}},configTab:{...t.settings.configTab,loadBambooConfigFailed:"Bamboo कॉन्फ़िग लोड करने में विफल",bambooConfigSaved:"Bamboo कॉन्फ़िग सहेजा गया",saveBambooConfigFailed:"Bamboo कॉन्फ़िग सहेजने में विफल"},keywordMaskingTab:{...e.settings.keywordMaskingTab,title:"कीवर्ड मास्किंग",addKeyword:"कीवर्ड जोड़ें",description:"Copilot API को भेजने से पहले मास्क किए जाने वाले कीवर्ड कॉन्फ़िगर करें। शाब्दिक स्ट्रिंग के लिए सटीक मिलान या पैटर्न के लिए regex उपयोग करें। सभी मिलान [MASKED] से बदले जाएंगे।",empty:"कोई कीवर्ड मास्किंग नियम कॉन्फ़िगर नहीं है",cancel:"रद्द करें",patternPlaceholder:"मिलान का पैटर्न दर्ज करें",examples:"उदाहरण",exactMatch:"सटीक मिलान",regexPattern:"Regex पैटर्न",enabled:"सक्षम",disabled:"अक्षम",sampleText:"नमूना टेक्स्ट",sampleTextPlaceholder:"नमूना टेक्स्ट दर्ज करें",maskedPreview:"मास्क किया गया पूर्वावलोकन",emptyPattern:"(खाली)",loadFailed:"कीवर्ड मास्किंग कॉन्फ़िगरेशन लोड करने में विफल",saveFailed:"कॉन्फ़िगरेशन सहेजने में विफल",saveSuccess:"कीवर्ड मास्किंग कॉन्फ़िगरेशन सहेजा गया",validationFailedPrefix:"सत्यापन विफल",patternRequired:"पैटर्न खाली नहीं हो सकता",invalidRegexPattern:"अमान्य regex पैटर्न",example:{...e.settings.keywordMaskingTab.example,literalToken:"शाब्दिक टोकन मास्क करें",githubTokens:"GitHub टोकन मास्क करें",awsKeys:"AWS key मास्क करें",emails:"ईमेल पते मास्क करें"}}},components:{...e.components,workflowResult:{...e.components.workflowResult,userWorkflow:"उपयोगकर्ता वर्कफ़्लो",waitingForResult:"वर्कफ़्लो परिणाम की प्रतीक्षा...",executionFailed:"वर्कफ़्लो निष्पादन विफल",retryWorkflow:"वर्कफ़्लो पुनः चलाएँ",copyParameters:"पैरामीटर्स कॉपी करें",copyResult:"परिणाम कॉपी करें",expandResult:"परिणाम विस्तार करें",collapseResult:"परिणाम संक्षिप्त करें"},toolResult:{...e.components.toolResult,waiting:"प्रतीक्षा में",waitingForResult:"परिणाम की प्रतीक्षा...",executionFailed:"टूल निष्पादन विफल",copyResult:"परिणाम कॉपी करें",checkpoint:"चेकपॉइंट",checkpointNone:"कोई नहीं",diffTruncated:"डिफ़ बहुत लंबा है और काट दिया गया है"},toolCall:{...e.components.toolCall,liveOutput:"लाइव आउटपुट",keyParameters:"मुख्य पैरामीटर्स",fullParameters:"पूर्ण पैरामीटर्स",copyParameters:"पैरामीटर्स कॉपी करें"},plan:{...e.components.plan,executionPlan:"निष्पादन योजना",goal:"लक्ष्य",steps:"चरण",stepTitle:"चरण {{number}}",reason:"कारण",estimated:"अनुमानित",tools:"टूल्स",prerequisites:"पूर्वापेक्षाएँ",potentialRisks:"संभावित जोखिम ({{count}})",totalEstimatedTime:"कुल अनुमानित समय",feedbackPlaceholder:"एजेंट को बताएँ क्या समायोजित करना है...",sendFeedback:"फ़ीडबैक भेजें",refinePlan:"योजना परिष्कृत करें",executePlan:"योजना निष्पादित करें"},question:{...e.components.question,agentQuestion:"एजेंट प्रश्न",context:"संदर्भ",chooseOption:"एक विकल्प चुनें",recommended:"अनुशंसित",customAnswerHint:"कोई उपयुक्त विकल्प नहीं? अपना उत्तर लिखें।",customAnswerPlaceholder:"अपना कस्टम उत्तर लिखें...",submitAnswer:"उत्तर सबमिट करें"},questionDialog:{...e.components.questionDialog,selectOptionWarning:"सबमिट करने से पहले एक विकल्प चुनें।",responseSubmitted:"उत्तर सबमिट किया गया",responseSubmittedContinue:"उत्तर सबमिट किया गया, AI आगे प्रोसेस करेगा",submitFailed:"उत्तर सबमिट करने में विफल",noModelConfigured:"कोई मॉडल कॉन्फ़िगर नहीं है",customAnswerTip:"कस्टम उत्तर",otherTypeBelow:"अन्य (नीचे लिखें)",confirm:"पुष्टि करें"},skillManager:{...e.components.skillManager,title:"स्किल्स",refresh:"रीफ्रेश करें",skillsRefreshed:"स्किल्स रीफ्रेश हुईं",lastUpdated:"अंतिम अपडेट: {{value}}",justNow:"अभी-अभी",secondsAgo:"{{count}} सेकंड पहले",minutesAgo:"{{count}} मिनट पहले",searchPlaceholder:"स्किल्स खोजें",readOnlyHint:"रीड-ओनली मोड: स्किल्स संपादित नहीं की जा सकतीं।",noSkillsFound:"कोई स्किल नहीं मिली",noMatch:"खोज से मेल खाती कोई स्किल नहीं मिली",loadFailed:"स्किल्स लोड करने में विफल",getFailed:"स्किल प्राप्त करने में विफल"},skillSelector:{...e.components.skillSelector,placeholder:"स्किल्स चुनें"},imageGrid:{...e.components.imageGrid,preview:"पूर्वावलोकन",ocr:"OCR"},todoList:{...e.components.todoList,title:"कार्य सूची",evaluating:"मूल्यांकन जारी",pin:"पिन करें",unpin:"अनपिन करें",llmEvaluation:"LLM मूल्यांकन",tools:"टूल्स",dependsOn:"निर्भर करता है: {{deps}}",dependencies:"निर्भरताएँ",status:{...e.components.todoList.status,pending:"लंबित",inProgress:"प्रगति में",completed:"पूर्ण",blocked:"अवरोधित"}},tokenUsage:{...e.components.tokenUsage,title:"टोकन उपयोग",summary:"सारांश",system:"सिस्टम",messages:"संदेश",tokens:"टोकन",usedPercent:"{{value}}% उपयोग"},approval:{...e.components.approval,workflow:"वर्कफ़्लो",executionRequest:"निष्पादन अनुरोध",aiWantsExecute:"AI निम्नलिखित क्रिया निष्पादित करना चाहता है"},toolSession:{...e.components.toolSession,title:"टूल सेशन",running:"चल रहा है",done:"पूर्ण",error:"त्रुटि",completedOnly:"{{completed}} पूर्ण",completedWithErrors:"{{completed}} पूर्ण (त्रुटियों सहित)",completedProgress:"{{completed}} / {{total}} पूर्ण",noPersistedMessage:"कोई स्थायी आउटपुट नहीं",deleteMessage:"टूल सेशन हटाएँ"},mermaid:{...e.components.mermaid,loadingDiagram:"डायग्राम लोड हो रहा है...",diagramError:"Mermaid डायग्राम त्रुटि",errorTitlePrefix:"त्रुटि",checkConsoleHint:"Mermaid सिंटैक्स जाँचें या विवरण के लिए कंसोल खोलें।",fixMermaid:"Mermaid ठीक करें",renderingDiagram:"डायग्राम रेंडर हो रहा है...",exportSvg:"SVG निर्यात करें",exportFailed:"डायग्राम निर्यात विफल"}}}},Pe=e=>{var t,s,i,o,a,n,u,c,f,P,M,T,w,A,R,F,x,D,E,L,I,q,O;return{...e,common:{...e.common,saveAnyway:"仍然儲存",parentDirectory:"上層目錄",currentPath:"目前路徑:",cancel:"取消",ok:"確定",apply:"套用",save:"儲存",delete:"刪除",yes:"是",no:"否",home:"首頁",download:"下載",directory:"目錄",file:"檔案"},app:{...e.app,loading:"載入中...",errorBoundary:{title:"出了點問題",description:"此區域發生了意外錯誤。您可以重試,或者如果問題持續存在,請重新載入頁面。",tryAgain:"重試",showDetails:"顯示詳情",hideDetails:"隱藏詳情"},passwordGate:{...e.app.passwordGate,title:"請輸入訪問密碼",description:"當前訪問需要先通過密碼驗證,驗證成功後才會進入應用。",passwordLabel:"訪問密碼",passwordPlaceholder:"請輸入訪問密碼",submit:"驗證並進入",validation:{required:"請輸入訪問密碼",verifyFailed:"密碼驗證失敗"}},notifications:{...e.app.notifications,toolApproval:{title:"需要批准:{{tool}}",body:"工具 {{tool}} 需要您的批准才能執行",unknownTool:"未知工具"},contextPressure:{title:"上下文視窗即將耗盡"},backgroundTask:{completedTitle:"後台任務已完成",completedBody:"「{{title}}」已完成",completedFallback:"後台任務已完成"},clarification:{title:"Bodhi AI 需要您的回覆",fallbackBody:"代理需要您回答一個問題"},conversationSummarized:"對話已摘要:壓縮了 {{messages}} 條訊息,節省了 {{tokens}} 個 token",allTasksCompleted:"所有任務已完成!總輪次:{{rounds}},工具呼叫:{{toolCalls}}",evaluatingTasks:"正在評估 {{count}} 個任務...",evaluationCompleteUpdated:"評估完成:已更新 {{count}} 個任務。",evaluationCompleteNoUpdates:"評估完成:無需更新"},defaultSessionTitle:"新會話"},commandPalette:{...e.commandPalette,searchPlaceholder:"搜尋會話、設定和快捷操作",navigationHint:"使用 ↑↓ 導航,Enter 開啟,Esc 關閉。",empty:"沒有符合的指令",groups:{quickActions:"快捷操作",settings:"系統設定"},badges:{quickAction:"操作",pinned:"置頂",running:"執行中",child:"子會話",childSession:"子會話",rootSession:"會話"},actions:{newSession:"建立新會話",openProviderSettings:"開啟 Provider 設定",openMcpSettings:"開啟 MCP 設定",openWorkflowSettings:"開啟工作流程設定",openSessionsSettings:"開啟會話監控",openSchedulesSettings:"開啟排程"},errors:{actionFailed:"指令執行失敗"}},setup:{welcome:{heading:"歡迎使用 Bodhi",description:"Bodhi 是您的 AI 驅動開發助手。配置一個 AI 供應商即可開始,或直接進入應用。",providerHint:"要開始對話,您需要配置一個 AI 供應商(如 OpenAI、Anthropic)並提供 API 金鑰。",proxyHint:"在公司代理後面?您可以稍後在系統設定 > 網路中配置代理。"},button:{getStarted:"開始使用",configureProvider:"配置 Provider"},complete:{title:"一切就緒!",restartMessage:"正在重新載入應用..."},error:{completeFailed:"完成設定失敗,請重試。"}},onboarding:{welcome:{title:"歡迎使用 Bodhi!",description:"Bodhi 是您的 AI 驅動開發助手。讓我們快速了解一下介面。"},newSession:{title:"新建會話",description:"點擊這裡開始一個與 AI 助手的新對話。"},taskTemplates:{title:"任務模板",description:"從預置模板中選擇,如程式碼審查、Bug 調查、重構等,快速啟動工作。"},modelPicker:{title:"模型選擇",description:"隨時在此切換 AI 模型和供應商。"},sidebar:{title:"會話側邊欄",description:"在此管理您的會話——搜尋、過濾、置頂和切換對話。"},settings:{title:"設定",description:"配置 AI 供應商、代理設定、模型映射、MCP 伺服器等。"}},chat:{...e.chat,sidebar:{...e.chat.sidebar,newSession:"新建會話",searchPlaceholder:"搜尋會話",empty:{noSessions:"暫無會話",hint:"點擊「新建會話」開始"},dateGroups:{today:"今天",yesterday:"昨天",thisWeek:"本週",thisMonth:"本月",pinned:"置頂",scheduled:"計劃任務"},actions:{collapseChildren:"摺疊子會話",expandChildren:"展開子會話"}},input:{...e.chat.input,placeholder:"傳送訊息...",placeholderWithReference:"傳送訊息(包含引用)",placeholderWithWorkflows:"傳送訊息...(輸入 '/' 使用工作流程)",addAttachments:"新增附件",processingFiles:"正在處理檔案…",imageCountSingular:"{{count}} 張圖片",imageCountPlural:"{{count}} 張圖片",clearAllImages:"清除所有圖片",dropImagesHere:"將圖片拖放到此處",referencing:"引用中",reasoning:{...(t=e.chat.input)==null?void 0:t.reasoning,max:"最大"}},actions:{...e.chat.actions,regenerate:"重新生成回應",retryFailed:"重試失敗的請求",cancelRequest:"取消請求",sendMessage:"傳送訊息",copyMessage:"複製訊息",referenceMessage:"引用訊息",generateTitle:"生成 AI 標題",pin:"置頂",unpin:"取消置頂"},workspace:{...e.chat.workspace,placeholder:"例如 /Users/alice/workspace/myproject"},folderBrowser:{...e.chat.folderBrowser,title:"選擇工作區資料夾",selectCurrent:"選擇目前資料夾",emptyFolder:"此資料夾為空"},streaming:{...e.chat.streaming,assistant:"助手"},model:{selectModel:"選擇模型",noModelSelected:"未選擇模型",selectModelHint:"選擇一個模型以開始對話。",providerNotConfigured:"供應商未配置",configureProviderHint:"請先在設定中配置供應商,再選擇模型。",configureProvider:"配置供應商",openSettings:"開啟設定",noModelsAvailable:"無可用模型",selectModelBeforeSend:"請在傳送前選擇模型。",selectModelBeforeRetry:"請在重試前選擇模型。"},scroll:{jumpToTop:"跳到頂部",backToLatest:"回到最新",newMessages:"新訊息",newMessagesWithCount_one:"{{count}} 條新訊息",newMessagesWithCount_other:"{{count}} 條新訊息"},selectionToolbar:{selectMessages:"選擇訊息",selectedCount:"已選 {{selected}} 條(共 {{total}} 條)",selectAll:"全選",clear:"清除",exportMarkdown:"匯出 Markdown",exportPdf:"匯出 PDF",done:"完成"},subAgents:{title:"子代理",expand:"展開",collapse:"摺疊",continue:"在此繼續",open:"開啟",retry:"重試",hiddenHint:"{{count}} 個子代理已隱藏"},messageCard:{...e.chat.messageCard,assistantCompactingContext:"助手正在壓縮上下文...",assistantCompactingContextDegraded:"助手正在壓縮上下文(降級模式)...",assistantCompactingContextFailed:"助手壓縮上下文失敗,繼續中...",assistantUpdatingMemory:"助手正在更新記憶...",assistantRunningTool:"助手正在執行 {{tool}}..."},messageActions:{...e.chat.messageActions,restoreChat:"僅恢復聊天",restoreFilesAndChat:"恢復檔案和聊天",deleteFailed:"刪除訊息失敗",savedFile:"已儲存至 {{filename}}",cannotRestore:"無法恢復此訊息",restorePartial:"聊天已恢復。{{count}} 個檔案無法恢復。",restoreFilesSuccess:"檔案和聊天已恢復(已刪除 {{count}} 則訊息)。",restoreSuccess:"聊天已恢復(已刪除 {{count}} 則訊息)。",pdfUnavailable:"此環境不支援 PDF 匯出",exportingPdf:"正在匯出 PDF..."},prompt:{...e.chat.prompt,systemCard:{title:"系統提示詞",viewEnhanced:"查看增強版",viewBase:"查看基礎版",copy:"複製",snapshotTitle:"提示快照",sections:{base:"基礎提示",enhancement:"增強層",workspace:"工作區",instruction:"指令層",env:"環境變數",skills:"技能",toolGuide:"工具指引",dream:"Dream Notebook",sessionMemory:"會話記憶",externalMemory:"記憶層",taskList:"任務列表",effective:"最終提示詞"}}},compression:{tag:"已壓縮上下文",timelineDetail:"已歸檔 {{count}} 條訊息",timelineAria:"{{time}},{{detail}}",tooltip:"最近一次壓縮:{{time}},已歸檔 {{count}} 條訊息",archivedShort:"已歸檔 {{count}} 條"},emptyLauncher:{title:"從任務開始",subtitle:"在目前分欄中建立一個聚焦會話,並先預填第一條訊息,再由你決定是否發送。",hint:"不會自動發送,你可以先編輯提示詞。",actions:{blank:{title:"空白會話",description:"使用預設助手從零開始,並保留空白輸入框。",sessionTitle:"新建會話"},codeReview:{title:"程式碼審查",description:"開啟一個面向審查的會話,並預填可編輯的審查說明。",sessionTitle:"程式碼審查"},tokenUsage:{title:"Token 使用調查",description:"診斷上下文膨脹、截斷風險和 token 預算壓力。",sessionTitle:"Token 使用調查"}},errors:{createFailed:"建立會話失敗"}},fileReference:{title:"@ 檔案引用",setWorkspace:"設定工作區",noMatches:"未找到符合的檔案",emptyDirectory:"目錄為空"},commandSelector:{...e.chat.commandSelector,loading:"正在載入指令...",emptyWithSearch:"沒有符合「{{search}}」的指令",empty:"沒有可用的指令。",navigationHint:"導航:↑↓ 或 Ctrl+P/N | 選擇:Enter | 完成:Space/Tab | 取消:Esc",types:{workflow:"工作流程",skill:"技能",mcp:"MCP"}},systemPromptSelector:{defaultTag:"預設",hide:"隱藏",preview:"預覽",copy:"複製",lines:"{{count}} 行",words:"{{count}} 詞",chars:"{{count}} 字元",noContent:"無內容"},chatItem:{edit:"編輯",childTag:"子"},title:{updated:"會話標題已更新",generateFailed:"生成會話標題失敗"},respond:{customAnswerPlaceholder:"輸入自訂回答..."},multiPane:{splitHorizontal:"水平分割",splitVertical:"垂直分割",closePane:"關閉面板",selectSessionHint:"選擇會話以查看訊息",hoverToSplitHint:"將游標移至面板上方以分割並比較會話",selectMessagesToExport:"選擇要匯出的訊息"}},settings:{...e.settings,page:{...e.settings.page,title:"系統設定",tabs:{...e.settings.page.tabs,config:"設定",prompts:"提示詞",mermaid:"Mermaid",mcp:"MCP",modelLimits:"模型限制",metrics:"指標",sessions:"會話",schedules:"排程",app:"應用",provider:"供應商",hooks:"Hooks",masking:"脫敏",envVars:"環境變數",workflows:"工作流程",skills:"技能"},groups:{...e.settings.page.groups,ai:"AI",toolsAndExtensions:"工具與擴展",securityAndPrivacy:"安全",monitoring:"監控",system:"系統"}},configTab:{...e.settings.configTab,loadConfigFailed:"載入配置失敗",invalidConfig:"配置無效",saveConfigSuccess:"配置儲存成功",saveConfigFailed:"儲存配置失敗",backendSaved:"後端位址已儲存",backendResetDefault:"後端位址已重設為預設值",providerMovedTitle:"Provider 配置已遷移",providerMovedDescription:"GitHub Copilot 和其他 Provider 配置已遷移到 Provider Settings 分頁,請前往該頁面設定。",backendApiBaseUrlTitle:"後端 API 基礎位址",backendApiHint:"必須包含 /v1 路徑",resetToDefault:"恢復預設",save:"儲存",language:"語言",languageEnglish:"English",languageChinese:"簡體中文",languageTraditionalChinese:"繁體中文",languageFrench:"Français",languageJapanese:"日本語",languageHindi:"印地語",backendUrlEmpty:"後端位址不能為空",backendUrlInvalidProtocol:"後端位址必須以 http:// 或 https:// 開頭",backendUrlInvalidUrl:"後端位址不是有效的 URL",backendUrlMustEndWithV1:'後端位址必須以 "/v1" 結尾',accessPassword:{validation:{currentPasswordRequired:"請輸入目前密碼",newPasswordRequired:"請輸入新密碼",confirmPasswordRequired:"請再次輸入新密碼",minLength:"密碼至少需要 4 個字元",passwordMismatch:"兩次輸入的密碼不一致"}}},appTab:{...e.settings.appTab,language:"語言",languageEnglish:"English",languageChinese:"簡體中文",languageTraditionalChinese:"繁體中文",languageFrench:"Français",languageJapanese:"日本語",languageHindi:"印地語",darkMode:"深色模式",dangerZone:"危險操作",dangerDescription:"以下操作不可撤銷,所有資料將被永久刪除。",deleteAllTitle:"刪除所有會話",deleteAllDescription:"確認刪除?將刪除所有會話(置頂除外)。",deleteAllButton:"刪除所有會話",deleteEmptyTitle:"刪除空白會話",deleteEmptyDescription:"確認刪除?將刪除所有空白會話(置頂除外)。",deleteEmptyButton:"刪除空白會話",clearLocalStorageTitle:"清除本地儲存",clearLocalStorageDescription:"確認清除?這將刪除所有本地儲存資料並重置應用。",clearLocalStorageButton:"清除本地儲存",confirmDeleteAll:"確認,刪除全部",confirmDeleteEmpty:"確認,刪除空白",confirmClear:"確認,清除",resetApplicationTitle:"重置應用",resetApplicationIntro:"確認重置?這將執行以下操作:",resetStepDeleteAllSessions:"刪除所有會話(包括置頂)",resetStepClearStorage:"清除所有本地儲存資料",resetStepResetConfig:"將 config.json 重置為預設值",resetStepSetupFlow:"下次啟動時觸發初始設定流程",resetStepReload:"重新載入應用",resetConfirm:"確認,重置全部",resetButton:"重置應用(清空全部資料)"},schedulesTab:{...e.settings.schedulesTab,loadFailed:"載入排程失敗",loadSessionsFailed:"載入排程會話失敗",createFailed:"建立排程失敗",updateFailed:"更新排程失敗",deleteFailed:"刪除排程失敗",runNowFailed:"立即執行失敗",taskMessageRequired:"啟用自動執行時必須填寫任務訊息",created:"排程已建立",updated:"排程已更新",deleted:"排程已刪除",enqueuedRun:"已加入執行佇列",loading:"載入中...",yes:"是",no:"否",optional:"(可選)",defaultName:"我的排程",createTitle:"建立排程",listTitle:"排程列表",scheduleSessionsTitle:"排程會話",scheduleRunsTitle:"排程執行記錄",noSessionsYet:"暫無會話。",noRunsYet:"暫無執行記錄。",loadRunsFailed:"載入排程執行記錄失敗",editTitle:"編輯排程",nonIntervalReadOnly:"僅間隔觸發器支援快速間隔編輯。",columns:{...(s=e.settings.schedulesTab)==null?void 0:s.columns,name:"名稱",status:"狀態",activity:"活動",autoExecute:"自動執行",model:"模型",enabled:"啟用",intervalSeconds:"間隔(秒)",nextRun:"下次執行",lastRun:"最近執行",actions:"操作"},triggerTypes:{interval:"間隔",daily:"每天",weekly:"每週",monthly:"每月",cron:"Cron"},misfirePolicyOptions:{runOnce:"執行一次",skip:"跳過",catchUpAll:"補執行全部",catchUpWindow:"補執行視窗"},overlapPolicyOptions:{queueOne:"排隊一個",skip:"跳過重疊執行",allow:"允許重疊"},form:{...(i=e.settings.schedulesTab)==null?void 0:i.form,name:"名稱",triggerType:"觸發類型",intervalSeconds:"間隔秒數",dailyHour:"時",dailyMinute:"分",weeklyWeekdays:"工作日",monthlyDays:"月份天數",monthlyDaysPlaceholder:"例如 1, 15, 28",cronExpr:"Cron 表示式",cronExprPlaceholder:"例如 0 9 * * 1-5",timezone:"時區",timezonePlaceholder:"例如 Asia/Taipei",startAt:"開始時間",endAt:"結束時間",datetimePlaceholder:"RFC3339 格式,例如 2026-04-05T09:00:00Z",misfirePolicy:"錯過策略",overlapPolicy:"重疊策略",catchUpWindowMaxRuns:"補執行最大執行次數",catchUpWindowMaxLatenessSeconds:"補執行最大延遲(秒)",enabled:"啟用",taskMessage:"任務訊息",taskMessagePlaceholder:"(可選)要執行的任務",model:"模型",modelPlaceholder:"(可選)例如 gpt-4o-mini",modelRequiredIfAuto:"啟用自動執行時必填",autoExecute:"自動執行",systemPrompt:"系統提示詞",workspacePath:"工作區路徑",enhancePrompt:"增強提示"},validation:{...(o=e.settings.schedulesTab)==null?void 0:o.validation,nameRequired:"名稱不能為空",triggerRequired:"觸發設定不能為空",intervalRequired:"間隔不能為空",weekdaysRequired:"至少選擇一個工作日",monthDaysRequired:"至少選擇一個月份天數",invalidMonthDays:"月份天數必須是 1-31 之間的逗號分隔值",cronRequired:"Cron 表示式不能為空"},actions:{...(a=e.settings.schedulesTab)==null?void 0:a.actions,create:"建立",refresh:"重新整理",edit:"編輯",runNow:"立即執行",sessions:"會話",runs:"執行記錄",delete:"刪除",open:"開啟",save:"儲存"},runHistory:{columns:{status:"狀態",scheduledFor:"計劃時間",startedAt:"開始時間",completedAt:"完成時間",session:"會話",duration:"耗時",outcome:"結果"}}},sessionsTab:{...e.settings.sessionsTab,currentSessionTitle:"目前會話",clearMessages:"清除訊息",id:"ID",kind:"類型",clear:"清除"},metricsDashboard:{...e.settings.metricsDashboard,sessionsCount:"{{count}} 個會話",tokensAmount:"{{value}} Token",sessionsTabLabel:"會話 ({{count}})",refresh:"重新整理",sessionDetail:{...(n=e.settings.metricsDashboard)==null?void 0:n.sessionDetail,messages:"訊息",tokens:"Token"},granularity:{daily:"每日",weekly:"每週",monthly:"每月"},compactStats:{...(u=e.settings.metricsDashboard)==null?void 0:u.compactStats,combinedTokens:"合併 Token",chatTokens:"聊天 Token",forwardTokens:"Forward Token",avgTokensPerSession:"平均 Token/會話",estimatedTimeSaved:"預估節省時間",estimatedEfficiencyLift:"預估效率提升",estimatedSpeedMultiplier:"預估速度倍率",estimatedSavedWorkdays:"預估節省工作日",avgRoundsPerSession:"平均回合/會話",toolCallsPerSession:"工具呼叫/會話",activeSessionRate:"活躍會話率",avgTokensPerForward:"平均 Token/Forward",forwardErrorRate:"Forward 錯誤率",streamingRatio:"串流比率",p95ForwardLatency:"P95 Forward 延遲",modelCoverage:"模型覆蓋",endpointCoverage:"端點覆蓋"},derivedMetricsTitle:"衍生指標(摘要)",derivedMetricsSubtitle:"無需額外捲動即可查看更多維度"},charts:{...e.settings.charts,tokenUsageOverTime:"Token 使用趨勢",unifiedTokenUsageOverTime:"Token 使用趨勢(Chat + Forward)",noTokenUsage:"暫無 Token 使用資料",tokenUsageDescription:"按日期/週期展示 Prompt、Completion 與總 Tokens。",unifiedTokenUsageDescription:"按時間展示 Chat 與 Forward 的合併 Token 使用。",modelDistribution:"模型分布",noModelMetrics:"暫無模型指標資料",modelDistributionDescription:"按模型展示總 Token 消耗佔比。",endpointDistribution:"端點分布",noForwardMetrics:"目前範圍內暫無 Forward 指標資料。",total:"總計",prompt:"提示",completion:"補全",chat:"聊天",forward:"Forward"},providerTab:{...e.settings.providerTab,title:"LLM 供應商配置",description:"配置你偏好的 LLM 供應商。點擊「儲存並套用配置」後會儲存並生效。",currentProvider:"目前供應商",activeProvider:"目前啟用的 LLM 供應商",selectProviderRequired:"請選擇供應商",saveAndApply:"儲存並套用配置",loadConfigFailed:"載入供應商配置失敗",checkStatusFailed:"檢查狀態失敗",startCopilotAuthFailed:"啟動 Copilot 認證失敗",copilotAuthSuccess:"Copilot 認證成功!",providerReloaded:"供應商已使用新認證重新載入。",completeAuthFailed:"完成認證失敗,請重試。",userCodeCopied:"使用者代碼已複製到剪貼簿!",copyCodeFailedPrefix:"複製失敗,請手動複製:",logoutSuccess:"已登出 Copilot",logoutFailed:"登出 Copilot 失敗",unknownError:"未知錯誤",invalidConfig:"配置無效",invalidConfigPrefix:"配置無效",fetchModelsCopilotFailed:"取得模型失敗,請先完成 Copilot 認證後重試。",fetchModelsFailed:"取得模型失敗,請檢查 API Key 與 Base URL。",noModelsReturned:"未返回模型,請先完成 Copilot 認證後再取得。",foundModels:"已找到 {{count}} 個可用模型",fetchModelsErrorPrefix:"取得模型失敗",saveConfigSuccess:"配置儲存成功",saveConfigFailed:"儲存配置失敗",saveConfigErrorPrefix:"儲存配置失敗",applyConfigSuccess:"配置套用成功,新對話將使用最新配置。",applyConfigFailed:"套用配置失敗",applyConfigErrorPrefix:"套用配置失敗",modelUpdated:"模型更新成功",updateModelFailed:"更新模型失敗",updateModelErrorPrefix:"更新模型失敗",fetchingModels:"正在取得模型...",refreshModelsFrom:"從 {{source}} 重新整理可用模型",fetchModelsFrom:"從 {{source}} 取得可用模型",saveModelChangeFailed:"儲存模型變更失敗",fetchModelsFailedShort:"取得模型失敗",retry:"重試",openaiConfigTitle:"OpenAI 配置",openaiConfigDescription:"輸入 OpenAI API Key 以使用 GPT 模型。你也可以指定自訂 Base URL。",openaiApiKey:"OpenAI API Key",openaiApiKeyRequired:"請輸入 OpenAI API Key",baseUrlOptional:"Base URL(可選)",openaiBaseUrlHelp:"留空將使用預設 OpenAI 介面位址;如有需要請包含完整路徑(例如 /v1)。",defaultModel:"預設模型",fastModel:"快速模型(可選)",fastModelHelp:"用於標題生成、Mermaid 修復、摘要等輕量任務的低成本/快速模型。未設定時使用預設模型。",subAgentModel:"Sub Agent 模型(可選)",subAgentModelHelp:"新建 Sub Agent 時預設使用的模型。未設定時使用快速模型,再回退到預設模型。",visionModel:"視覺模型(可選)",visionModelHelp:"用於圖片理解的視覺模型。當 hooks.image_fallback.mode 設為 'vision' 時,此模型會將圖片描述為文字,讓純文字模型也能理解圖片內容。未設定時使用預設模型。",sameAsDefault:"與預設模型相同",selectModelRequired:"請選擇模型",selectModel:"選擇模型",responsesOnlyModelsOptional:"僅 Responses 模型(可選)",responsesOnlyHelp1:"部分模型僅支援 OpenAI Responses API(不支援 chat/completions)。可在此新增模型 ID 強制 Bamboo 使用",responsesOnlyHelp2:"支援精確匹配(如 gpt-5.3-codex)和後綴 * 的字首匹配(如 gpt-5*)。",anthropicConfigTitle:"Anthropic 配置",anthropicConfigDescription:"輸入 Anthropic API Key 以使用 Claude 模型。",anthropicApiKey:"Anthropic API Key",anthropicApiKeyRequired:"請輸入 Anthropic API Key",anthropicBaseUrlHelp:"留空將使用預設 Anthropic 介面位址;如有需要請包含完整路徑(例如 /v1)。",maxTokensOptional:"最大 Tokens(可選)",maxTokensHelp:"生成時允許的最大 token 數",geminiConfigTitle:"Google Gemini 配置",geminiConfigDescription:"輸入 Google AI API Key 以使用 Gemini 模型。",geminiApiKey:"Gemini API Key",geminiApiKeyRequired:"請輸入 Gemini API Key",geminiBaseUrlHelp:"留空將使用預設 Google AI 介面位址;必要時可填寫完整路徑。",copilotConfigTitle:"GitHub Copilot 配置",copilotConfigDescription:"GitHub Copilot 使用 OAuth 認證,無需 API Key。請確保帳號有有效訂閱。",authStatusTitle:"認證狀態",authenticated:"已認證",notAuthenticated:"未認證",logoutCopilot:"登出 Copilot",authenticateCopilot:"認證 Copilot",refreshStatus:"重新整理狀態",headlessAuth:"無頭認證",headlessAuthHelp:"在控制台輸出登入連結,而不是自動開啟瀏覽器",noModelsLoaded:"尚未載入模型,點擊「從 backend 取得可用模型」。",authFirstThenFetch:"請先完成 Copilot 認證,再取得模型。",copilotUsageTitle:"使用 GitHub Copilot:",copilotUsageStep1:"確保你已開通有效的 GitHub Copilot 訂閱",copilotUsageStep2:"點擊「認證 Copilot」啟動裝置碼流程",copilotUsageStep3:"按終端提示完成認證",copilotAuthModalTitle:"Copilot 認證",cancel:"取消",completedAuthorization:"我已完成授權",browserOpened:"瀏覽器已自動開啟",authStep1:"瀏覽器中應已開啟 GitHub 頁面",authStep2:"複製下方代碼並貼上到 GitHub 頁面",authStep3:"在 GitHub 點擊「Continue」完成授權",visitUrl:"1. 開啟該 URL:",enterCode:"2. 輸入此代碼:",copied:"已複製!",copyCode:"複製代碼",afterContinueHint:"在 GitHub 點擊 Continue 後,請點擊下方「我已完成授權」。",providerModelRef:"供應商模型目錄",providerModelRefHelp:"使用後端提供的模型目錄進行模型選擇。啟用後,模型選擇器將顯示供應商目錄中的可用模型,而非手動配置的模型。",catalogModeInfo:"模型來自供應商目錄。",fetchAllModels:"取得所有模型",fetchingAllModels:"正在取得模型...",fetchModelsSuccess:"成功取得 {{count}} 個供應商的模型",fetchModelsPartialSuccess:"已取得 {{success}}/{{total}} 個供應商的模型",providerNotConfigured:"未配置",capabilityVision:"視覺",capabilityTools:"工具",capabilityReasoning:"推理",refreshCatalog:"重新整理目錄",noCatalogModels:"未發現模型,點擊「取得所有模型」載入。"},mcpTab:{...e.settings.mcpTab,status:{connecting:"連接中",ready:"就緒",degraded:"降級",stopped:"已停止",error:"錯誤"},statusGuideTitle:"狀態說明:",statusHelp:{connecting:"伺服器正在啟動或重連中",ready:"伺服器已連接,工具可正常使用",degraded:"伺服器部分可用,部分工具可能失敗",stopped:"伺服器未執行",error:"伺服器啟動失敗或執行時發生錯誤"},statusLastError:"最近錯誤:{{error}}",serverDeleted:"MCP 伺服器已刪除",deleteServerFailed:"刪除 MCP 伺服器失敗",connectedTo:"已連接到 {{name}}",connectServerFailed:"連接 MCP 伺服器失敗",disconnected:"已斷開 {{name}}",disconnectServerFailed:"斷開 MCP 伺服器失敗",toolsRefreshedFor:"{{name}} 的工具已重新整理",refreshToolsFailed:"重新整理工具失敗",statusRefreshed:"MCP 狀態已重新整理",refreshStatusFailed:"重新整理 MCP 狀態失敗",noServerForEditing:"沒有可編輯的伺服器",savedServer:"已儲存 {{name}}",addedServer:"已新增 {{name}}",saveServerFailed:"儲存 MCP 伺服器失敗",copiedConfig:"MCP 配置已複製到剪貼簿",clipboardUnavailable:"剪貼簿不可用,已在彈窗中顯示匯出內容。",invalidJsonPrefix:"JSON 無效",unknownError:"未知錯誤",jsonMustBeObject:"JSON 必須是物件",missingMcpServers:'缺少 mcpServers。請貼上完整 Claude Desktop 風格配置:{ "mcpServers": { ... } }',importSummary:"已匯入 {{count}} 個伺服器(新增 {{added}},更新 {{updated}},刪除 {{removed}})。啟動失敗 {{failed}} 個。",importStartFailures:"部分伺服器未成功啟動,配置已儲存,請在伺服器列表查看錯誤。",importFailed:"匯入 MCP 伺服器失敗",overviewTitle:"MCP 概覽",overviewDescription:"配置外部 MCP 伺服器並查看已註冊的工具別名。",totalServers:"伺服器總數:{{count}}",totalTools:"工具總數:{{count}}",serversTitle:"MCP 伺服器",addServer:"新增伺服器",refreshAll:"全部重新整理",export:"匯出",import:"匯入",importModalTitle:"匯入 MCP 伺服器",importHint:"貼上 Claude Desktop 風格配置片段,例如:",importModeMerge:"合併(Upsert)",importModeReplace:"取代(刪除其餘)",replaceWarning:"取代模式會刪除不在匯入 mcpServers 中的現有 MCP 伺服器。"},mcpServerTable:{...e.settings.mcpServerTable,columns:{name:"名稱",transportType:"傳輸類型",status:"狀態",toolCount:"工具數",actions:"操作"},transportOptions:{sse:"SSE",stdio:"Stdio"},deleteTitle:"刪除 MCP 伺服器",deleteDescription:"確認刪除伺服器「{{name}}」?",empty:"尚未配置 MCP 伺服器",actions:{edit:"編輯",delete:"刪除",disconnect:"斷開",connect:"連接",refreshTools:"重新整理工具"}},mcpServerForm:{...e.settings.mcpServerForm,jsonMustBeObject:"JSON 必須是物件",detectedBulkConfig:"檢測到 mcpServers(批次配置)。批次匯入請使用 MCP 標籤頁中的「匯入」按鈕,或在這裡貼上單個伺服器配置。",missingIdField:"缺少或無效的 id 欄位",missingTransportField:"缺少或無效的 transport 欄位",missingTransportInfo:"缺少傳輸資訊。應包含 transport(Bodhi 格式)或 command/url(主流 MCP 格式)。",invalidJson:"JSON 無效:{{message}}",unknownError:"未知錯誤",editTitle:"編輯 MCP 伺服器",addTitle:"新增 MCP 伺服器",save:"儲存",modeForm:"表單",modeJson:"JSON",jsonError:"JSON 錯誤",serverId:"伺服器 ID",serverIdRequired:"伺服器 ID 不能為空",serverIdPatternError:"僅支援字母、數字、底線和連字號",displayName:"顯示名稱",enabled:"啟用",enabledHelp:"停用的伺服器會保留在配置中,但不會自動啟動。",transportType:"傳輸類型",transportTypeRequired:"傳輸類型不能為空",transportOptions:{stdio:"Stdio",sse:"SSE"},command:"命令",commandRequired:"命令不能為空",arguments:"參數",argumentsPlaceholder:"輸入參數後按 Enter 新增",envVars:"環境變數",addEnv:"新增環境變數",keyRequired:"鍵不能為空",sseUrl:"SSE URL",sseUrlRequired:"SSE URL 不能為空",validUrlRequired:"請輸入有效 URL",headers:"請求頭",addHeader:"新增請求頭",headerNameRequired:"請求頭名稱不能為空"},mcpToolList:{...e.settings.mcpToolList,title:"MCP 工具",selectServerHint:"請選擇一個伺服器以查看其 MCP 工具",empty:"該伺服器沒有可用工具",noDescription:"暫無描述",aliasMapping:"別名對應",parametersSchema:"參數 Schema"},envVars:{...e.settings.envVars,title:"環境變數",description:"這些變數會注入到 Bash 工具程序。金鑰變數會在儲存時加密。",fetchError:"載入環境變數失敗",created:"變數已建立",updated:"變數已更新",saveError:"儲存變數失敗",deleted:"變數已刪除",deleteError:"刪除變數失敗",addButton:"新增變數",noVars:"尚未配置環境變數",addTitle:"新增環境變數",editTitle:"編輯變數",save:"儲存",cancel:"取消",name:"名稱",nameRequired:"變數名不能為空",nameInvalid:"必須以字母或底線開頭,後續僅可包含字母、數字或底線",value:"值",valueRequired:"新建變數時必須填寫值",valueEditHint:"留空則保留現有值",valuePlaceholder:"輸入值",valuePlaceholderEdit:"輸入新值或留空",secret:"金鑰",secretHint:"金鑰變數會加密儲存,並在介面中脫敏顯示",descriptionField:"說明",descriptionPlaceholder:"可選說明",type:"類型",plain:"普通",descriptionCol:"說明",actions:"操作",deleteConfirm:"確認刪除該變數?",yes:"是",no:"否",notSet:"(未設定)",empty:"(空)"},hooksTab:{...e.settings.hooksTab,title:"圖像 Hooks",enableImagePreflight:"啟用圖像預檢 Hook",modeLabel:"模式",description:"Placeholder 模式會把圖像改寫為文字摘要(可能影響依賴真實圖像資料的工具)。OCR 目前僅支援 Windows。",loadFailed:"載入 Hooks 設定失敗",updateFailed:"更新 Hooks 失敗",modeUpdateFailed:"更新 Hook 模式失敗",enabled:"已啟用圖像 Hooks",disabled:"已停用圖像 Hooks",modeUpdated:"圖像 Hook 模式已設定為:{{mode}}",mode:{placeholder:"佔位符",error:"報錯",ocr:"OCR(Windows)",vision:"視覺描述(LLM)"}},modelTab:{...e.settings.modelTab,selectModelTitle:"選擇模型",loadingModels:"正在載入模型...",selectModelPlaceholder:"請選擇模型",backendApiBaseUrlTitle:"後端 API 基礎位址",resetToDefault:"恢復預設",save:"儲存",backendApiHint:"必須是包含 /v1 的完整基礎位址(例如 {{example}})。"},modelLimits:{...e.settings.modelLimits,title:"Token 預算模型限制",descriptionPrefix:"配置按模型劃分的 token 上限。這些設定會全域儲存到 Bamboo 的",descriptionSuffix:"並由後端解析器使用。",defaultsTitle:"模型預設值",defaultsDescription:"已預置 GPT-5 / GPT-4 / Gemini / Kimi / GLM 的上下文與輸出預設值,可按需繼續調整。",migratedFromLocalStorage:"已將本地儲存中的模型限制遷移到全域配置。",loadFailed:"載入模型限制設定失敗",saveSuccess:"模型限制已儲存到全域配置",saveFailed:"儲存模型限制設定失敗",resetSuccess:"模型限制已恢復為產品預設值",resetFailed:"重置模型限制設定失敗",columns:{...(c=e.settings.modelLimits)==null?void 0:c.columns,vendor:"廠商/系列",model:"模型",contextWindow:"上下文視窗",maxOutput:"最大輸出",notes:"備註",actions:"操作"},placeholders:{...(f=e.settings.modelLimits)==null?void 0:f.placeholders,vendor:"OpenAI / Google / Moonshot",model:"例如 gpt-5.4-thinking",optional:"可選"},actions:{...(P=e.settings.modelLimits)==null?void 0:P.actions,remove:"刪除",addRow:"新增行",save:"儲存",resetToDefaults:"恢復預設",reload:"重新載入"},validation:{...(M=e.settings.modelLimits)==null?void 0:M.validation,atLeastOneRow:"至少保留一條模型限制記錄。",modelPatternEmpty:"模型模式不能為空。",duplicateModelPattern:"模型模式重複:{{pattern}}",contextWindowMin:"{{pattern}} 的上下文視窗最小為 1000。",maxOutputMin:"{{pattern}} 的最大輸出最小為 1。",maxOutputExceedsContext:"{{pattern}} 的最大輸出必須小於或等於上下文視窗。",safetyMarginNegative:"{{pattern}} 的安全邊距不能為負數。",safetyMarginTooLarge:"{{pattern}} 的安全邊距必須小於上下文視窗。"}},modelMappingCard:{...e.settings.modelMappingCard,loadProviderFailed:"載入 Provider 配置失敗",loadMappingsFailed:"載入現有對應失敗",loadModelsFailed:"載入模型失敗",loadModelsHint:"載入模型失敗,請檢查 Provider 配置。",mappingSaved:"模型對應已儲存",mappingSaveFailed:"儲存模型對應失敗",enterModelName:"請輸入模型名稱",customMappingSaved:"自訂模型對應已儲存",customMappingSaveFailed:"儲存自訂模型對應失敗",collapseTitle:"Anthropic 模型對應",description:"配置當 Claude CLI 請求特定模型時,應該使用的 {{provider}} 模型。",loadModelsErrorTitle:"載入模型失敗",retry:"重試",loadingModels:"模型載入中...",modelTypeOpus:"Opus",modelTypeOpusDescription:'匹配包含 "opus" 的模型',modelTypeSonnet:"Sonnet",modelTypeSonnetDescription:'匹配包含 "sonnet" 的模型',modelTypeHaiku:"Haiku",modelTypeHaikuDescription:'匹配包含 "haiku" 的模型',selectModelPlaceholder:"選擇 {{label}} 模型",customModelOption:"自訂模型...",mappedModelNotFound:'對應模型 "{{model}}" 不在目前 Provider 的可用模型列表中',refreshModels:"重新整理模型",currentProvider:"目前 Provider",loadingProvider:"載入中...",availableModels:"可用模型數量",cached:"(快取)",storedIn:"儲存位置",customModalTitle:"輸入自訂模型名稱",customModalDescription:"為 {{modelType}} 輸入自訂模型名稱",customModalPlaceholder:"例如:gpt-4-turbo-preview",customModalNote:"注意:請確認該模型名稱對目前 Provider 有效。",save:"儲存",cancel:"取消"},systemPromptManager:{...e.settings.systemPromptManager,title:"系統提示詞管理",addButton:"新增提示詞",defaultPromptLocked:"預設系統提示詞已鎖定,無法編輯。",updateSuccess:"提示詞更新成功",addSuccess:"提示詞新增成功",saveError:"儲存提示詞失敗,請重試。",deleteSuccess:"提示詞刪除成功",deleteError:"刪除提示詞失敗,請重試。",deleteConfirm:"確認刪除此提示詞嗎?",defaultTag:"預設(鎖定)",editTitle:"編輯系統提示詞",addTitle:"新增系統提示詞",nameLabel:"提示詞名稱",nameRequired:"請輸入提示詞名稱!",descriptionLabel:"提示詞描述",descriptionRequired:"請輸入提示詞描述!",contentLabel:"提示詞內容",contentRequired:"請輸入提示詞內容!"},promptsTab:{...e.settings.promptsTab,title:"系統提示增強",mermaidEnhancement:"Mermaid 增強",taskListRules:"共享任務規則",copilotConclusionWithOptionsBeforeFinish:"Copilot 結束前 conclusion_with_options",switchOn:"開",switchOff:"關",enhancementPlaceholder:"為每次系統提示追加全域增強文本。",saveEnhancement:"儲存增強",description:"該文本會先追加,然後再拼接已啟用的系統增強,最後再發送請求。"},workflowsTab:{...e.settings.workflowsTab,title:"工作流程",description:"工作流程會以 Markdown 檔案儲存在 `~/.bamboo/workflows`。可在聊天中使用 `/name` 插入工作流程。",loadFailed:"載入工作流程失敗",loadContentFailed:"載入工作流程內容失敗",invalidName:"工作流程名稱不合法",nameAlreadyExists:"同名工作流程已存在",saved:"工作流程已儲存",saveFailed:"儲存工作流程失敗",deleted:"工作流程已刪除",deleteFailed:"刪除工作流程失敗",refresh:"重新整理",newWorkflow:"新增工作流程",save:"儲存",empty:"暫無工作流程",namePlaceholder:"工作流程名稱",contentPlaceholder:`# 工作流程標題
|
|
6
|
+
Décrivez ici les étapes du flux de travail.`},mermaidTab:{...e.settings.mermaidTab,title:"Paramètres des diagrammes Mermaid",description:"Personnalisez le rendu des diagrammes Mermaid dans vos conversations",themeCardTitle:"Thème",themeLabel:"Thème Mermaid",themeTooltip:"Choisissez un thème Mermaid intégré. Les thèmes Default et Neutral basculent automatiquement selon le thème clair/sombre de l'application.",themeOptions:{...e.settings.mermaidTab.themeOptions,default:"Par défaut (clair/sombre auto)",neutral:"Neutre (clair/sombre auto)",dark:"Sombre",forest:"Forêt (tons verts)",base:"Base (minimal)"},themeDescriptionsTitle:"Descriptions des thèmes :",themeDescriptions:{...e.settings.mermaidTab.themeDescriptions,default:"Par défaut : apparence Mermaid classique, s'adapte automatiquement au clair/sombre",neutral:"Neutre : tons gris, s'adapte automatiquement au clair/sombre",dark:"Sombre : thème sombre permanent",forest:"Forêt : palette verte, adaptée aux diagrammes techniques",base:"Base : style minimal, pour un thème personnalisé"},globalCardTitle:"Paramètres globaux",fontSizeLabel:"Taille de police",fontSizeTooltip:"Taille de police de base pour tout le texte du diagramme (en pixels)",defaultZoomLabel:"Zoom par défaut",defaultZoomTooltip:"Niveau de zoom initial des diagrammes (1,0 = 100 %)",responsiveWidthLabel:"Largeur adaptative",responsiveWidthTooltip:"Active l'adaptation du diagramme à la largeur du conteneur. Désactivez pour une largeur fixe.",switchAuto:"Auto",switchFixed:"Fixe",flowchartCardTitle:"Paramètres du diagramme de flux",flowchartNodeSpacingLabel:"Espacement des nœuds",flowchartNodeSpacingTooltip:"Espacement horizontal entre les nœuds",flowchartRankSpacingLabel:"Espacement des niveaux",flowchartRankSpacingTooltip:"Espacement vertical entre les couches",flowchartCurveTypeLabel:"Type de courbe",flowchartCurveTypeTooltip:"Type de courbe pour les connexions",flowchartCurveOptions:{...e.settings.mermaidTab.flowchartCurveOptions,basis:"Lisse (Basis)",linear:"Linéaire",cardinal:"Cardinal"},sequenceCardTitle:"Paramètres des diagrammes de séquence",sequenceActorMarginLabel:"Marge des acteurs",sequenceActorMarginTooltip:"Espacement entre les acteurs",sequenceMessageMarginLabel:"Marge des messages",sequenceMessageMarginTooltip:"Espacement entre les messages",sequenceActorWidthLabel:"Largeur des acteurs",sequenceActorWidthTooltip:"Largeur de chaque bloc d'acteur",sequenceActorHeightLabel:"Hauteur des acteurs",sequenceActorHeightTooltip:"Hauteur de chaque bloc d'acteur",ganttCardTitle:"Paramètres du diagramme de Gantt",ganttBarHeightLabel:"Hauteur des barres",ganttBarHeightTooltip:"Hauteur de chaque barre de tâche",ganttTopPaddingLabel:"Marge supérieure",ganttTopPaddingTooltip:"Espace en haut du graphique",resetToDefaults:"Rétablir les valeurs par défaut",previewTitle:"Aperçu",previewDescription:"Les changements sont appliqués immédiatement. Créez ou ouvrez un diagramme pour voir le résultat."},modelLimits:{...e.settings.modelLimits,title:"Limites de modèles (budget de tokens)",descriptionPrefix:"Remplacez le budget de tokens pour des modèles spécifiques ; tout modèle non remplacé utilise la valeur par défaut globale.",descriptionSuffix:"Enregistré globalement et utilisé par le résolveur du back-end.",loadFailed:"Échec du chargement des limites de modèles",saveSuccess:"Limites de modèles enregistrées",saveFailed:"Échec de l'enregistrement des limites de modèles",resetSuccess:"Limites réinitialisées — chaque modèle utilise désormais la valeur par défaut globale",resetFailed:"Échec de la réinitialisation des limites de modèles",defaultsTitle:"Modèles que vous avez utilisés",defaultsDescription:"Les modèles apparaissent ici une fois sélectionnés et utilisés. Chacun utilise la valeur par défaut globale jusqu'à personnalisation.",globalDefault:"Valeur par défaut globale : {{context}} contexte / {{output}} tokens de sortie.",emptyState:"Aucun modèle pour l'instant. Les modèles utilisés en chat apparaîtront ici automatiquement.",badge:{...e.settings.modelLimits.badge,default:"Par défaut · inchangé",defaultTooltip:"Utilise la valeur par défaut globale. Les lignes inchangées suivent les futures mises à jour.",customized:"Personnalisé"},columns:{...e.settings.modelLimits.columns,model:"Modèle",contextWindow:"Fenêtre de contexte",maxOutput:"Sortie maximale",safetyMargin:"Marge de sécurité",status:"Statut",actions:"Actions"},placeholders:{...e.settings.modelLimits.placeholders,model:"p. ex. gpt-4o",optional:"Optionnel"},actions:{...e.settings.modelLimits.actions,customize:"Personnaliser",revert:"Réinitialiser",remove:"Supprimer",addModel:"Ajouter un modèle",save:"Enregistrer",resetToDefaults:"Tout réinitialiser",reload:"Recharger"},validation:{...e.settings.modelLimits.validation,modelPatternEmpty:"Le motif du modèle ne peut pas être vide.",duplicateModelPattern:"Motif de modèle dupliqué : {{pattern}}",contextWindowMin:"La fenêtre de contexte pour {{pattern}} doit être d'au moins 1000.",maxOutputMin:"La sortie maximale pour {{pattern}} doit être d'au moins 1.",maxOutputExceedsContext:"La sortie maximale pour {{pattern}} doit être inférieure ou égale à la fenêtre de contexte.",safetyMarginNegative:"La marge de sécurité pour {{pattern}} ne peut pas être négative.",safetyMarginTooLarge:"La marge de sécurité pour {{pattern}} doit être inférieure à la fenêtre de contexte."}},schedulesTab:{...e.settings.schedulesTab,loadFailed:"Échec du chargement des planifications",loadSessionsFailed:"Échec du chargement des sessions de planification",createFailed:"Échec de la création de la planification",updateFailed:"Échec de la mise à jour de la planification",deleteFailed:"Échec de la suppression de la planification",runNowFailed:"Échec de l'exécution immédiate de la planification",taskMessageRequired:"Le message de tâche est requis lorsque l'exécution automatique est activée",created:"Planification créée",updated:"Planification mise à jour",deleted:"Planification supprimée",enqueuedRun:"Exécution mise en file d'attente",loading:"Chargement...",yes:"Oui",no:"Non",optional:"(optionnel)",defaultName:"Ma tâche planifiée",createTitle:"Créer une planification",listTitle:"Tâches planifiées",scheduleSessionsTitle:"Sessions planifiées",noSessionsYet:"Aucune session pour le moment.",editTitle:"Modifier la planification",columns:{...e.settings.schedulesTab.columns,name:"Nom",autoExecute:"Exécution automatique",model:"Modèle",enabled:"Activé",intervalSeconds:"Intervalle (s)",nextRun:"Prochaine exécution",lastRun:"Dernière exécution",actions:"Actions"},form:{...e.settings.schedulesTab.form,name:"Nom",triggerType:"Type de déclencheur",intervalSeconds:"Intervalle (secondes)",dailyHour:"Heure",dailyMinute:"Minute",weeklyWeekdays:"Jours de la semaine",monthlyDays:"Jours du mois",monthlyDaysPlaceholder:"ex. 1, 15, 28",cronExpr:"Expression Cron",cronExprPlaceholder:"ex. 0 9 * * 1-5",timezone:"Fuseau horaire",timezonePlaceholder:"ex. Europe/Paris",startAt:"Date de début",endAt:"Date de fin",datetimePlaceholder:"Format RFC3339, ex. 2026-04-05T09:00:00Z",misfirePolicy:"Politique de retard",overlapPolicy:"Politique de chevauchement",catchUpWindowMaxRuns:"Rattrapage max exécutions",catchUpWindowMaxLatenessSeconds:"Rattrapage max retard (s)",enabled:"Activé",taskMessage:"Consigne de tâche",taskMessagePlaceholder:"(Optionnel) Consigne à exécuter",model:"Modèle",modelPlaceholder:"(Optionnel) ex. gpt-4o-mini",modelRequiredIfAuto:"Requis si l'exécution automatique est activée",autoExecute:"Exécution automatique",systemPrompt:"Prompt système",workspacePath:"Chemin de l'espace de travail",enhancePrompt:"Améliorer le prompt"},validation:{...e.settings.schedulesTab.validation,nameRequired:"Le nom est requis",triggerRequired:"Le déclencheur est requis",intervalRequired:"L'intervalle est requis",weekdaysRequired:"Sélectionnez au moins un jour",monthDaysRequired:"Sélectionnez au moins un jour du mois",invalidMonthDays:"Les jours du mois doivent être des valeurs 1-31 séparées par des virgules",cronRequired:"L'expression Cron est requise"},triggerLabels:{interval:"Toutes les {{seconds}} secondes",daily:"Chaque jour à {{time}}",weekly:"Chaque semaine {{weekdays}} à {{time}}",monthly:"Chaque mois le {{days}} à {{time}}",cron:"Cron : {{expression}}"},misfirePolicyOptions:{runOnce:"Exécuter une fois",skip:"Ignorer",catchUpAll:"Rattraper tout",catchUpWindow:"Fenêtre de rattrapage"},overlapPolicyOptions:{queueOne:"Mettre en file d'attente",skip:"Ignorer les chevauchements",allow:"Autoriser le chevauchement"},runHistory:{columns:{status:"Statut",scheduledFor:"Planifié pour",startedAt:"Début",completedAt:"Fin",session:"Session",duration:"Durée",outcome:"Résultat"}},actions:{...e.settings.schedulesTab.actions,create:"Créer",refresh:"Actualiser",edit:"Modifier",runNow:"Exécuter maintenant",sessions:"Sessions",delete:"Supprimer",open:"Ouvrir",save:"Enregistrer"}},sessionsTab:{...e.settings.sessionsTab,currentSessionTitle:"Session actuelle",id:"id",kind:"type",clearMessages:"Effacer les messages",clearMessagesTitle:"Effacer les messages de session",clearMessagesContent:"Cette action efface les messages/pièces jointes de la session actuelle, tout en conservant l'entrée de session.",clear:"Effacer",cancel:"Annuler",sessionCleared:"Session effacée",noActiveSession:"Aucune session active.",bulkCleanupTitle:"Nettoyage en lot",keepPinned:"Conserver les épinglées",deleteAll:"Supprimer tout",deleteAllTitle:"Supprimer toutes les sessions",deleteAllKeepPinned:"Supprime toutes les sessions sauf celles épinglées.",deleteAllIncludePinned:"Supprime toutes les sessions, y compris les épinglées.",deleteEmpty:"Supprimer les vides",deleteEmptyTitle:"Supprimer les sessions vides",deleteEmptyKeepPinned:"Supprime les sessions vides sauf celles épinglées.",deleteEmptyIncludePinned:"Supprime les sessions vides, y compris les épinglées.",deleteChildren:"Supprimer les enfants",deleteChildrenTitle:"Supprimer les sessions enfants",deleteChildrenKeepPinned:"Supprime toutes les sessions enfants sauf celles épinglées.",deleteChildrenIncludePinned:"Supprime toutes les sessions enfants, y compris les épinglées.",delete:"Supprimer",cleanupComplete:"Nettoyage terminé",devResetTitle:"Réinitialisation de développement",devResetDescription:"Réinitialisation complète du stockage des sessions (supprime sessions/ et réinitialise sessions.json).",devResetAction:"Réinitialiser les sessions (dev)",devResetConfirmTitle:"Réinitialiser le stockage des sessions (dev)",devResetConfirmContent:"Cette action supprime TOUTES les sessions (y compris épinglées/enfants) et réinitialise l'index des sessions. Une nouvelle session vide sera créée après rafraîchissement.",reset:"Réinitialiser",devResetDone:"Stockage des sessions réinitialisé"},providerTab:{...e.settings.providerTab,title:"Configuration du fournisseur LLM",description:"Configurez votre fournisseur LLM préféré. La configuration est enregistrée et appliquée lorsque vous cliquez sur Enregistrer et appliquer la configuration.",currentProvider:"Fournisseur actuel",activeProvider:"Fournisseur LLM actif",selectProviderRequired:"Veuillez sélectionner un fournisseur",saveAndApply:"Enregistrer et appliquer la configuration",loadConfigFailed:"Échec du chargement de la configuration du fournisseur",checkStatusFailed:"Échec de la vérification du statut",startCopilotAuthFailed:"Échec du démarrage de l'authentification Copilot",copilotAuthSuccess:"Authentification Copilot réussie !",providerReloaded:"Fournisseur rechargé avec la nouvelle authentification.",completeAuthFailed:"Échec de la finalisation de l'authentification. Veuillez réessayer.",userCodeCopied:"Code utilisateur copié dans le presse-papiers !",copyCodeFailedPrefix:"Échec de la copie du code. Veuillez copier manuellement :",logoutSuccess:"Déconnecté de Copilot",logoutFailed:"Échec de la déconnexion de Copilot",unknownError:"Erreur inconnue",invalidConfig:"Configuration invalide",invalidConfigPrefix:"Configuration invalide",fetchModelsCopilotFailed:"Échec de la récupération des modèles. Authentifiez Copilot puis réessayez.",fetchModelsFailed:"Échec de la récupération des modèles. Vérifiez votre clé API et l'URL de base.",noModelsReturned:"Aucun modèle renvoyé. Authentifiez d'abord Copilot, puis récupérez les modèles.",foundModels:"{{count}} modèles disponibles trouvés",fetchModelsErrorPrefix:"Échec de la récupération des modèles",saveConfigSuccess:"Configuration enregistrée avec succès",saveConfigFailed:"Échec de l'enregistrement de la configuration",saveConfigErrorPrefix:"Échec de l'enregistrement de la configuration",applyConfigSuccess:"Configuration appliquée avec succès. Les changements prendront effet pour les nouvelles conversations.",applyConfigFailed:"Échec de l'application de la configuration",applyConfigErrorPrefix:"Échec de l'application de la configuration",modelUpdated:"Modèle mis à jour avec succès",updateModelFailed:"Échec de la mise à jour du modèle",updateModelErrorPrefix:"Échec de la mise à jour du modèle",fetchingModels:"Récupération des modèles...",refreshModelsFrom:"Actualiser les modèles disponibles depuis {{source}}",fetchModelsFrom:"Récupérer les modèles disponibles depuis {{source}}",saveModelChangeFailed:"Échec de l'enregistrement du changement de modèle",fetchModelsFailedShort:"Échec de la récupération des modèles",retry:"Réessayer",openaiConfigTitle:"Configuration OpenAI",openaiConfigDescription:"Saisissez votre clé API OpenAI pour utiliser les modèles GPT. Vous pouvez aussi spécifier une URL de base personnalisée pour les proxys.",openaiApiKey:"Clé API OpenAI",openaiApiKeyRequired:"Veuillez saisir votre clé API OpenAI",baseUrlOptional:"URL de base (optionnel)",openaiBaseUrlHelp:"Laissez vide pour utiliser le point de terminaison API OpenAI par défaut. Incluez le chemin complet (ex. /v1) si nécessaire.",defaultModel:"Modèle par défaut",selectModelRequired:"Veuillez sélectionner un modèle",selectModel:"Sélectionner un modèle",responsesOnlyModelsOptional:"Modèles API Responses uniquement (optionnel)",responsesOnlyHelp1:"Certains modèles ne prennent en charge que l'API OpenAI Responses (pas chat/completions). Ajoutez ici des ID de modèles pour forcer Bamboo à utiliser l'API en amont.",responsesOnlyHelp2:"Prend en charge la correspondance exacte (ex. gpt-5.3-codex) et la correspondance par préfixe avec * final (ex. gpt-5*).",anthropicConfigTitle:"Configuration Anthropic",anthropicConfigDescription:"Saisissez votre clé API Anthropic pour utiliser les modèles Claude.",anthropicApiKey:"Clé API Anthropic",anthropicApiKeyRequired:"Veuillez saisir votre clé API Anthropic",anthropicBaseUrlHelp:"Laissez vide pour utiliser le point de terminaison API Anthropic par défaut. Incluez le chemin complet (ex. /v1) si nécessaire.",maxTokensOptional:"Tokens max (optionnel)",maxTokensHelp:"Nombre maximal de tokens à générer",geminiConfigTitle:"Configuration Google Gemini",geminiConfigDescription:"Saisissez votre clé API Google AI pour utiliser les modèles Gemini.",geminiApiKey:"Clé API Gemini",geminiApiKeyRequired:"Veuillez saisir votre clé API Gemini",geminiBaseUrlHelp:"Laissez vide pour utiliser le point de terminaison API Google AI par défaut. Incluez le chemin complet si nécessaire.",copilotConfigTitle:"Configuration GitHub Copilot",copilotConfigDescription:"GitHub Copilot utilise l'authentification OAuth. Aucune clé API n'est requise. Assurez-vous d'avoir un abonnement GitHub Copilot actif.",authStatusTitle:"Statut d'authentification",authenticated:"Authentifié",notAuthenticated:"Non authentifié",logoutCopilot:"Se déconnecter de Copilot",authenticateCopilot:"Authentifier Copilot",refreshStatus:"Actualiser le statut",headlessAuth:"Authentification sans interface",headlessAuthHelp:"Affiche l'URL de connexion dans la console au lieu d'ouvrir automatiquement le navigateur",noModelsLoaded:"Aucun modèle n'est encore chargé. Cliquez sur Récupérer les modèles disponibles depuis le back-end.",authFirstThenFetch:"Authentifiez d'abord Copilot, puis récupérez les modèles.",copilotUsageTitle:"Pour utiliser GitHub Copilot :",copilotUsageStep1:"Vérifiez que vous disposez d'un abonnement GitHub Copilot actif",copilotUsageStep2:"Cliquez sur Authentifier Copilot pour démarrer le flux de code appareil",copilotUsageStep3:"Suivez les instructions dans votre terminal pour finaliser l'authentification",copilotAuthModalTitle:"Authentification Copilot",cancel:"Annuler",completedAuthorization:"J'ai terminé l'autorisation",browserOpened:"Navigateur ouvert automatiquement",authStep1:"Une page GitHub devrait s'être ouverte dans votre navigateur",authStep2:"Copiez le code ci-dessous puis collez-le sur la page GitHub",authStep3:"Cliquez sur Continuer sur GitHub pour autoriser",visitUrl:"1. Ouvrez cette URL :",enterCode:"2. Saisissez ce code :",copied:"Copié !",copyCode:"Copier le code",afterContinueHint:"Après avoir cliqué sur Continuer sur GitHub, cliquez sur le bouton J'ai terminé l'autorisation ci-dessous.",providerNames:{...e.settings.providerTab.providerNames,openai:"OpenAI",anthropic:"Anthropic",gemini:"Gemini",copilot:"Copilot"}},mcpTab:{...e.settings.mcpTab,status:{...e.settings.mcpTab.status,connecting:"Connexion",ready:"Prêt",degraded:"Dégradé",stopped:"Arrêté",error:"Erreur"},statusGuideTitle:"Guide des statuts :",statusLastError:"Dernière erreur : {{error}}",serverDeleted:"Serveur MCP supprimé",deleteServerFailed:"Échec de la suppression du serveur MCP",connectedTo:"Connecté à {{name}}",connectServerFailed:"Échec de la connexion au serveur MCP",disconnected:"Déconnecté de {{name}}",disconnectServerFailed:"Échec de la déconnexion du serveur MCP",toolsRefreshedFor:"Outils actualisés pour {{name}}",refreshToolsFailed:"Échec d'actualisation des outils",statusRefreshed:"Statut MCP actualisé",refreshStatusFailed:"Échec d'actualisation du statut MCP",noServerForEditing:"Aucun serveur sélectionné pour édition",savedServer:"{{name}} enregistré",addedServer:"{{name}} ajouté",saveServerFailed:"Échec de l'enregistrement du serveur MCP",copiedConfig:"Configuration MCP copiée dans le presse-papiers",clipboardUnavailable:"Presse-papiers indisponible. L'export est affiché dans la fenêtre.",invalidJsonPrefix:"JSON invalide",unknownError:"Erreur inconnue",jsonMustBeObject:"Le JSON doit être un objet",missingMcpServers:'Champ "mcpServers" manquant. Collez un bloc de configuration complet de style Claude Desktop : { "mcpServers": { ... } }',importSummary:"{{count}} serveur(s) importé(s) ({{added}} ajoutés, {{updated}} mis à jour, {{removed}} supprimés). {{failed}} échec(s) de démarrage.",importStartFailures:"Certains serveurs n'ont pas démarré. La configuration est enregistrée ; ouvrez la liste des serveurs pour voir les erreurs.",importFailed:"Échec de l'import des serveurs MCP",overviewTitle:"Vue d'ensemble MCP",overviewDescription:"Configurez des serveurs MCP externes et inspectez les alias d'outils enregistrés.",totalServers:"Total des serveurs : {{count}}",totalTools:"Total des outils : {{count}}",serversTitle:"Serveurs MCP",addServer:"Ajouter un serveur",refreshAll:"Tout actualiser",export:"Exporter",import:"Importer",importModalTitle:"Importer des serveurs MCP",importHint:"Collez un bloc de configuration style Claude Desktop. Exemple :",importModeMerge:"Fusionner (upsert)",importModeReplace:"Remplacer (supprimer les autres)",replaceWarning:"Le mode remplacement supprimera les serveurs MCP existants absents de la configuration mcpServers importée."},mcpServerTable:{...e.settings.mcpServerTable,columns:{...e.settings.mcpServerTable.columns,name:"Nom",transportType:"Type de transport",status:"Statut",toolCount:"Nombre d'outils",actions:"Actions"},transportOptions:{...e.settings.mcpServerTable.transportOptions,sse:"SSE",stdio:"Stdio"},deleteTitle:"Supprimer le serveur MCP",deleteDescription:"Supprimer le serveur {{name}} ?",empty:"Aucun serveur MCP configuré",actions:{...e.settings.mcpServerTable.actions,edit:"Modifier",delete:"Supprimer",disconnect:"Déconnecter",connect:"Connecter",refreshTools:"Actualiser les outils"}},mcpToolList:{...e.settings.mcpToolList,title:"Outils MCP",selectServerHint:"Sélectionnez un serveur pour inspecter ses outils MCP",empty:"Aucun outil trouvé pour ce serveur",noDescription:"Aucune description disponible",aliasMapping:"Mappage d'alias",parametersSchema:"Schéma des paramètres"},mcpServerForm:{...e.settings.mcpServerForm,jsonMustBeObject:"Le JSON doit être un objet",detectedBulkConfig:"Champ mcpServers détecté (configuration groupée). Utilisez le bouton Importer de l'onglet MCP pour un import groupé, ou collez ici la configuration d'un seul serveur.",missingIdField:"Champ id manquant ou invalide",missingTransportField:"Champ transport manquant ou invalide",missingTransportInfo:"Informations de transport manquantes. Attendu : transport (format Bodhi) ou commande/url (format MCP standard).",invalidJson:"JSON invalide : {{message}}",unknownError:"Erreur inconnue",editTitle:"Modifier le serveur MCP",addTitle:"Ajouter un serveur MCP",save:"Enregistrer",modeForm:"Formulaire",modeJson:"JSON",jsonError:"Erreur JSON",serverId:"ID du serveur",serverIdRequired:"L'ID du serveur est requis",serverIdPatternError:"Utilisez uniquement des lettres, des chiffres, des underscores et des tirets",displayName:"Nom d'affichage",enabled:"Activé",enabledHelp:"Les serveurs désactivés restent en configuration, mais ne seront pas démarrés.",transportType:"Type de transport",transportTypeRequired:"Le type de transport est requis",transportOptions:{...e.settings.mcpServerForm.transportOptions,stdio:"Stdio",sse:"SSE"},command:"Commande",commandRequired:"La commande est requise",arguments:"Arguments",argumentsPlaceholder:"Ajoutez un argument puis appuyez sur Entrée",envVars:"Variables d'environnement",addEnv:"Ajouter une variable",keyRequired:"Clé requise",sseUrl:"URL SSE",sseUrlRequired:"L'URL SSE est requise",validUrlRequired:"Veuillez saisir une URL valide",headers:"En-têtes",addHeader:"Ajouter un en-tête",headerNameRequired:"Nom d'en-tête requis"},metricsCards:{...e.settings.metricsCards,totalSessions:"Sessions totales",chatTokens:"Tokens chat",totalToolCalls:"Appels d'outils totaux",avgSessionDuration:"Durée moyenne des sessions"},forwardMetricsCards:{...e.settings.forwardMetricsCards,totalForwardRequests:"Requêtes de transfert totales",successRate:"Taux de réussite",forwardTokens:"Tokens de transfert",avgResponseTime:"Temps de réponse moyen"},unifiedMetricsCards:{...e.settings.unifiedMetricsCards,totalRequests:"Requêtes totales",totalTokens:"Tokens totaux",successRate:"Taux de réussite",avgResponseTime:"Temps de réponse moyen",chatSessions:"Sessions chat",chatTokens:"Tokens chat",toolCalls:"Appels d'outils",avgSessionDuration:"Durée moyenne des sessions",forwardRequests:"Requêtes de transfert",forwardTokens:"Tokens de transfert",successful:"Réussi",failed:"Échec"},metricsTable:{...e.settings.metricsTable,session:{...e.settings.metricsTable.session,columns:{...e.settings.metricsTable.session.columns,session:"Session",model:"Modèle",status:"Statut",started:"Début",duration:"Durée",tokens:"Tokens",toolCalls:"Appels d'outils",messages:"Messages",action:"Action"},view:"Voir"},forward:{...e.settings.metricsTable.forward,columns:{...e.settings.metricsTable.forward.columns,id:"ID",endpoint:"Point de terminaison",model:"Modèle",type:"Type",status:"Statut",tokens:"Tokens",duration:"Durée",started:"Début",error:"Erreur"},typeStream:"Flux",typeSync:"Synchrone",totalRequests:"{{total}} requêtes",empty:"Aucune requête de transfert enregistrée pour cette plage"}},metricsDashboard:{...e.settings.metricsDashboard,roundColumns:{...e.settings.metricsDashboard.roundColumns,round:"Tour",status:"Statut",duration:"Durée",tokens:"Tokens",toolCalls:"Appels d'outils"},compactStats:{...e.settings.metricsDashboard.compactStats,combinedTokens:"Tokens combinés",chatTokens:"Tokens chat",forwardTokens:"Tokens de transfert",avgTokensPerSession:"Tokens moyens / session",estimatedTimeSaved:"Temps estimé économisé",estimatedEfficiencyLift:"Gain d'efficacité estimé",estimatedSpeedMultiplier:"Multiplicateur de vitesse estimé",estimatedSavedWorkdays:"Jours de travail estimés économisés",avgRoundsPerSession:"Tours moyens / session",toolCallsPerSession:"Appels d'outils / session",activeSessionRate:"Taux de sessions actives",avgTokensPerForward:"Tokens moyens / transfert",forwardErrorRate:"Taux d'erreur de transfert",streamingRatio:"Ratio de streaming",p95ForwardLatency:"Latence P95 des transferts",modelCoverage:"Couverture des modèles",endpointCoverage:"Couverture des points de terminaison"},multiplierSuffix:"x",filtersTitle:"Filtres",refresh:"Actualiser",startDate:"Date de début",endDate:"Date de fin",model:"Modèle",daysOption:"{{value}} jours",granularity:{...e.settings.metricsDashboard.granularity,daily:"Quotidien",weekly:"Hebdomadaire",monthly:"Mensuel"},dashboardTitle:"Tableau de bord",tabs:{...e.settings.metricsDashboard.tabs,overview:"Vue d'ensemble",analysis:"Analyse",records:"Journaux"},derivedMetricsTitle:"Métriques dérivées (compact)",derivedMetricsSubtitle:"Plus de dimensions sans allonger la page",efficiencyHint:"Les estimations d'efficacité utilisent des hypothèses prudentes : {{manualTpm}} tokens/min en manuel + {{manualToolMinutes}} min/outil vs {{assistedTpm}} tokens/min assisté + {{assistedToolMinutes}} min/outil, puis application de {{realization}} % de réalisation et des plafonds ({{maxLift}} % / {{maxMultiplier}}x).",toolUsageTitle:"Fréquence d'utilisation des outils",noToolUsage:"Aucun appel d'outil enregistré pour cette plage.",calls:"Appels",activityHeatmapTitle:"Carte thermique d'activité quotidienne",noActivity:"Aucune activité disponible pour cette plage.",sessionsCount:"{{count}} sessions",tokensAmount:"{{value}} tokens",sessionsTabLabel:"Sessions ({{count}})",chatSessionsLabel:"Sessions chat ({{count}})",sessionsHint:"Cliquez sur une session pour voir le détail complet",forwardTabLabel:"Requêtes de transfert ({{count}})",detailedMetricsTitle:"Métriques détaillées",sessionMetricsTitle:"Métriques de session",loadingSessionDetails:"Chargement des détails de session...",sessionDetail:{...e.settings.metricsDashboard.sessionDetail,sessionId:"ID de session",model:"Modèle",status:"Statut",duration:"Durée",messages:"Messages",totalTokens:"Tokens totaux",toolCalls:"Appels d'outils"},noDetail:"Aucun détail disponible."},charts:{...e.settings.charts,tokenUsageOverTime:"Utilisation des tokens dans le temps",unifiedTokenUsageOverTime:"Utilisation des tokens dans le temps (chat + transfert)",noTokenUsage:"Aucune utilisation de tokens disponible",tokenUsageDescription:"Tokens de prompt, de réponse et totaux par jour/période.",unifiedTokenUsageDescription:"Utilisation combinée des tokens chat et transfert au fil du temps.",total:"Total",prompt:"Prompt",completion:"Réponse",chat:"Chat",forward:"Transfert",modelDistribution:"Répartition des modèles",noModelMetrics:"Aucune métrique de modèle disponible",modelDistributionDescription:"Part des tokens totaux consommés par modèle.",endpointDistribution:"Répartition des points de terminaison",noForwardMetrics:"Aucune métrique de transfert disponible pour cette plage."}}}),be=e=>{var t,s,i,o,a;return{...e,app:{...e.app,loading:"読み込み中...",retry:"再試行",errorBoundary:{title:"問題が発生しました",description:"このセクションで予期しないエラーが発生しました。再試行するか、問題が続く場合はページを再読み込みしてください。",tryAgain:"再試行",showDetails:"詳細を表示",hideDetails:"詳細を非表示"},passwordGate:{title:"アクセスパスワードを入力",description:"アプリケーションを使用する前にパスワード認証が必要です。",passwordLabel:"アクセスパスワード",passwordPlaceholder:"アクセスパスワードを入力",submit:"認証して続行",validation:{required:"アクセスパスワードを入力してください",verifyFailed:"パスワード認証に失敗しました"}},defaultSessionTitle:"新しいセッション",notifications:{toolApproval:{title:"承認が必要: {{tool}}",body:"ツール {{tool}} の実行には承認が必要です",unknownTool:"不明なツール"},contextPressure:{title:"コンテキストウィンドウがほぼ一杯です"},backgroundTask:{completedTitle:"バックグラウンドタスク完了",completedBody:"「{{title}}」が完了しました",completedFallback:"バックグラウンドタスクが完了しました"},clarification:{title:"Bodhi AI が回答を待っています",fallbackBody:"エージェントが質問への回答を待っています"},conversationSummarized:"会話が要約されました:{{messages}} 件のメッセージを圧縮し、{{tokens}} トークンを節約しました",allTasksCompleted:"すべてのタスクが完了しました!合計ラウンド:{{rounds}}、ツール呼び出し:{{toolCalls}}",evaluatingTasks:"{{count}} 件のタスクを評価中...",evaluationCompleteUpdated:"評価完了:{{count}} 件のタスクを更新しました。",evaluationCompleteNoUpdates:"評価完了:更新は不要です"}},commandPalette:{searchPlaceholder:"セッション、設定、アクションを検索",navigationHint:"↑↓ でナビゲーション、Enter で開く、Esc で閉じる",empty:"一致するコマンドがありません",groups:{quickActions:"クイックアクション",settings:"システム設定"},badges:{quickAction:"アクション",pinned:"ピン留め",running:"実行中",child:"子セッション",childSession:"子セッション",rootSession:"セッション"},actions:{newSession:"新しいセッションを作成",openProviderSettings:"プロバイダー設定を開く",openMcpSettings:"MCP 設定を開く",openWorkflowSettings:"ワークフロー設定を開く",openSessionsSettings:"セッションモニターを開く",openSchedulesSettings:"スケジュールを開く"},errors:{actionFailed:"コマンドの実行に失敗しました"}},setup:{welcome:{heading:"Bodhi へようこそ",description:"Bodhi は AI 駆動の開発アシスタントです。AI プロバイダーを設定して開始するか、そのまま進んでください。",providerHint:"チャットを開始するには、AI プロバイダー(例: OpenAI、Anthropic)を API キーで設定する必要があります。",proxyHint:"企業プロキシを使用していますか?後でシステム設定 > ネットワークでプロキシを設定できます。"},button:{getStarted:"開始",configureProvider:"プロバイダーを設定"},complete:{title:"設定完了!",restartMessage:"アプリケーションを再読み込み中..."},error:{completeFailed:"セットアップの完了に失敗しました。再試行してください。"}},onboarding:{welcome:{title:"Bodhi へようこそ!",description:"Bodhi は AI 駆動の開発アシスタントです。簡単に操作をご紹介します。"},newSession:{title:"新しいセッション",description:"ここをクリックして AI アシスタントとの新しいチャットを開始します。"},taskTemplates:{title:"タスクテンプレート",description:"コードレビュー、Bug 調査、リファクタリングなどのテンプレートから選択できます。"},modelPicker:{title:"モデル選択",description:"いつでもここから AI モデルとプロバイダーを切り替えられます。"},sidebar:{title:"セッションサイドバー",description:"セッションの検索、フィルタリング、ピン留め、切り替えができます。"},settings:{title:"設定",description:"AI プロバイダー、プロキシ、モデルマッピング、MCP サーバーなどを設定します。"}},layout:{...e.layout,showSidebar:"サイドバーを表示"},common:{...e.common,cancel:"キャンセル",ok:"OK",apply:"適用",save:"保存",delete:"削除",saveAnyway:"とにかく保存",yes:"はい",no:"いいえ",home:"ホーム",parentDirectory:"親ディレクトリ",currentPath:"現在のパス:",workspace:"ワークスペース",server:"サーバー:",category:"カテゴリー:",parameters:"パラメータ",approve:"承認",reject:"拒否",download:"ダウンロード",directory:"ディレクトリ",file:"ファイル"},chat:{...e.chat,sidebar:{...e.chat.sidebar,newSession:"新しいセッション",empty:{noSessions:"セッションはまだありません",hint:"「新しいセッション」をクリックして開始"},dateGroups:{today:"今日",yesterday:"昨日",thisWeek:"今週",thisMonth:"今月",pinned:"ピン留め",scheduled:"スケジュール済み"},actions:{collapseChildren:"子セッションを折りたたむ",expandChildren:"子セッションを展開"}},input:{...e.chat.input,placeholder:"メッセージを送信...",placeholderWithReference:"メッセージを送信(参照付き)",placeholderWithWorkflows:"メッセージを送信...('/' でワークフロー)",processingFiles:"ファイルを処理中…",dropImagesHere:"ここに画像をドロップ",referencing:"参照中",addAttachments:"添付ファイルを追加",referenceWorkspaceFiles:"ワークスペースファイルを参照",imageCountSingular:"{{count}} 枚の画像",imageCountPlural:"{{count}} 枚の画像",moreImages:"+{{count}} 枚",clearAllImages:"すべての画像をクリア",reasoningTitle:"推論の労力: {{label}}",reasoning:{...e.chat.input.reasoning,low:"低",medium:"中",high:"高",xhigh:"非常に高",max:"最大"},strictToolOnlyMode:"厳格なツール専用モード",toolSpecificModeLabel:"ツール指定モード",allowedTools:"許可ツール:",autoPrefixLabel:"自動プレフィックス: {{prefix}}",mustStartWithPrefix:'メッセージは "{{prefix}}" で始まる必要があります'},actions:{...e.chat.actions,regenerate:"回答を再生成",retryFailed:"失敗したリクエストを再試行",retryOptions:"再試行オプション",cancelRequest:"リクエストをキャンセル",sendMessage:"メッセージを送信",copyMessage:"メッセージをコピー",referenceMessage:"メッセージを参照",unpin:"ピン留めを解除",pin:"ピン留め",generateTitle:"AIタイトルを生成"},streaming:{...e.chat.streaming,assistant:"Bodhi",requestCancelled:"リクエストがキャンセルされました",sendFailed:"メッセージの送信に失敗しました",retryFailed:"再試行に失敗しました",modelConfigNotLoaded:"モデル設定が読み込まれていません",agentUnavailable:"エージェントが利用できません",noActiveChatTitle:"アクティブなチャットがありません",noActiveChatSendContent:"メッセージを送信する前にチャットを作成または選択してください。",noActiveChatRetryContent:"再試行する前にチャットを作成または選択してください。"},subAgents:{...e.chat.subAgents,title:"サブエージェント",expand:"展開",collapse:"折りたたむ",continue:"ここで続行",open:"開く",retry:"再試行",hiddenHint:"{{count}} 件のサブエージェントが非表示"},selectionToolbar:{...e.chat.selectionToolbar,selectMessages:"メッセージを選択",selectedCount:"{{selected}} 件選択(全 {{total}} 件)",selectAll:"すべて選択",clear:"クリア",exportMarkdown:"Markdownでエクスポート",exportPdf:"PDFでエクスポート",done:"完了"},messageCard:{...e.chat.messageCard,authRequired:"認証が必要です",goToSettings:"設定へ",assistantThinking:"アシスタントが考え中...",assistantCompactingContext:"アシスタントがコンテキストを圧縮中...",assistantCompactingContextDegraded:"アシスタントがコンテキストを圧縮中(劣化モード)...",assistantCompactingContextFailed:"コンテキスト圧縮に失敗しました。続行中...",assistantUpdatingMemory:"アシスタントがメモリを更新中...",assistantRunningTool:"アシスタントが {{tool}} を実行中...",reasoning:"推論",selected:"選択済み",selectedTool:"選択済みツール"},messageActions:{...e.chat.messageActions,copy:"コピー",exportMarkdown:"Markdownでエクスポート",exportPdf:"PDFでエクスポート",restoreChat:"チャットのみ復元",restoreFilesAndChat:"ファイルとチャットを復元",deleteMessage:"メッセージを削除",deleteFailed:"メッセージの削除に失敗しました",nothingToExport:"エクスポートするものがありません",exportFailed:"エクスポートに失敗しました",restoreFailed:"チャットの復元に失敗しました",savedFile:"{{filename}} に保存しました",cannotRestore:"このメッセージは復元できません",restorePartial:"チャットを復元しました。{{count}} 件のファイルを復元できませんでした。",restoreFilesSuccess:"ファイルとチャットを復元しました({{count}} 件のメッセージを削除)。",restoreSuccess:"チャットを復元しました({{count}} 件のメッセージを削除)。",pdfUnavailable:"この環境では PDF エクスポートは利用できません",exportingPdf:"PDF をエクスポート中..."},chatItem:{edit:"編集",childTag:"子"},title:{updated:"チャットタイトルを更新しました",generateFailed:"チャットタイトルの生成に失敗しました"},respond:{customAnswerPlaceholder:"カスタム回答を入力..."},multiPane:{splitHorizontal:"水平に分割",splitVertical:"垂直に分割",closePane:"ペインを閉じる",selectSessionHint:"セッションを選択してメッセージを表示",hoverToSplitHint:"ペインにホバーして分割し、チャットを比較",selectMessagesToExport:"エクスポートするメッセージを選択"},fileReference:{title:"@ ファイル参照",setWorkspace:"ワークスペースを設定",noMatches:"一致するファイルが見つかりません",emptyDirectory:"ディレクトリは空です"},commandSelector:{...e.chat.commandSelector,loading:"コマンドを読み込み中...",emptyWithSearch:"「{{search}}」に一致するコマンドがありません",empty:"コマンドがありません。",navigationHint:"ナビゲーション: ↑↓ または Ctrl+P/N | 選択: Enter | 補完: Space/Tab | キャンセル: Esc",types:{workflow:"ワークフロー",skill:"スキル",mcp:"MCP"}},systemPromptSelector:{defaultTag:"デフォルト",hide:"非表示",preview:"プレビュー",copy:"コピー",lines:"{{count}} 行",words:"{{count}} 単語",chars:"{{count}} 文字",noContent:"コンテンツなし"}},settings:{...e.settings,page:{...e.settings.page,back:"戻る",title:"システム設定",tabs:{...e.settings.page.tabs,config:"設定",prompts:"プロンプト",mermaid:"Mermaid",skills:"スキル",workflows:"ワークフロー",mcp:"MCP",modelLimits:"モデル制限",metrics:"メトリクス",schedules:"スケジュール",sessions:"セッション",app:"アプリ",provider:"プロバイダー",hooks:"Hooks",masking:"マスキング",envVars:"環境変数"},groups:{...e.settings.page.groups,ai:"AI",toolsAndExtensions:"ツール & 拡張",securityAndPrivacy:"セキュリティ",monitoring:"モニタリング",system:"システム"}},notifications:{...e.settings.notifications,deleteAllSuccess:"すべてのセッションを削除しました(ピン留め除く)",deleteEmptySuccess:"空のセッションを削除しました(ピン留め除く)",localStorageCleared:"ローカルストレージをクリアしました",resetSuccessReloading:"アプリケーションをリセットしました。再読み込み中...",resetFailed:"アプリケーションのリセットに失敗しました",promptEnhancementSaved:"システムプロンプト拡張を保存しました"},configTab:{...e.settings.configTab,loadConfigFailed:"設定の読み込みに失敗しました",invalidConfig:"設定が無効です",saveConfigSuccess:"設定を保存しました",saveConfigFailed:"設定の保存に失敗しました",backendSaved:"バックエンドURLを保存しました",backendResetDefault:"バックエンドURLをデフォルトに戻しました",providerMovedTitle:"プロバイダー設定が移動しました",providerMovedDescription:"GitHub Copilot などのプロバイダー設定は [プロバイダー設定] タブに移動しました。そちらで設定してください。",backendApiBaseUrlTitle:"バックエンド API ベースURL",backendApiHint:"/v1 パスを含めてください",resetToDefault:"デフォルトに戻す",save:"保存",language:"言語",languageEnglish:"英語",languageChinese:"簡体字中国語",languageTraditionalChinese:"繁体字中国語",languageFrench:"フランス語",languageJapanese:"日本語",languageHindi:"ヒンディー語",backendUrlEmpty:"バックエンド URL を入力してください",backendUrlInvalidProtocol:"バックエンド URL は http:// または https:// で始める必要があります",backendUrlInvalidUrl:"バックエンド URL が無効です",backendUrlMustEndWithV1:'バックエンド URL は "/v1" で終わる必要があります',accessPassword:{validation:{currentPasswordRequired:"現在のパスワードを入力してください",newPasswordRequired:"新しいパスワードを入力してください",confirmPasswordRequired:"新しいパスワードを再度入力してください",minLength:"パスワードは4文字以上にしてください",passwordMismatch:"パスワードが一致しません"}}},promptsTab:{...e.settings.promptsTab,title:"システムプロンプト拡張",mermaidEnhancement:"Mermaid 拡張",taskListRules:"タスクリストルール",enhancementPlaceholder:"各システムプロンプトに追加するグローバル拡張テキストを入力してください。",saveEnhancement:"拡張を保存",description:"このテキストは各リクエスト送信前に追加され、その後有効なシステム拡張が適用されます。",switchOn:"オン",switchOff:"オフ"},appTab:{...e.settings.appTab,switchOn:"オン",switchOff:"オフ",darkMode:"ダークモード",darkModeDark:"ダーク",darkModeLight:"ライト",language:"言語",languageEnglish:"英語",languageChinese:"簡体字中国語",languageTraditionalChinese:"繁体字中国語",languageFrench:"フランス語",languageJapanese:"日本語",languageHindi:"ヒンディー語",deleteAllTitle:"すべてのセッションを削除",deleteAllDescription:"よろしいですか?ピン留め以外のすべてのセッションが削除されます。",deleteAllButton:"すべてのセッションを削除",deleteEmptyTitle:"空のセッションを削除",deleteEmptyDescription:"よろしいですか?メッセージのないセッション(ピン留め除く)が削除されます。",deleteEmptyButton:"空のセッションを削除",clearLocalStorageTitle:"ローカルストレージをクリア",clearLocalStorageDescription:"よろしいですか?すべてのローカルデータが削除され、アプリケーションがリセットされます。",clearLocalStorageButton:"ローカルストレージをクリア",confirmDeleteAll:"はい、すべて削除",confirmDeleteEmpty:"はい、空を削除",confirmClear:"はい、クリア",cancel:"キャンセル",dangerZone:"危険ゾーン",dangerDescription:"これらの操作は取り消せません。すべてのデータが永久に削除されます。",resetApplicationTitle:"アプリケーションをリセット",resetApplicationIntro:"よろしいですか?以下が実行されます:",resetStepDeleteAllSessions:"すべてのセッションを削除(ピン留め含む)",resetStepClearStorage:"すべてのローカルデータをクリア",resetStepResetConfig:"config.json をデフォルトにリセット",resetStepSetupFlow:"次回起動時にセットアップフローを表示",resetStepReload:"アプリケーションを再読み込み",resetConfirm:"はい、すべてリセット",resetButton:"アプリケーションをリセット(全データ)"},common:{...e.settings.common,loading:"読み込み中...",successful:"成功",failed:"失敗"},schedulesTab:{...e.settings.schedulesTab,loadFailed:"スケジュールの読み込みに失敗しました",loadSessionsFailed:"スケジュールセッションの読み込みに失敗しました",createFailed:"スケジュールの作成に失敗しました",updateFailed:"スケジュールの更新に失敗しました",deleteFailed:"スケジュールの削除に失敗しました",runNowFailed:"スケジュールの実行に失敗しました",taskMessageRequired:"自動実行が有効な場合、タスクメッセージは必須です",created:"スケジュールを作成しました",updated:"スケジュールを更新しました",deleted:"スケジュールを削除しました",enqueuedRun:"実行をキューに追加しました",optional:"(任意)",defaultName:"マイスケジュール",createTitle:"スケジュール作成",editTitle:"スケジュール編集",listTitle:"スケジュール一覧",scheduleSessionsTitle:"セッションスケジュール",scheduleRunsTitle:"スケジュール実行履歴",noSessionsYet:"まだセッションがありません",noRunsYet:"まだ実行履歴がありません",loadRunsFailed:"実行履歴の読み込みに失敗しました",nonIntervalReadOnly:"間隔以外のトリガーは読み取り専用です",columns:{...(t=e.settings.schedulesTab)==null?void 0:t.columns,autoExecute:"自動実行",intervalSeconds:"間隔",nextRun:"次回実行",lastRun:"最終実行",name:"名前",model:"モデル",enabled:"有効",actions:"操作"},triggerTypes:{interval:"間隔",daily:"毎日",weekly:"毎週",monthly:"毎月",cron:"Cron"},weekdays:{mon:"月",tue:"火",wed:"水",thu:"木",fri:"金",sat:"土",sun:"日"},triggerLabels:{interval:"{{seconds}}秒ごと",daily:"毎日 {{time}}",weekly:"毎週 {{weekdays}} {{time}}",monthly:"毎月 {{days}}日 {{time}}",cron:"Cron: {{expression}}"},statusLabels:{running:"実行中",queued:"待機中",failing:"失敗中",disabled:"無効",healthy:"正常",idle:"アイドル"},statusDetails:{active:"{{count}}回実行済み",pending:"次回実行: {{time}}",consecutiveFailures:"{{count}}回連続失敗",lastRunSucceeded:"最終実行成功"},activityLabels:{queued:"待機中",running:"実行中",ok:"成功",fail:"失敗"},form:{...(s=e.settings.schedulesTab)==null?void 0:s.form,triggerType:"トリガー種別",intervalSeconds:"間隔(秒)",dailyHour:"時",dailyMinute:"分",weeklyWeekdays:"曜日",monthlyDays:"日付",cronExpr:"Cron 式",timezone:"タイムゾーン",startAt:"開始日時",endAt:"終了日時",datetimePlaceholder:"日時を選択",misfirePolicy:"ミスファイヤーポリシー",overlapPolicy:"重複ポリシー",catchUpWindow:"キャッチアップウィンドウ(秒)",taskMessage:"タスクメッセージ",taskMessagePlaceholder:"(任意)実行するタスク",modelPlaceholder:"(任意)例: gpt-4o-mini",modelRequiredIfAuto:"自動実行の場合は必須",autoExecute:"自動実行",systemPrompt:"システムプロンプト",workspacePath:"ワークスペースパス",enhancePrompt:"プロンプトを強化",name:"名前",enabled:"有効",model:"モデル"},misfirePolicyOptions:{fireNow:"即時実行",doNothing:"何もしない"},overlapPolicyOptions:{allow:"許可",block:"ブロック",replace:"置換"},validation:{nameRequired:"名前は必須です",intervalRequired:"間隔は必須です"},actions:{runNow:"今すぐ実行",create:"作成",refresh:"更新",edit:"編集",sessions:"セッション",runs:"実行履歴",delete:"削除",open:"開く",save:"保存"},runHistory:{columns:{runAt:"実行時刻",status:"状態",duration:"所要時間",triggerType:"トリガー種別",message:"メッセージ",actions:"操作"}},yes:"はい",no:"いいえ"},modelLimits:{...e.settings.modelLimits,title:"トークン予算モデル制限",defaultsTitle:"モデル初期値",loadFailed:"モデル制限設定の読み込みに失敗しました",saveSuccess:"モデル制限をグローバル設定に保存しました",saveFailed:"モデル制限設定の保存に失敗しました",resetSuccess:"モデル制限を初期値に戻しました",resetFailed:"モデル制限設定のリセットに失敗しました",columns:{...e.settings.modelLimits.columns,contextWindow:"コンテキストウィンドウ",maxOutput:"最大出力",model:"モデル",safetyMargin:"安全マージン",status:"状態",actions:"操作"},actions:{addRow:"行を追加",resetToDefaults:"初期値に戻す",remove:"削除",save:"保存",reload:"再読み込み"},validation:{atLeastOneRow:"1行以上のモデル制限を保持してください。",modelPatternEmpty:"モデルパターンは空にできません。",duplicateModelPattern:"重複モデルパターン: {{pattern}}",contextWindowMin:"{{pattern}} のコンテキストウィンドウは1000以上必要です。",maxOutputMin:"{{pattern}} の最大出力は1以上必要です。",maxOutputExceedsContext:"{{pattern}} の最大出力はコンテキストウィンドウ以下にしてください。"}},modelMappingCard:{...e.settings.modelMappingCard,loadProviderFailed:"プロバイダー設定の読み込みに失敗しました",loadMappingsFailed:"既存のマッピングの読み込みに失敗しました",loadModelsFailed:"モデルの読み込みに失敗しました",mappingSaved:"モデルマッピングを保存しました",mappingSaveFailed:"モデルマッピングの保存に失敗しました",enterModelName:"モデル名を入力してください",customMappingSaved:"カスタムモデルマッピングを保存しました",customMappingSaveFailed:"カスタムモデルマッピングの保存に失敗しました",modelTypeOpus:"Opus",modelTypeSonnet:"Sonnet",modelTypeHaiku:"Haiku"},keywordMaskingTab:{...e.settings.keywordMaskingTab,title:"キーワードマスキング",addKeyword:"キーワードを追加",empty:"キーワードマスキングルールが設定されていません",exactMatch:"完全一致",regexPattern:"正規表現パターン",enabled:"有効",disabled:"無効",sampleText:"サンプルテキスト",maskedPreview:"マスキングプレビュー",loadFailed:"キーワードマスキング設定の読み込みに失敗しました",saveSuccess:"キーワードマスキング設定を保存しました",patternRequired:"パターンは空にできません",invalidRegexPattern:"無効な正規表現パターンです"},metricsCards:{totalSessions:"セッション総数",chatTokens:"チャットトークン",totalToolCalls:"ツール呼び出し総数",avgSessionDuration:"平均セッション時間"},forwardMetricsCards:{totalForwardRequests:"Forward リクエスト総数",successRate:"成功率",forwardTokens:"Forward トークン",avgResponseTime:"平均応答時間"},unifiedMetricsCards:{...e.settings.unifiedMetricsCards,totalRequests:"リクエスト総数",totalTokens:"トークン総数",successRate:"成功率",avgResponseTime:"平均応答時間",chatSessions:"チャットセッション",chatTokens:"チャットトークン",toolCalls:"ツール呼び出し",forwardRequests:"Forward リクエスト",forwardTokens:"Forward トークン",successful:"成功",failed:"失敗"},metricsTable:{...e.settings.metricsTable,session:{...(i=e.settings.metricsTable)==null?void 0:i.session,columns:{session:"セッション",model:"モデル",status:"状態",started:"開始時刻",duration:"所要時間",tokens:"トークン",toolCalls:"ツール呼び出し",messages:"メッセージ",action:"操作"},view:"表示"},forward:{...(o=e.settings.metricsTable)==null?void 0:o.forward,columns:{id:"ID",endpoint:"エンドポイント",model:"モデル",type:"種別",status:"状態",tokens:"トークン",duration:"所要時間",started:"開始時刻",error:"エラー"},typeStream:"ストリーム",typeSync:"同期"}},mcpToolList:{...e.settings.mcpToolList,title:"MCP ツール",selectServerHint:"MCP ツールを確認するサーバーを選択してください",empty:"このサーバーにツールが見つかりません",noDescription:"説明がありません",aliasMapping:"エイリアスマッピング",parametersSchema:"パラメータスキーマ"},mcpServerTable:{...e.settings.mcpServerTable,columns:{name:"名前",transportType:"転送種別",status:"状態",toolCount:"ツール数",actions:"操作"},deleteTitle:"MCP サーバーを削除",empty:"MCP サーバーが設定されていません",actions:{edit:"編集",delete:"削除",disconnect:"切断",connect:"接続",refreshTools:"ツールを更新"},transportOptions:{sse:"SSE",stdio:"Stdio"}},mcpServerForm:{...e.settings.mcpServerForm,editTitle:"MCP サーバーを編集",addTitle:"MCP サーバーを追加",save:"保存",modeForm:"フォーム",modeJson:"JSON",serverId:"サーバー ID",serverIdRequired:"サーバー ID は必須です",displayName:"表示名",enabled:"有効",transportType:"転送種別",transportTypeRequired:"転送種別は必須です",command:"コマンド",commandRequired:"コマンドは必須です",arguments:"引数",argumentsPlaceholder:"引数を追加して Enter を押してください",envVars:"環境変数",addEnv:"環境変数を追加",keyRequired:"キーは必須です",sseUrl:"SSE URL",sseUrlRequired:"SSE URL は必須です",validUrlRequired:"有効な URL を入力してください",headers:"ヘッダー",addHeader:"ヘッダーを追加",headerNameRequired:"ヘッダー名は必須です",transportOptions:{stdio:"Stdio",sse:"SSE"}},providerTab:{...e.settings.providerTab,title:"LLM プロバイダー設定",description:"使用する LLM プロバイダーを設定します。「保存して適用」をクリックすると設定が保存・反映されます。",currentProvider:"現在のプロバイダー",activeProvider:"アクティブな LLM プロバイダー",selectProviderRequired:"プロバイダーを選択してください",saveAndApply:"保存して適用",loadConfigFailed:"プロバイダー設定の読み込みに失敗しました",saveConfigSuccess:"設定を保存しました",saveConfigFailed:"設定の保存に失敗しました",applyConfigSuccess:"設定を適用しました。新しいセッションから反映されます。",applyConfigFailed:"設定の適用に失敗しました",modelUpdated:"モデルを更新しました",updateModelFailed:"モデルの更新に失敗しました",fetchingModels:"モデルを取得中...",fetchModelsFailed:"モデルの取得に失敗しました。API Key と Base URL を確認してください。",noModelsReturned:"モデルが返されませんでした。先に Copilot 認証を完了してください。",foundModels:"{{count}} 個のモデルが見つかりました",retry:"再試行",defaultModel:"デフォルトモデル",modelPreferences:"モデル設定",fastModel:"高速モデル(任意)",fastModelHelp:"タイトル生成、Mermaid 修正、要約などの軽量タスク用の低コスト/高速モデル。未設定時はデフォルトモデルを使用。",subAgentModel:"サブエージェントモデル(任意)",subAgentModelHelp:"新しいサブエージェントのデフォルトモデル。未設定時は高速モデル、さらにデフォルトモデルにフォールバック。",visionModel:"ビジョンモデル(任意)",visionModelHelp:"画像理解用のビジョンモデル。hooks.image_fallback.mode が 'vision' の場合、画像をテキストとして記述します。未設定時はデフォルトモデルを使用。",sameAsDefault:"デフォルトと同じ",selectModelRequired:"モデルを選択してください",selectModel:"モデルを選択",openaiConfigTitle:"OpenAI 設定",openaiConfigDescription:"OpenAI API Key を入力して GPT モデルを使用します。カスタム Base URL も指定可能です。",openaiApiKey:"OpenAI API Key",openaiApiKeyRequired:"OpenAI API Key を入力してください",baseUrlOptional:"Base URL(任意)",openaiBaseUrlHelp:"空欄の場合はデフォルトの OpenAI API エンドポイントを使用します。必要に応じてフルパス(例: /v1)を含めてください。",anthropicConfigTitle:"Anthropic 設定",anthropicConfigDescription:"Anthropic API Key を入力して Claude モデルを使用します。",anthropicApiKey:"Anthropic API Key",anthropicApiKeyRequired:"Anthropic API Key を入力してください",anthropicBaseUrlHelp:"空欄の場合はデフォルトの Anthropic API エンドポイントを使用します。必要に応じてフルパスを含めてください。",maxTokensOptional:"最大 Tokens(任意)",maxTokensHelp:"生成時の最大トークン数",geminiConfigTitle:"Google Gemini 設定",geminiConfigDescription:"Google AI API Key を入力して Gemini モデルを使用します。",geminiApiKey:"Gemini API Key",geminiApiKeyRequired:"Gemini API Key を入力してください",geminiBaseUrlHelp:"空欄の場合はデフォルトの Google AI エンドポイントを使用します。必要に応じてフルパスを含めてください。",copilotConfigTitle:"GitHub Copilot 設定",copilotConfigDescription:"GitHub Copilot は OAuth 認証を使用します。API Key は不要です。有効な GitHub Copilot サブスクリプションが必要です。",authStatusTitle:"認証状態",authenticated:"認証済み",notAuthenticated:"未認証",logoutCopilot:"Copilot からログアウト",authenticateCopilot:"Copilot を認証",refreshStatus:"状態を更新",headlessAuth:"ヘッドレス認証",headlessAuthHelp:"ブラウザを自動で開かず、コンソールにログインリンクを出力します",providerNames:{openai:"OpenAI",anthropic:"Anthropic",gemini:"Gemini",copilot:"Copilot"},checkStatusFailed:"ステータスの確認に失敗しました",startCopilotAuthFailed:"Copilot 認証の開始に失敗しました",copilotAuthSuccess:"Copilot 認証に成功しました!",providerReloaded:"新しい認証情報でプロバイダーを再読み込みしました。",completeAuthFailed:"認証の完了に失敗しました。再試行してください。",userCodeCopied:"ユーザーコードをクリップボードにコピーしました!",copyCodeFailedPrefix:"コピーに失敗しました。手動でコピーしてください:",logoutSuccess:"Copilot からログアウトしました",logoutFailed:"Copilot のログアウトに失敗しました",unknownError:"不明なエラー",invalidConfig:"設定が無効です",invalidConfigPrefix:"設定が無効です",invalidRequestOverridesJson:"{{provider}} の request_overrides JSON が無効です:{{error}}",fetchModelsCopilotFailed:"モデルの取得に失敗しました。先に Copilot 認証を完了してください。",fetchModelsErrorPrefix:"モデルの取得に失敗しました",saveModelChangeFailed:"モデル変更の保存に失敗しました",fetchModelsFailedShort:"モデルの取得に失敗しました",refreshModelsFrom:"{{source}} からモデルを更新",fetchModelsFrom:"{{source}} からモデルを取得",noModelsLoaded:"モデルがまだ読み込まれていません。「すべてのモデルを取得」をクリックしてください。",authFirstThenFetch:"先に Copilot 認証を完了してからモデルを取得してください。",openaiApiKeyPlaceholder:"sk-...",openaiBaseUrlPlaceholder:"https://api.openai.com/v1",anthropicApiKeyPlaceholder:"sk-ant-...",anthropicBaseUrlPlaceholder:"https://api.anthropic.com",maxTokensPlaceholder:"例: 4096",geminiApiKeyPlaceholder:"AI...",geminiBaseUrlPlaceholder:"https://generativelanguage.googleapis.com",responsesOnlyModelsOptional:"Responses 専用モデル(任意)",responsesOnlyModelsPlaceholder:'例: "gpt-5.3-codex", "gpt-5*"',responsesOnlyHelp1:"一部のモデルは OpenAI Responses API のみをサポートします(chat/completions は不可)。ここにモデル ID を追加すると、Bamboo に",responsesOnlyHelp2:"完全一致(例: gpt-5.3-codex)とサフィックス * のプレフィックス一致(例: gpt-5*)をサポートします。",copilotUsageTitle:"GitHub Copilot の使い方:",copilotUsageStep1:"有効な GitHub Copilot サブスクリプションがあることを確認",copilotUsageStep2:"「Copilot を認証」をクリックしてデバイスコードフローを開始",copilotUsageStep3:"ターミナルの指示に従って認証を完了",copilotAuthModalTitle:"Copilot 認証",cancel:"キャンセル",completedAuthorization:"認証を完了しました",browserOpened:"ブラウザが自動的に開きました",authStep1:"ブラウザで GitHub ページが開きます",authStep2:"下のコードをコピーして GitHub ページに貼り付けます",authStep3:"GitHub で「Continue」をクリックして認証を完了",visitUrl:"1. URL を開く:",enterCode:"2. コードを入力:",copied:"コピーしました!",copyCode:"コードをコピー",afterContinueHint:"GitHub で Continue をクリックした後、下の「認証を完了しました」をクリックしてください。",providerModelRef:"プロバイダーモデルカタログ",providerModelRefHelp:"バックエンド提供のモデルカタログを使用してモデルを選択します。有効にすると、手動設定ではなくカタログのモデルが表示されます。",catalogModeInfo:"モデルはプロバイダーカタログから取得されます。",fetchAllModels:"すべてのモデルを取得",fetchingAllModels:"モデルを取得中...",fetchModelsSuccess:"{{count}} プロバイダーのモデルを取得しました",fetchModelsPartialSuccess:"{{success}}/{{total}} プロバイダーのモデルを取得しました",providerNotConfigured:"プロバイダー未設定",capabilityVision:"ビジョン",capabilityTools:"ツール",capabilityReasoning:"推論",refreshCatalog:"カタログを更新",noCatalogModels:"カタログにモデルがありません",reasoningEffortDefault:"デフォルト",reasoningEffortOptional:"推論の労力(任意)",reasoningEffortHelp:"モデルの推論レベルを設定します。未設定時はプロバイダーのデフォルトを使用。",activeProviderReasoningEffort:"アクティブな推論レベル",reasoningEffortUpdated:"推論レベルを更新しました",updateReasoningEffortErrorPrefix:"推論レベルの更新に失敗しました",updateReasoningEffortFailed:"推論レベルの更新に失敗しました",advancedRequestOverrides:"高度なリクエストオーバーライド",advancedRequestOverridesHelp:"各リクエストに適用するカスタム JSON オーバーライド。",envVarInjection:"環境変数インジェクション"}},components:{...e.components,workflowResult:{...e.components.workflowResult,userWorkflow:"ユーザーワークフロー",waitingForResult:"ワークフロー結果を待機中...",executionFailed:"ワークフローの実行に失敗しました",retryWorkflow:"ワークフローを再実行",copyParameters:"パラメータをコピー",copyResult:"結果をコピー",expandResult:"結果を展開",collapseResult:"結果を折りたたむ"},toolResult:{...e.components.toolResult,waiting:"待機中",waitingForResult:"結果を待機中...",executionFailed:"ツールの実行に失敗しました",copyResult:"結果をコピー"},todoList:{...e.components.todoList,title:"タスクリスト",evaluating:"評価中",pin:"ピン留め",unpin:"ピン留めを解除",llmEvaluation:"LLM 評価",tools:"ツール",dependsOn:"依存: {{deps}}",dependencies:"依存",status:{...e.components.todoList.status,pending:"保留中",inProgress:"進行中",completed:"完了",blocked:"ブロック",skipped:"スキップ",failed:"失敗"},listStatus:{active:"アクティブ",completed:"完了",abandoned:"放棄"},percentComplete:"{{percent}}% 完了",progressLabel:"{{completed}} / {{total}} タスク完了",currentLabel:"現在: {{description}}"},toolSession:{...(a=e.components)==null?void 0:a.toolSession,title:"ツールセッション",running:"実行中",done:"完了",error:"エラー",completedOnly:"{{completed}} 完了",completedWithErrors:"{{completed}} 完了(エラーあり)",completedProgress:"{{completed}} / {{total}} 完了",noPersistedMessage:"永続化された出力がありません",deleteMessage:"ツールセッションを削除"},tokenUsage:{...e.components.tokenUsage,title:"トークン使用量",summary:"サマリー",system:"システム",messages:"メッセージ",tokens:"トークン",usedPercent:"{{value}}% 使用"},plan:{...e.components.plan,executionPlan:"実行プラン",goal:"目標",steps:"ステップ",stepTitle:"ステップ {{number}}",reason:"理由",estimated:"推定",tools:"ツール",prerequisites:"前提条件",potentialRisks:"潜在的リスク ({{count}})",totalEstimatedTime:"合計推定時間",feedbackPlaceholder:"エージェントに調整内容を伝えてください...",sendFeedback:"フィードバックを送信",refinePlan:"プランを洗練",executePlan:"プランを実行"},question:{...e.components.question,agentQuestion:"エージェントからの質問",context:"コンテキスト",chooseOption:"オプションを選択",recommended:"推奨",customAnswerHint:"適切なオプションがない場合は、自分で回答を入力してください。",customAnswerPlaceholder:"カスタム回答を入力...",submitAnswer:"回答を送信"},skillManager:{...e.components.skillManager,title:"スキル",refresh:"更新",skillsRefreshed:"スキルを更新しました",lastUpdated:"最終更新: {{value}}",justNow:"たった今",secondsAgo:"{{count}} 秒前",minutesAgo:"{{count}} 分前",searchPlaceholder:"スキルを検索",noSkillsFound:"スキルが見つかりません",loadFailed:"スキルの読み込みに失敗しました",getFailed:"スキルの取得に失敗しました"},mermaid:{...e.components.mermaid,loadingDiagram:"図を読み込み中...",diagramError:"Mermaid図エラー",errorTitlePrefix:"エラー",checkConsoleHint:"Mermaidの構文を確認するか、コンソールを開いて詳細を確認してください。",fixMermaid:"Mermaidを修正",renderingDiagram:"図をレンダリング中...",exportSvg:"SVGでエクスポート",exportFailed:"図のエクスポートに失敗しました"}}}},Se=e=>({...e,app:{...e.app,loading:"लोड हो रहा है...",retry:"पुनः प्रयास करें",backendNotReachable:"बैकएंड {{baseUrl}} पर उपलब्ध नहीं है (अंतिम त्रुटि: {{message}})"},chat:{...e.chat,sidebar:{...e.chat.sidebar,newSession:"नया सत्र",empty:{noSessions:"अभी तक कोई सत्र नहीं",hint:'शुरू करने के लिए "नया सत्र" पर क्लिक करें'},dateGroups:{today:"आज",yesterday:"कल",thisWeek:"इस सप्ताह",thisMonth:"इस महीने",pinned:"पिन किया गया",scheduled:"अनुसूचित"},actions:{collapseChildren:"चाइल्ड सत्र संक्षिप्त करें",expandChildren:"चाइल्ड सत्र विस्तृत करें"}}},settings:{...e.settings,page:{...e.settings.page,back:"वापस",title:"सिस्टम सेटिंग्स",tabs:{...e.settings.page.tabs,config:"कॉन्फ़िगरेशन",prompts:"प्रॉम्प्ट्स",skills:"स्किल्स",workflows:"वर्कफ़्लोज़",modelLimits:"मॉडल सीमाएँ",metrics:"मेट्रिक्स",schedules:"शेड्यूल",sessions:"सेशंस",app:"ऐप",provider:"प्रोवाइडर",hooks:"हुक्स",masking:"मास्किंग",envVars:"पर्यावरण वेरिएबल्स"},groups:{...e.settings.page.groups,ai:"AI",toolsAndExtensions:"टूल्स और एक्सटेंशन्स",securityAndPrivacy:"सुरक्षा",monitoring:"मॉनिटरिंग",system:"सिस्टम"}},configTab:{...e.settings.configTab,tabs:{...e.settings.configTab.tabs,general:"सामान्य",tools:"टूल्स"},providerMovedTitle:"प्रोवाइडर कॉन्फ़िगरेशन स्थानांतरित किया गया",providerMovedDescription:"GitHub Copilot और अन्य प्रोवाइडर सेटिंग्स को Provider Settings टैब में स्थानांतरित कर दिया गया है। कृपया अपने प्रोवाइडर वहीं कॉन्फ़िगर करें।",backendApiBaseUrlTitle:"बैकएंड API बेस URL",backendApiHint:"/v1 पथ शामिल होना चाहिए",resetToDefault:"डिफ़ॉल्ट पर रीसेट करें",save:"सहेजें",toolsTitle:"टूल उपलब्धता",toolsDescription:"नियंत्रित करें कि कौन-सा टूल AI मॉडल को भेजा जाए। बंद किए गए टूल मॉडल टूल-स्कीमा से छिपा दिए जाते हैं।",toolsEmpty:"फिलहाल कोई टूल उपलब्ध नहीं है।",reloadTools:"टूल्स रीलोड करें",language:"भाषा",languageEnglish:"अंग्रेज़ी",languageChinese:"सरलीकृत चीनी",languageTraditionalChinese:"पारंपरिक चीनी",languageFrench:"फ़्रेंच",languageJapanese:"जापानी",languageHindi:"हिन्दी"},networkCard:{...e.settings.networkCard,title:"नेटवर्क सेटिंग्स",httpProxy:"HTTP प्रॉक्सी",httpsProxy:"HTTPS प्रॉक्सी",proxyAuthTitle:"प्रॉक्सी प्रमाणीकरण",proxyConfiguredForUser:"उपयोगकर्ता के लिए कॉन्फ़िगर: {{username}}",clearCredentials:"क्रेडेंशियल्स साफ़ करें",username:"उपयोगकर्ता नाम",password:"पासवर्ड",apply:"लागू करें",credentialsStorageNote:"प्रॉक्सी क्रेडेंशियल्स एन्क्रिप्ट होकर ~/.bamboo/config.json में सहेजे जाते हैं",reload:"रीलोड",save:"सहेजें"},modelMappingCard:{...e.settings.modelMappingCard,collapseTitle:"Anthropic मॉडल मैपिंग",description:"कॉन्फ़िगर करें कि Claude CLI जब विशिष्ट मॉडल मांगे तो कौन-से {{provider}} मॉडल उपयोग हों।",loadModelsErrorTitle:"मॉडल लोड करने में विफल",retry:"पुनः प्रयास करें",loadingModels:"मॉडल लोड हो रहे हैं...",modelTypeOpusDescription:'"opus" वाले मॉडल से मेल खाता है',modelTypeSonnetDescription:'"sonnet" वाले मॉडल से मेल खाता है',modelTypeHaikuDescription:'"haiku" वाले मॉडल से मेल खाता है',selectModelPlaceholder:"{{label}} मॉडल चुनें",customModelOption:"कस्टम मॉडल...",refreshModels:"मॉडल रीफ्रेश करें",currentProvider:"वर्तमान प्रोवाइडर",loadingProvider:"लोड हो रहा है...",availableModels:"उपलब्ध मॉडल",storedIn:"संग्रहित स्थान",customModalTitle:"कस्टम मॉडल नाम दर्ज करें",customModalDescription:"{{modelType}} के लिए कस्टम मॉडल नाम दर्ज करें",customModalPlaceholder:"उदाहरण: gpt-4-turbo-preview",customModalNote:"नोट: सुनिश्चित करें कि मॉडल नाम वर्तमान प्रोवाइडर के लिए मान्य है।",save:"सहेजें",cancel:"रद्द करें"},appTab:{...e.settings.appTab,switchOn:"चालू",switchOff:"बंद",darkMode:"डार्क मोड",darkModeDark:"डार्क",darkModeLight:"लाइट",language:"भाषा",languageEnglish:"अंग्रेज़ी",languageChinese:"सरलीकृत चीनी",languageTraditionalChinese:"पारंपरिक चीनी",languageFrench:"फ़्रेंच",languageJapanese:"जापानी",languageHindi:"हिन्दी",cancel:"रद्द करें",dangerZone:"जोखिम क्षेत्र"},common:{...e.settings.common,loading:"लोड हो रहा है...",successful:"सफल",failed:"विफल"}},commandPalette:{searchPlaceholder:"सत्र, सेटिंग्स और कार्रवाइयाँ खोजें",navigationHint:"नेविगेट करने के लिए ↑↓, खोलने के लिए Enter, बंद करने के लिए Esc दबाएँ",empty:"कोई मेल खाती कमांड नहीं",groups:{quickActions:"त्वरित कार्रवाइयाँ",settings:"सिस्टम सेटिंग्स"},badges:{quickAction:"कार्रवाई",pinned:"पिन किया",running:"चल रहा है",child:"चाइल्ड",childSession:"चाइल्ड सत्र",rootSession:"सत्र"},actions:{newSession:"नया सत्र बनाएँ",openProviderSettings:"प्रोवाइडर सेटिंग्स खोलें",openMcpSettings:"MCP सेटिंग्स खोलें",openWorkflowSettings:"वर्कफ़्लो सेटिंग्स खोलें",openSessionsSettings:"सत्र मॉनिटर खोलें",openSchedulesSettings:"अनुसूचियाँ खोलें"},errors:{actionFailed:"कमांड विफल हुई"}},setup:{welcome:{heading:"Bodhi में आपका स्वागत है",description:"Bodhi आपका AI-संचालित विकास सहायक है। एक AI प्रोवाइडर कॉन्फ़िगर करें और शुरू करें, या सीधे आगे बढ़ें।",providerHint:"चैट शुरू करने के लिए, आपको एक AI प्रोवाइडर (जैसे OpenAI, Anthropic) को API कुंजी के साथ कॉन्फ़िगर करना होगा।",proxyHint:"कॉर्पोरेट प्रॉक्सी के पीछे हैं? आप बाद में सिस्टम सेटिंग्स > नेटवर्क में प्रॉक्सी सेटिंग्स कॉन्फ़िगर कर सकते हैं।"},button:{getStarted:"शुरू करें",configureProvider:"प्रोवाइडर कॉन्फ़िगर करें"},complete:{title:"सब तैयार है!",restartMessage:"एप्लिकेशन पुनः लोड हो रहा है..."},error:{completeFailed:"सेटअप पूरा करने में विफल। कृपया पुनः प्रयास करें।"}},onboarding:{welcome:{title:"Bodhi में आपका स्वागत है!",description:"Bodhi आपका AI-संचालित विकास सहायक है। आइए जल्दी से परिचित होते हैं।"},newSession:{title:"नया सत्र",description:"AI सहायक के साथ नई चैट सत्र शुरू करने के लिए यहाँ क्लिक करें।"},taskTemplates:{title:"कार्य टेम्पलेट",description:"कोड समीक्षा, Bug जाँच, रिफैक्टर आदि पूर्व-निर्मित टेम्पलेट्स से चुनें।"},modelPicker:{title:"मॉडल चयन",description:"यहाँ से कभी भी AI मॉडल और प्रोवाइडर बदलें।"},sidebar:{title:"सत्र साइडबार",description:"अपने सत्र प्रबंधित करें — खोजें, फ़िल्टर करें, पिन करें और स्विच करें।"},settings:{title:"सेटिंग्स",description:"AI प्रोवाइडर, प्रॉक्सी, मॉडल मैपिंग, MCP सर्वर और बहुत कुछ कॉन्फ़िगर करें।"}}}),ke=e=>{const t=ye(e);return{...t,layout:{...e.layout,showSidebar:"Afficher la barre latérale"},common:{...e.common,workspace:"Espace de travail",server:"Serveur :",category:"Catégorie :",parameters:"Paramètres",approve:"Approuver",reject:"Refuser"},chat:{...t.chat,sidebar:{...t.chat.sidebar,createFailedTitle:"Échec de création de session",createFailedUnknown:"Erreur inconnue",delete:{title:"Supprimer la session",confirm:"Voulez-vous vraiment supprimer cette session ?"},deleteByDate:{title:"Supprimer les sessions du {{date}}",confirm:"Voulez-vous vraiment supprimer {{count}} session(s) du {{date}} ?"},newSessionWithPrompt:"Nouvelle session avec {{prompt}}"},workspace:{...e.chat.workspace,recentTitle:"Espaces récents",suggestedTitle:"Espaces suggérés",noRecentWorkspaces:"Aucun espace récent",noSuggestions:"Aucune suggestion",defaultWorkspaceName:"Espace de travail",validWorkspace:"Espace valide",fileCount:"{{count}} fichiers"},input:{...e.chat.input,addAttachments:"Ajouter des pièces jointes",referenceWorkspaceFiles:"Référencer des fichiers de l'espace",imageCountSingular:"{{count}} image",imageCountPlural:"{{count}} images",moreImages:"+{{count}} de plus",clearAllImages:"Effacer toutes les images",dropImagesHere:"Déposez les images ici",referencing:"Référencement",reasoningTitle:"Effort de raisonnement : {{label}}",reasoning:{...e.chat.input.reasoning,low:"Faible",medium:"Moyen",high:"Élevé",xhigh:"Très élevé",max:"Max"},strictToolOnlyMode:"Mode strict outils uniquement",toolSpecificModeLabel:"Mode spécifique à l'outil",allowedTools:"Outils autorisés :",autoPrefixLabel:"Préfixe auto : {{prefix}}",mustStartWithPrefix:'Le message doit commencer par "{{prefix}}"'},prompt:{...e.chat.prompt,selectorTitle:"Choisir un prompt système",createButton:"Créer une nouvelle session",helperText:"Choisissez un prompt système de base pour l'IA. Vous pouvez en ajouter ou modifier dans les paramètres système.",emptyDescription:"Aucun prompt système trouvé. Ajoutez-en un dans les paramètres système.",newSessionSelectorTitle:"Choisir un prompt système pour la nouvelle session",defaultDescription:"Prompt système par défaut.",loadPresetsFailed:"Échec du chargement des préréglages",loadCurrentInfoFailed:"Échec du chargement des informations actuelles"},commandSelector:{...e.chat.commandSelector,loading:"Chargement des commandes...",emptyWithSearch:'Aucune commande trouvée pour "{{search}}"',empty:"Aucune commande disponible.",navigationHint:"Navigation : Haut/Bas ou Ctrl+P/N | Sélection : Entrée | Compléter : Espace/Tab | Annuler : Échap",types:{...e.chat.commandSelector.types,workflow:"Flux de travail",skill:"Compétence",mcp:"MCP"}},model:{...e.chat.model,selectModel:"Sélectionner un modèle",noModelSelected:"Aucun modèle sélectionné",selectModelHint:"Choisissez un modèle pour commencer la discussion.",providerNotConfigured:"Fournisseur non configuré",configureProviderHint:"Configurez votre fournisseur dans les paramètres avant de choisir un modèle.",configureProvider:"Configurer le fournisseur",openSettings:"Ouvrir les paramètres",noModelsAvailable:"Aucun modèle disponible",selectModelBeforeSend:"Veuillez sélectionner un modèle avant l'envoi.",selectModelBeforeRetry:"Veuillez sélectionner un modèle avant de réessayer."},streaming:{...e.chat.streaming,assistant:"Bodhi",requestCancelled:"Requête annulée",sendFailed:"Échec de l'envoi du message",retryFailed:"Échec de la nouvelle tentative",modelConfigNotLoaded:"Configuration du modèle non chargée",agentUnavailable:"Agent indisponible",noActiveChatTitle:"Aucune conversation active",noActiveChatSendContent:"Veuillez créer ou sélectionner une conversation avant d'envoyer un message.",noActiveChatRetryContent:"Veuillez créer ou sélectionner une conversation avant de réessayer.",noChatIdTitle:"ID de conversation manquant",noChatIdSendContent:"La conversation actuelle n'a pas d'ID. Créez une nouvelle conversation puis réessayez.",noChatIdRetryContent:"La conversation actuelle n'a pas d'ID. Créez une nouvelle conversation puis réessayez."},selectionToolbar:{...e.chat.selectionToolbar,selectMessages:"Sélectionner des messages",selectedCount:"{{selected}} sélectionné(s) ({{total}} au total)",selectAll:"Tout sélectionner",clear:"Effacer",exportMarkdown:"Exporter en Markdown",exportPdf:"Exporter en PDF",done:"Terminé"},subAgents:{...e.chat.subAgents,title:"Sous-agents",expand:"Développer",collapse:"Réduire",continue:"Continuer ici",open:"Ouvrir",retry:"Réessayer",hiddenHint:"{{count}} sous-agent(s) masqué(s)"},chatItem:{...e.chat.chatItem,edit:"Modifier",childTag:"Enfant"},systemPromptSelector:{...e.chat.systemPromptSelector,defaultTag:"Par défaut",hide:"Masquer",preview:"Aperçu",copy:"Copier",lines:"{{count}} lignes",words:"{{count}} mots",chars:"{{count}} caractères",noContent:"Aucun contenu"},title:{...e.chat.title,updated:"Titre de conversation mis à jour",generateFailed:"Échec de génération du titre de conversation"},respond:{...e.chat.respond,customAnswerPlaceholder:"Saisissez votre réponse personnalisée..."},multiPane:{...e.chat.multiPane,splitHorizontal:"Diviser horizontalement",splitVertical:"Diviser verticalement",closePane:"Fermer le panneau",selectSessionHint:"Sélectionnez une session pour voir les messages",hoverToSplitHint:"Survolez un panneau pour le diviser et comparer les conversations",selectMessagesToExport:"Sélectionnez des messages à exporter"},messageCard:{...e.chat.messageCard,authRequired:"Authentification requise",goToSettings:"Aller aux paramètres",assistantThinking:"L'assistant réfléchit...",reasoning:"Raisonnement",selected:"Sélectionné",selectedTool:"Outil sélectionné"},messageActions:{...e.chat.messageActions,copy:"Copier",exportMarkdown:"Exporter en Markdown",exportPdf:"Exporter en PDF",restoreChat:"Restaurer uniquement la conversation",restoreFilesAndChat:"Restaurer les fichiers et la conversation",deleteMessage:"Supprimer le message",savedFile:"Enregistré dans {{filename}}",nothingToExport:"Rien à exporter",exportFailed:"Échec de l'export",cannotRestore:"Impossible de restaurer ce message",restorePartial:"Conversation restaurée. {{count}} fichier(s) n'ont pas pu être restaurés.",restoreFilesSuccess:"Fichiers et conversation restaurés ({{count}} message(s) supprimé(s)).",restoreSuccess:"Conversation restaurée ({{count}} message(s) supprimé(s)).",restoreFailed:"Échec de restauration de la conversation",pdfUnavailable:"L'export PDF n'est pas disponible dans cet environnement",exportingPdf:"Export PDF en cours..."},session:{...e.chat.session,defaultTitle:"Nouvelle session"}},settings:{...t.settings,page:{...t.settings.page,tabs:{...t.settings.page.tabs,hooks:"Hooks",envVars:"Variables d'environnement"}},configTab:{...t.settings.configTab,tabs:{...e.settings.configTab.tabs,general:"Général",tools:"Outils"},toolsTitle:"Disponibilité des outils",toolsDescription:"Activez/désactivez les outils pouvant être envoyés au modèle IA. Les outils désactivés sont masqués du schéma d'outils du modèle.",toolsEmpty:"Aucun outil disponible actuellement.",reloadTools:"Recharger les outils",loadBambooConfigFailed:"Échec du chargement de la configuration Bamboo",bambooConfigSaved:"Configuration Bamboo enregistrée",saveBambooConfigFailed:"Échec de l'enregistrement de la configuration Bamboo"},keywordMaskingTab:{...t.settings.keywordMaskingTab,invalidRegexPattern:"Motif regex invalide"}},components:{...e.components,workflowResult:{...e.components.workflowResult,userWorkflow:"Workflow utilisateur",waitingForResult:"En attente du résultat du workflow...",executionFailed:"Échec d'exécution du workflow",retryWorkflow:"Relancer le workflow",copyParameters:"Copier les paramètres",copyResult:"Copier le résultat",expandResult:"Développer le résultat",collapseResult:"Réduire le résultat"},toolResult:{...e.components.toolResult,waiting:"En attente",waitingForResult:"En attente du résultat...",executionFailed:"Échec d'exécution de l'outil",copyResult:"Copier le résultat",checkpoint:"Point de contrôle",checkpointNone:"Aucun",diffTruncated:"Le diff est trop long et a été tronqué"},toolCall:{...e.components.toolCall,liveOutput:"Sortie en direct",keyParameters:"Paramètres clés",fullParameters:"Paramètres complets",copyParameters:"Copier les paramètres"},plan:{...e.components.plan,executionPlan:"Plan d'exécution",goal:"Objectif",steps:"Étapes",stepTitle:"Étape {{number}}",reason:"Raison",estimated:"Estimé",tools:"Outils",prerequisites:"Prérequis",potentialRisks:"Risques potentiels ({{count}})",totalEstimatedTime:"Temps total estimé",feedbackPlaceholder:"Indiquez à l'agent ce que vous souhaitez ajuster...",sendFeedback:"Envoyer un retour",refinePlan:"Affiner le plan",executePlan:"Exécuter le plan"},question:{...e.components.question,agentQuestion:"Question de l'agent",context:"Contexte",chooseOption:"Choisir une option",recommended:"Recommandé",customAnswerHint:"Aucune option adaptée ? Saisissez votre propre réponse.",customAnswerPlaceholder:"Saisissez votre réponse personnalisée...",submitAnswer:"Soumettre la réponse"},questionDialog:{...e.components.questionDialog,selectOptionWarning:"Veuillez sélectionner une option avant de soumettre.",responseSubmitted:"Réponse soumise",responseSubmittedContinue:"Réponse soumise, l'IA va continuer le traitement",submitFailed:"Échec de soumission de la réponse",noModelConfigured:"Aucun modèle configuré",customAnswerTip:"Réponse personnalisée",otherTypeBelow:"Autre (saisir ci-dessous)",confirm:"Confirmer"},skillManager:{...e.components.skillManager,title:"Compétences",refresh:"Actualiser",skillsRefreshed:"Compétences actualisées",lastUpdated:"Dernière mise à jour : {{value}}",justNow:"à l'instant",secondsAgo:"il y a {{count}} s",minutesAgo:"il y a {{count}} min",searchPlaceholder:"Rechercher des compétences",readOnlyHint:"Mode lecture seule : les compétences ne peuvent pas être modifiées.",noSkillsFound:"Aucune compétence trouvée",noMatch:"Aucune compétence ne correspond à la recherche",loadFailed:"Échec du chargement des compétences",getFailed:"Échec de récupération de la compétence"},skillSelector:{...e.components.skillSelector,placeholder:"Sélectionner des compétences"},imageGrid:{...e.components.imageGrid,preview:"Aperçu",ocr:"OCR"},todoList:{...e.components.todoList,title:"Liste des tâches",evaluating:"Évaluation en cours",pin:"Épingler",unpin:"Désépingler",llmEvaluation:"Évaluation LLM",tools:"outils",dependsOn:"Dépend de : {{deps}}",dependencies:"dépendances",status:{...e.components.todoList.status,pending:"En attente",inProgress:"En cours",completed:"Terminée",blocked:"Bloquée",skipped:"Ignorée",failed:"Échouée"},listStatus:{active:"Active",completed:"Terminée",abandoned:"Abandonnée"},percentComplete:"{{percent}} % terminé",progressLabel:"{{completed}} / {{total}} tâches terminées",currentLabel:"En cours : {{description}}"},tokenUsage:{...e.components.tokenUsage,title:"Utilisation des tokens",summary:"Résumé",system:"Système",messages:"Messages",tokens:"tokens",usedPercent:"{{value}} % utilisés"},approval:{...e.components.approval,workflow:"Workflow",executionRequest:"Demande d'exécution",aiWantsExecute:"L'IA souhaite exécuter l'action suivante"},toolSession:{...e.components.toolSession,title:"Session d'outils",running:"En cours",done:"Terminé",error:"Erreur",completedOnly:"{{completed}} terminé(s)",completedWithErrors:"{{completed}} terminé(s) (avec erreurs)",completedProgress:"{{completed}} / {{total}} terminés",noPersistedMessage:"Aucune sortie persistée",deleteMessage:"Supprimer la session d'outils"},mermaid:{...e.components.mermaid,loadingDiagram:"Chargement du diagramme...",diagramError:"Erreur de diagramme Mermaid",errorTitlePrefix:"Erreur",checkConsoleHint:"Vérifiez la syntaxe Mermaid ou ouvrez la console pour les détails.",fixMermaid:"Corriger Mermaid",renderingDiagram:"Rendu du diagramme...",exportSvg:"Exporter en SVG",exportFailed:"Échec de l'export du diagramme"}}}},Ce=e=>{const t=Se(e);return{...t,layout:{...e.layout,showSidebar:"साइडबार दिखाएँ"},common:{...e.common,workspace:"वर्कस्पेस",server:"सर्वर:",category:"श्रेणी:",parameters:"पैरामीटर्स",approve:"स्वीकृत करें",reject:"अस्वीकृत करें"},chat:{...t.chat,sidebar:{...t.chat.sidebar,createFailedTitle:"सेशन बनाने में विफल",createFailedUnknown:"अज्ञात त्रुटि",delete:{title:"सेशन हटाएँ",confirm:"क्या आप वाकई इस सेशन को हटाना चाहते हैं?"},deleteByDate:{title:"{{date}} के सेशन हटाएँ",confirm:"क्या आप {{date}} के {{count}} सेशन हटाना चाहते हैं?"},newSessionWithPrompt:"{{prompt}} के साथ नया सेशन"},workspace:{...e.chat.workspace,modalTitle:"वर्कस्पेस पथ सेट करें",invalidTitle:"अमान्य वर्कस्पेस पथ",issuesDetected:"वर्कस्पेस पथ में संभावित समस्याएँ मिलीं:",confirmSaveInvalid:"क्या आप फिर भी यह पथ सहेजना चाहते हैं?",errorEnterPath:"कृपया वर्कस्पेस पथ दर्ज करें",errorSaveFailed:"वर्कस्पेस पथ सहेजने में विफल",label:"वर्कस्पेस",browseFolder:"फ़ोल्डर ब्राउज़ करें",descriptionTitle:"वर्कस्पेस पथ विवरण",checkTitle:"वर्कस्पेस पथ जाँच",checkDescription:"वर्कस्पेस पथ सत्यापन विफल।",recentTitle:"हाल के वर्कस्पेस",suggestedTitle:"सुझाए गए वर्कस्पेस",noRecentWorkspaces:"कोई हाल का वर्कस्पेस नहीं",noSuggestions:"कोई सुझाव नहीं",defaultWorkspaceName:"वर्कस्पेस",validWorkspace:"वैध वर्कस्पेस",fileCount:"{{count}} फ़ाइलें"},input:{...e.chat.input,placeholder:"संदेश भेजें...",placeholderWithReference:"संदेश भेजें (संदर्भ सहित)",placeholderWithWorkflows:"संदेश भेजें... (वर्कफ़्लो के लिए '/' टाइप करें)",toolCallsOnly:"केवल टूल कॉल (अनुमत टूल: {{tools}})",autoPrefixMode:"ऑटो-प्रिफिक्स मोड: {{prefix}} (टूल चुनने के लिए '/' टाइप करें)",toolSpecificMode:"टूल-विशिष्ट मोड (अनुमत टूल: {{tools}})",processingFiles:"फ़ाइलें प्रोसेस की जा रही हैं…",addAttachments:"संलग्नक जोड़ें",referenceWorkspaceFiles:"वर्कस्पेस फ़ाइलों का संदर्भ दें",imageCountSingular:"{{count}} छवि",imageCountPlural:"{{count}} छवियाँ",moreImages:"+{{count}} और",clearAllImages:"सभी छवियाँ साफ़ करें",reasoningTitle:"रीज़निंग प्रयास: {{label}}",reasoning:{...e.chat.input.reasoning,low:"कम",medium:"मध्यम",high:"उच्च",xhigh:"बहुत उच्च",max:"अधिकतम"},strictToolOnlyMode:"सख्त केवल-टूल मोड",toolSpecificModeLabel:"टूल-विशिष्ट मोड",allowedTools:"अनुमत टूल:",autoPrefixLabel:"ऑटो प्रिफिक्स: {{prefix}}",mustStartWithPrefix:'संदेश "{{prefix}}" से शुरू होना चाहिए'},prompt:{...e.chat.prompt,selectorTitle:"सिस्टम प्रॉम्प्ट चुनें",createButton:"नया सेशन बनाएँ",helperText:"AI के लिए आधार सिस्टम प्रॉम्प्ट चुनें। आप सिस्टम सेटिंग्स में प्रॉम्प्ट जोड़ या संपादित कर सकते हैं।",emptyDescription:"कोई सिस्टम प्रॉम्प्ट नहीं मिला। सिस्टम सेटिंग्स में एक जोड़ें।",newSessionSelectorTitle:"नए सेशन के लिए सिस्टम प्रॉम्प्ट चुनें",defaultDescription:"डिफ़ॉल्ट सिस्टम प्रॉम्प्ट।",loadPresetsFailed:"प्रिसेट लोड करने में विफल",loadCurrentInfoFailed:"वर्तमान जानकारी लोड करने में विफल"},commandSelector:{...e.chat.commandSelector,loading:"कमांड लोड हो रहे हैं...",emptyWithSearch:'"{{search}}" से मेल खाने वाली कोई कमांड नहीं मिली',empty:"कोई कमांड उपलब्ध नहीं है।",navigationHint:"नेविगेशन: ऊपर/नीचे या Ctrl+P/N | चयन: Enter | पूर्ण करें: Space/Tab | रद्द: Esc",types:{...e.chat.commandSelector.types,workflow:"वर्कफ़्लो",skill:"स्किल",mcp:"MCP"}},model:{...e.chat.model,selectModel:"मॉडल चुनें",noModelSelected:"कोई मॉडल चयनित नहीं",selectModelHint:"चैट शुरू करने के लिए एक मॉडल चुनें।",providerNotConfigured:"प्रोवाइडर कॉन्फ़िगर नहीं है",configureProviderHint:"मॉडल चुनने से पहले सेटिंग्स में प्रोवाइडर कॉन्फ़िगर करें।",configureProvider:"प्रोवाइडर कॉन्फ़िगर करें",openSettings:"सेटिंग्स खोलें",noModelsAvailable:"कोई मॉडल उपलब्ध नहीं",selectModelBeforeSend:"भेजने से पहले मॉडल चुनें।",selectModelBeforeRetry:"पुनः प्रयास से पहले मॉडल चुनें।"},streaming:{...e.chat.streaming,assistant:"Bodhi",requestCancelled:"अनुरोध रद्द किया गया",sendFailed:"संदेश भेजने में विफल",retryFailed:"पुनः प्रयास विफल",modelConfigNotLoaded:"मॉडल कॉन्फ़िगरेशन लोड नहीं हुआ",agentUnavailable:"एजेंट उपलब्ध नहीं",noActiveChatTitle:"कोई सक्रिय चैट नहीं",noActiveChatSendContent:"संदेश भेजने से पहले चैट बनाएँ या चुनें।",noActiveChatRetryContent:"पुनः प्रयास से पहले चैट बनाएँ या चुनें।",noChatIdTitle:"चैट ID अनुपस्थित",noChatIdSendContent:"वर्तमान चैट में ID नहीं है। नया चैट बनाकर पुनः प्रयास करें।",noChatIdRetryContent:"वर्तमान चैट में ID नहीं है। नया चैट बनाकर पुनः प्रयास करें।"},selectionToolbar:{...e.chat.selectionToolbar,selectMessages:"संदेश चुनें",selectedCount:"{{selected}} चयनित (कुल {{total}})",selectAll:"सभी चुनें",clear:"साफ़ करें",exportMarkdown:"Markdown निर्यात करें",exportPdf:"PDF निर्यात करें",done:"पूर्ण"},subAgents:{...e.chat.subAgents,title:"उप-एजेंट",expand:"विस्तार करें",collapse:"संक्षिप्त करें",continue:"यहीं जारी रखें",open:"खोलें",retry:"पुनः प्रयास करें",hiddenHint:"{{count}} उप-एजेंट छिपे हुए"},chatItem:{...e.chat.chatItem,edit:"संपादित करें",childTag:"चाइल्ड"},systemPromptSelector:{...e.chat.systemPromptSelector,defaultTag:"डिफ़ॉल्ट",hide:"छिपाएँ",preview:"पूर्वावलोकन",copy:"कॉपी करें",lines:"{{count}} पंक्तियाँ",words:"{{count}} शब्द",chars:"{{count}} अक्षर",noContent:"कोई सामग्री नहीं"},title:{...e.chat.title,updated:"चैट शीर्षक अपडेट हुआ",generateFailed:"चैट शीर्षक बनाने में विफल"},respond:{...e.chat.respond,customAnswerPlaceholder:"अपना कस्टम उत्तर लिखें..."},multiPane:{...e.chat.multiPane,splitHorizontal:"क्षैतिज विभाजित करें",splitVertical:"ऊर्ध्वाधर विभाजित करें",closePane:"पैन बंद करें",selectSessionHint:"संदेश देखने के लिए एक सेशन चुनें",hoverToSplitHint:"चैट तुलना के लिए पैन पर होवर करके विभाजित करें",selectMessagesToExport:"निर्यात के लिए संदेश चुनें"},messageCard:{...e.chat.messageCard,authRequired:"प्रमाणीकरण आवश्यक",goToSettings:"सेटिंग्स पर जाएँ",assistantThinking:"सहायक सोच रहा है...",reasoning:"रीज़निंग",selected:"चयनित",selectedTool:"चयनित टूल"},messageActions:{...e.chat.messageActions,copy:"कॉपी करें",exportMarkdown:"Markdown के रूप में निर्यात करें",exportPdf:"PDF के रूप में निर्यात करें",restoreChat:"केवल चैट पुनर्स्थापित करें",restoreFilesAndChat:"फ़ाइलें और चैट पुनर्स्थापित करें",deleteMessage:"संदेश हटाएँ",savedFile:"{{filename}} में सहेजा गया",nothingToExport:"निर्यात करने के लिए कुछ नहीं",exportFailed:"निर्यात विफल",cannotRestore:"यह संदेश पुनर्स्थापित नहीं किया जा सकता",restorePartial:"चैट पुनर्स्थापित हुई। {{count}} फ़ाइल(ें) पुनर्स्थापित नहीं हो सकीं।",restoreFilesSuccess:"फ़ाइलें और चैट पुनर्स्थापित ({{count}} संदेश हटाए गए)।",restoreSuccess:"चैट पुनर्स्थापित ({{count}} संदेश हटाए गए)।",restoreFailed:"चैट पुनर्स्थापित करने में विफल",pdfUnavailable:"इस वातावरण में PDF निर्यात उपलब्ध नहीं है",exportingPdf:"PDF निर्यात हो रहा है..."},session:{...e.chat.session,defaultTitle:"नया सत्र"}},settings:{...t.settings,page:{...t.settings.page,tabs:{...t.settings.page.tabs,envVars:"पर्यावरण वेरिएबल्स"}},configTab:{...t.settings.configTab,loadBambooConfigFailed:"Bamboo कॉन्फ़िग लोड करने में विफल",bambooConfigSaved:"Bamboo कॉन्फ़िग सहेजा गया",saveBambooConfigFailed:"Bamboo कॉन्फ़िग सहेजने में विफल"},keywordMaskingTab:{...e.settings.keywordMaskingTab,title:"कीवर्ड मास्किंग",addKeyword:"कीवर्ड जोड़ें",description:"Copilot API को भेजने से पहले मास्क किए जाने वाले कीवर्ड कॉन्फ़िगर करें। शाब्दिक स्ट्रिंग के लिए सटीक मिलान या पैटर्न के लिए regex उपयोग करें। सभी मिलान [MASKED] से बदले जाएंगे।",empty:"कोई कीवर्ड मास्किंग नियम कॉन्फ़िगर नहीं है",cancel:"रद्द करें",patternPlaceholder:"मिलान का पैटर्न दर्ज करें",examples:"उदाहरण",exactMatch:"सटीक मिलान",regexPattern:"Regex पैटर्न",enabled:"सक्षम",disabled:"अक्षम",sampleText:"नमूना टेक्स्ट",sampleTextPlaceholder:"नमूना टेक्स्ट दर्ज करें",maskedPreview:"मास्क किया गया पूर्वावलोकन",emptyPattern:"(खाली)",loadFailed:"कीवर्ड मास्किंग कॉन्फ़िगरेशन लोड करने में विफल",saveFailed:"कॉन्फ़िगरेशन सहेजने में विफल",saveSuccess:"कीवर्ड मास्किंग कॉन्फ़िगरेशन सहेजा गया",validationFailedPrefix:"सत्यापन विफल",patternRequired:"पैटर्न खाली नहीं हो सकता",invalidRegexPattern:"अमान्य regex पैटर्न",example:{...e.settings.keywordMaskingTab.example,literalToken:"शाब्दिक टोकन मास्क करें",githubTokens:"GitHub टोकन मास्क करें",awsKeys:"AWS key मास्क करें",emails:"ईमेल पते मास्क करें"}}},components:{...e.components,workflowResult:{...e.components.workflowResult,userWorkflow:"उपयोगकर्ता वर्कफ़्लो",waitingForResult:"वर्कफ़्लो परिणाम की प्रतीक्षा...",executionFailed:"वर्कफ़्लो निष्पादन विफल",retryWorkflow:"वर्कफ़्लो पुनः चलाएँ",copyParameters:"पैरामीटर्स कॉपी करें",copyResult:"परिणाम कॉपी करें",expandResult:"परिणाम विस्तार करें",collapseResult:"परिणाम संक्षिप्त करें"},toolResult:{...e.components.toolResult,waiting:"प्रतीक्षा में",waitingForResult:"परिणाम की प्रतीक्षा...",executionFailed:"टूल निष्पादन विफल",copyResult:"परिणाम कॉपी करें",checkpoint:"चेकपॉइंट",checkpointNone:"कोई नहीं",diffTruncated:"डिफ़ बहुत लंबा है और काट दिया गया है"},toolCall:{...e.components.toolCall,liveOutput:"लाइव आउटपुट",keyParameters:"मुख्य पैरामीटर्स",fullParameters:"पूर्ण पैरामीटर्स",copyParameters:"पैरामीटर्स कॉपी करें"},plan:{...e.components.plan,executionPlan:"निष्पादन योजना",goal:"लक्ष्य",steps:"चरण",stepTitle:"चरण {{number}}",reason:"कारण",estimated:"अनुमानित",tools:"टूल्स",prerequisites:"पूर्वापेक्षाएँ",potentialRisks:"संभावित जोखिम ({{count}})",totalEstimatedTime:"कुल अनुमानित समय",feedbackPlaceholder:"एजेंट को बताएँ क्या समायोजित करना है...",sendFeedback:"फ़ीडबैक भेजें",refinePlan:"योजना परिष्कृत करें",executePlan:"योजना निष्पादित करें"},question:{...e.components.question,agentQuestion:"एजेंट प्रश्न",context:"संदर्भ",chooseOption:"एक विकल्प चुनें",recommended:"अनुशंसित",customAnswerHint:"कोई उपयुक्त विकल्प नहीं? अपना उत्तर लिखें।",customAnswerPlaceholder:"अपना कस्टम उत्तर लिखें...",submitAnswer:"उत्तर सबमिट करें"},questionDialog:{...e.components.questionDialog,selectOptionWarning:"सबमिट करने से पहले एक विकल्प चुनें।",responseSubmitted:"उत्तर सबमिट किया गया",responseSubmittedContinue:"उत्तर सबमिट किया गया, AI आगे प्रोसेस करेगा",submitFailed:"उत्तर सबमिट करने में विफल",noModelConfigured:"कोई मॉडल कॉन्फ़िगर नहीं है",customAnswerTip:"कस्टम उत्तर",otherTypeBelow:"अन्य (नीचे लिखें)",confirm:"पुष्टि करें"},skillManager:{...e.components.skillManager,title:"स्किल्स",refresh:"रीफ्रेश करें",skillsRefreshed:"स्किल्स रीफ्रेश हुईं",lastUpdated:"अंतिम अपडेट: {{value}}",justNow:"अभी-अभी",secondsAgo:"{{count}} सेकंड पहले",minutesAgo:"{{count}} मिनट पहले",searchPlaceholder:"स्किल्स खोजें",readOnlyHint:"रीड-ओनली मोड: स्किल्स संपादित नहीं की जा सकतीं।",noSkillsFound:"कोई स्किल नहीं मिली",noMatch:"खोज से मेल खाती कोई स्किल नहीं मिली",loadFailed:"स्किल्स लोड करने में विफल",getFailed:"स्किल प्राप्त करने में विफल"},skillSelector:{...e.components.skillSelector,placeholder:"स्किल्स चुनें"},imageGrid:{...e.components.imageGrid,preview:"पूर्वावलोकन",ocr:"OCR"},todoList:{...e.components.todoList,title:"कार्य सूची",evaluating:"मूल्यांकन जारी",pin:"पिन करें",unpin:"अनपिन करें",llmEvaluation:"LLM मूल्यांकन",tools:"टूल्स",dependsOn:"निर्भर करता है: {{deps}}",dependencies:"निर्भरताएँ",status:{...e.components.todoList.status,pending:"लंबित",inProgress:"प्रगति में",completed:"पूर्ण",blocked:"अवरोधित"}},tokenUsage:{...e.components.tokenUsage,title:"टोकन उपयोग",summary:"सारांश",system:"सिस्टम",messages:"संदेश",tokens:"टोकन",usedPercent:"{{value}}% उपयोग"},approval:{...e.components.approval,workflow:"वर्कफ़्लो",executionRequest:"निष्पादन अनुरोध",aiWantsExecute:"AI निम्नलिखित क्रिया निष्पादित करना चाहता है"},toolSession:{...e.components.toolSession,title:"टूल सेशन",running:"चल रहा है",done:"पूर्ण",error:"त्रुटि",completedOnly:"{{completed}} पूर्ण",completedWithErrors:"{{completed}} पूर्ण (त्रुटियों सहित)",completedProgress:"{{completed}} / {{total}} पूर्ण",noPersistedMessage:"कोई स्थायी आउटपुट नहीं",deleteMessage:"टूल सेशन हटाएँ"},mermaid:{...e.components.mermaid,loadingDiagram:"डायग्राम लोड हो रहा है...",diagramError:"Mermaid डायग्राम त्रुटि",errorTitlePrefix:"त्रुटि",checkConsoleHint:"Mermaid सिंटैक्स जाँचें या विवरण के लिए कंसोल खोलें।",fixMermaid:"Mermaid ठीक करें",renderingDiagram:"डायग्राम रेंडर हो रहा है...",exportSvg:"SVG निर्यात करें",exportFailed:"डायग्राम निर्यात विफल"}}}},Pe=e=>{var t,s,i,o,a,n,u,c,f,P,T,M,w,A,R,F,x,E,D,L,I,q,O;return{...e,common:{...e.common,saveAnyway:"仍然儲存",parentDirectory:"上層目錄",currentPath:"目前路徑:",cancel:"取消",ok:"確定",apply:"套用",save:"儲存",delete:"刪除",yes:"是",no:"否",home:"首頁",download:"下載",directory:"目錄",file:"檔案"},app:{...e.app,loading:"載入中...",errorBoundary:{title:"出了點問題",description:"此區域發生了意外錯誤。您可以重試,或者如果問題持續存在,請重新載入頁面。",tryAgain:"重試",showDetails:"顯示詳情",hideDetails:"隱藏詳情"},passwordGate:{...e.app.passwordGate,title:"請輸入訪問密碼",description:"當前訪問需要先通過密碼驗證,驗證成功後才會進入應用。",passwordLabel:"訪問密碼",passwordPlaceholder:"請輸入訪問密碼",submit:"驗證並進入",validation:{required:"請輸入訪問密碼",verifyFailed:"密碼驗證失敗"}},notifications:{...e.app.notifications,toolApproval:{title:"需要批准:{{tool}}",body:"工具 {{tool}} 需要您的批准才能執行",unknownTool:"未知工具"},contextPressure:{title:"上下文視窗即將耗盡"},backgroundTask:{completedTitle:"後台任務已完成",completedBody:"「{{title}}」已完成",completedFallback:"後台任務已完成"},clarification:{title:"Bodhi AI 需要您的回覆",fallbackBody:"代理需要您回答一個問題"},conversationSummarized:"對話已摘要:壓縮了 {{messages}} 條訊息,節省了 {{tokens}} 個 token",allTasksCompleted:"所有任務已完成!總輪次:{{rounds}},工具呼叫:{{toolCalls}}",evaluatingTasks:"正在評估 {{count}} 個任務...",evaluationCompleteUpdated:"評估完成:已更新 {{count}} 個任務。",evaluationCompleteNoUpdates:"評估完成:無需更新"},defaultSessionTitle:"新會話"},commandPalette:{...e.commandPalette,searchPlaceholder:"搜尋會話、設定和快捷操作",navigationHint:"使用 ↑↓ 導航,Enter 開啟,Esc 關閉。",empty:"沒有符合的指令",groups:{quickActions:"快捷操作",settings:"系統設定"},badges:{quickAction:"操作",pinned:"置頂",running:"執行中",child:"子會話",childSession:"子會話",rootSession:"會話"},actions:{newSession:"建立新會話",openProviderSettings:"開啟 Provider 設定",openMcpSettings:"開啟 MCP 設定",openWorkflowSettings:"開啟工作流程設定",openSessionsSettings:"開啟會話監控",openSchedulesSettings:"開啟排程"},errors:{actionFailed:"指令執行失敗"}},setup:{welcome:{heading:"歡迎使用 Bodhi",description:"Bodhi 是您的 AI 驅動開發助手。配置一個 AI 供應商即可開始,或直接進入應用。",providerHint:"要開始對話,您需要配置一個 AI 供應商(如 OpenAI、Anthropic)並提供 API 金鑰。",proxyHint:"在公司代理後面?您可以稍後在系統設定 > 網路中配置代理。"},button:{getStarted:"開始使用",configureProvider:"配置 Provider"},complete:{title:"一切就緒!",restartMessage:"正在重新載入應用..."},error:{completeFailed:"完成設定失敗,請重試。"}},onboarding:{welcome:{title:"歡迎使用 Bodhi!",description:"Bodhi 是您的 AI 驅動開發助手。讓我們快速了解一下介面。"},newSession:{title:"新建會話",description:"點擊這裡開始一個與 AI 助手的新對話。"},taskTemplates:{title:"任務模板",description:"從預置模板中選擇,如程式碼審查、Bug 調查、重構等,快速啟動工作。"},modelPicker:{title:"模型選擇",description:"隨時在此切換 AI 模型和供應商。"},sidebar:{title:"會話側邊欄",description:"在此管理您的會話——搜尋、過濾、置頂和切換對話。"},settings:{title:"設定",description:"配置 AI 供應商、代理設定、模型映射、MCP 伺服器等。"}},chat:{...e.chat,sidebar:{...e.chat.sidebar,newSession:"新建會話",searchPlaceholder:"搜尋會話",empty:{noSessions:"暫無會話",hint:"點擊「新建會話」開始"},dateGroups:{today:"今天",yesterday:"昨天",thisWeek:"本週",thisMonth:"本月",pinned:"置頂",scheduled:"計劃任務"},actions:{collapseChildren:"摺疊子會話",expandChildren:"展開子會話"}},input:{...e.chat.input,placeholder:"傳送訊息...",placeholderWithReference:"傳送訊息(包含引用)",placeholderWithWorkflows:"傳送訊息...(輸入 '/' 使用工作流程)",addAttachments:"新增附件",processingFiles:"正在處理檔案…",imageCountSingular:"{{count}} 張圖片",imageCountPlural:"{{count}} 張圖片",clearAllImages:"清除所有圖片",dropImagesHere:"將圖片拖放到此處",referencing:"引用中",reasoning:{...(t=e.chat.input)==null?void 0:t.reasoning,max:"最大"}},actions:{...e.chat.actions,regenerate:"重新生成回應",retryFailed:"重試失敗的請求",cancelRequest:"取消請求",sendMessage:"傳送訊息",copyMessage:"複製訊息",referenceMessage:"引用訊息",generateTitle:"生成 AI 標題",pin:"置頂",unpin:"取消置頂"},workspace:{...e.chat.workspace,placeholder:"例如 /Users/alice/workspace/myproject"},folderBrowser:{...e.chat.folderBrowser,title:"選擇工作區資料夾",selectCurrent:"選擇目前資料夾",emptyFolder:"此資料夾為空"},streaming:{...e.chat.streaming,assistant:"助手"},model:{selectModel:"選擇模型",noModelSelected:"未選擇模型",selectModelHint:"選擇一個模型以開始對話。",providerNotConfigured:"供應商未配置",configureProviderHint:"請先在設定中配置供應商,再選擇模型。",configureProvider:"配置供應商",openSettings:"開啟設定",noModelsAvailable:"無可用模型",selectModelBeforeSend:"請在傳送前選擇模型。",selectModelBeforeRetry:"請在重試前選擇模型。"},scroll:{jumpToTop:"跳到頂部",backToLatest:"回到最新",newMessages:"新訊息",newMessagesWithCount_one:"{{count}} 條新訊息",newMessagesWithCount_other:"{{count}} 條新訊息"},selectionToolbar:{selectMessages:"選擇訊息",selectedCount:"已選 {{selected}} 條(共 {{total}} 條)",selectAll:"全選",clear:"清除",exportMarkdown:"匯出 Markdown",exportPdf:"匯出 PDF",done:"完成"},subAgents:{title:"子代理",expand:"展開",collapse:"摺疊",continue:"在此繼續",open:"開啟",retry:"重試",hiddenHint:"{{count}} 個子代理已隱藏"},messageCard:{...e.chat.messageCard,assistantCompactingContext:"助手正在壓縮上下文...",assistantCompactingContextDegraded:"助手正在壓縮上下文(降級模式)...",assistantCompactingContextFailed:"助手壓縮上下文失敗,繼續中...",assistantUpdatingMemory:"助手正在更新記憶...",assistantRunningTool:"助手正在執行 {{tool}}..."},messageActions:{...e.chat.messageActions,restoreChat:"僅恢復聊天",restoreFilesAndChat:"恢復檔案和聊天",deleteFailed:"刪除訊息失敗",savedFile:"已儲存至 {{filename}}",cannotRestore:"無法恢復此訊息",restorePartial:"聊天已恢復。{{count}} 個檔案無法恢復。",restoreFilesSuccess:"檔案和聊天已恢復(已刪除 {{count}} 則訊息)。",restoreSuccess:"聊天已恢復(已刪除 {{count}} 則訊息)。",pdfUnavailable:"此環境不支援 PDF 匯出",exportingPdf:"正在匯出 PDF..."},prompt:{...e.chat.prompt,systemCard:{title:"系統提示詞",viewEnhanced:"查看增強版",viewBase:"查看基礎版",copy:"複製",snapshotTitle:"提示快照",sections:{base:"基礎提示",enhancement:"增強層",workspace:"工作區",instruction:"指令層",env:"環境變數",skills:"技能",toolGuide:"工具指引",dream:"Dream Notebook",sessionMemory:"會話記憶",externalMemory:"記憶層",taskList:"任務列表",effective:"最終提示詞"}}},compression:{tag:"已壓縮上下文",timelineDetail:"已歸檔 {{count}} 條訊息",timelineAria:"{{time}},{{detail}}",tooltip:"最近一次壓縮:{{time}},已歸檔 {{count}} 條訊息",archivedShort:"已歸檔 {{count}} 條"},emptyLauncher:{title:"從任務開始",subtitle:"在目前分欄中建立一個聚焦會話,並先預填第一條訊息,再由你決定是否發送。",hint:"不會自動發送,你可以先編輯提示詞。",actions:{blank:{title:"空白會話",description:"使用預設助手從零開始,並保留空白輸入框。",sessionTitle:"新建會話"},codeReview:{title:"程式碼審查",description:"開啟一個面向審查的會話,並預填可編輯的審查說明。",sessionTitle:"程式碼審查"},tokenUsage:{title:"Token 使用調查",description:"診斷上下文膨脹、截斷風險和 token 預算壓力。",sessionTitle:"Token 使用調查"}},errors:{createFailed:"建立會話失敗"}},fileReference:{title:"@ 檔案引用",setWorkspace:"設定工作區",noMatches:"未找到符合的檔案",emptyDirectory:"目錄為空"},commandSelector:{...e.chat.commandSelector,loading:"正在載入指令...",emptyWithSearch:"沒有符合「{{search}}」的指令",empty:"沒有可用的指令。",navigationHint:"導航:↑↓ 或 Ctrl+P/N | 選擇:Enter | 完成:Space/Tab | 取消:Esc",types:{workflow:"工作流程",skill:"技能",mcp:"MCP"}},systemPromptSelector:{defaultTag:"預設",hide:"隱藏",preview:"預覽",copy:"複製",lines:"{{count}} 行",words:"{{count}} 詞",chars:"{{count}} 字元",noContent:"無內容"},chatItem:{edit:"編輯",childTag:"子"},title:{updated:"會話標題已更新",generateFailed:"生成會話標題失敗"},respond:{customAnswerPlaceholder:"輸入自訂回答..."},multiPane:{splitHorizontal:"水平分割",splitVertical:"垂直分割",closePane:"關閉面板",selectSessionHint:"選擇會話以查看訊息",hoverToSplitHint:"將游標移至面板上方以分割並比較會話",selectMessagesToExport:"選擇要匯出的訊息"}},settings:{...e.settings,page:{...e.settings.page,title:"系統設定",tabs:{...e.settings.page.tabs,config:"設定",prompts:"提示詞",mermaid:"Mermaid",mcp:"MCP",modelLimits:"模型限制",metrics:"指標",sessions:"會話",schedules:"排程",app:"應用",provider:"供應商",hooks:"Hooks",masking:"脫敏",envVars:"環境變數",workflows:"工作流程",skills:"技能"},groups:{...e.settings.page.groups,ai:"AI",toolsAndExtensions:"工具與擴展",securityAndPrivacy:"安全",monitoring:"監控",system:"系統"}},configTab:{...e.settings.configTab,loadConfigFailed:"載入配置失敗",invalidConfig:"配置無效",saveConfigSuccess:"配置儲存成功",saveConfigFailed:"儲存配置失敗",backendSaved:"後端位址已儲存",backendResetDefault:"後端位址已重設為預設值",providerMovedTitle:"Provider 配置已遷移",providerMovedDescription:"GitHub Copilot 和其他 Provider 配置已遷移到 Provider Settings 分頁,請前往該頁面設定。",backendApiBaseUrlTitle:"後端 API 基礎位址",backendApiHint:"必須包含 /v1 路徑",resetToDefault:"恢復預設",save:"儲存",language:"語言",languageEnglish:"English",languageChinese:"簡體中文",languageTraditionalChinese:"繁體中文",languageFrench:"Français",languageJapanese:"日本語",languageHindi:"印地語",backendUrlEmpty:"後端位址不能為空",backendUrlInvalidProtocol:"後端位址必須以 http:// 或 https:// 開頭",backendUrlInvalidUrl:"後端位址不是有效的 URL",backendUrlMustEndWithV1:'後端位址必須以 "/v1" 結尾',accessPassword:{validation:{currentPasswordRequired:"請輸入目前密碼",newPasswordRequired:"請輸入新密碼",confirmPasswordRequired:"請再次輸入新密碼",minLength:"密碼至少需要 4 個字元",passwordMismatch:"兩次輸入的密碼不一致"}}},appTab:{...e.settings.appTab,language:"語言",languageEnglish:"English",languageChinese:"簡體中文",languageTraditionalChinese:"繁體中文",languageFrench:"Français",languageJapanese:"日本語",languageHindi:"印地語",darkMode:"深色模式",dangerZone:"危險操作",dangerDescription:"以下操作不可撤銷,所有資料將被永久刪除。",deleteAllTitle:"刪除所有會話",deleteAllDescription:"確認刪除?將刪除所有會話(置頂除外)。",deleteAllButton:"刪除所有會話",deleteEmptyTitle:"刪除空白會話",deleteEmptyDescription:"確認刪除?將刪除所有空白會話(置頂除外)。",deleteEmptyButton:"刪除空白會話",clearLocalStorageTitle:"清除本地儲存",clearLocalStorageDescription:"確認清除?這將刪除所有本地儲存資料並重置應用。",clearLocalStorageButton:"清除本地儲存",confirmDeleteAll:"確認,刪除全部",confirmDeleteEmpty:"確認,刪除空白",confirmClear:"確認,清除",resetApplicationTitle:"重置應用",resetApplicationIntro:"確認重置?這將執行以下操作:",resetStepDeleteAllSessions:"刪除所有會話(包括置頂)",resetStepClearStorage:"清除所有本地儲存資料",resetStepResetConfig:"將 config.json 重置為預設值",resetStepSetupFlow:"下次啟動時觸發初始設定流程",resetStepReload:"重新載入應用",resetConfirm:"確認,重置全部",resetButton:"重置應用(清空全部資料)"},schedulesTab:{...e.settings.schedulesTab,loadFailed:"載入排程失敗",loadSessionsFailed:"載入排程會話失敗",createFailed:"建立排程失敗",updateFailed:"更新排程失敗",deleteFailed:"刪除排程失敗",runNowFailed:"立即執行失敗",taskMessageRequired:"啟用自動執行時必須填寫任務訊息",created:"排程已建立",updated:"排程已更新",deleted:"排程已刪除",enqueuedRun:"已加入執行佇列",loading:"載入中...",yes:"是",no:"否",optional:"(可選)",defaultName:"我的排程",createTitle:"建立排程",listTitle:"排程列表",scheduleSessionsTitle:"排程會話",scheduleRunsTitle:"排程執行記錄",noSessionsYet:"暫無會話。",noRunsYet:"暫無執行記錄。",loadRunsFailed:"載入排程執行記錄失敗",editTitle:"編輯排程",nonIntervalReadOnly:"僅間隔觸發器支援快速間隔編輯。",columns:{...(s=e.settings.schedulesTab)==null?void 0:s.columns,name:"名稱",status:"狀態",activity:"活動",autoExecute:"自動執行",model:"模型",enabled:"啟用",intervalSeconds:"間隔(秒)",nextRun:"下次執行",lastRun:"最近執行",actions:"操作"},triggerTypes:{interval:"間隔",daily:"每天",weekly:"每週",monthly:"每月",cron:"Cron"},misfirePolicyOptions:{runOnce:"執行一次",skip:"跳過",catchUpAll:"補執行全部",catchUpWindow:"補執行視窗"},overlapPolicyOptions:{queueOne:"排隊一個",skip:"跳過重疊執行",allow:"允許重疊"},form:{...(i=e.settings.schedulesTab)==null?void 0:i.form,name:"名稱",triggerType:"觸發類型",intervalSeconds:"間隔秒數",dailyHour:"時",dailyMinute:"分",weeklyWeekdays:"工作日",monthlyDays:"月份天數",monthlyDaysPlaceholder:"例如 1, 15, 28",cronExpr:"Cron 表示式",cronExprPlaceholder:"例如 0 9 * * 1-5",timezone:"時區",timezonePlaceholder:"例如 Asia/Taipei",startAt:"開始時間",endAt:"結束時間",datetimePlaceholder:"RFC3339 格式,例如 2026-04-05T09:00:00Z",misfirePolicy:"錯過策略",overlapPolicy:"重疊策略",catchUpWindowMaxRuns:"補執行最大執行次數",catchUpWindowMaxLatenessSeconds:"補執行最大延遲(秒)",enabled:"啟用",taskMessage:"任務訊息",taskMessagePlaceholder:"(可選)要執行的任務",model:"模型",modelPlaceholder:"(可選)例如 gpt-4o-mini",modelRequiredIfAuto:"啟用自動執行時必填",autoExecute:"自動執行",systemPrompt:"系統提示詞",workspacePath:"工作區路徑",enhancePrompt:"增強提示"},validation:{...(o=e.settings.schedulesTab)==null?void 0:o.validation,nameRequired:"名稱不能為空",triggerRequired:"觸發設定不能為空",intervalRequired:"間隔不能為空",weekdaysRequired:"至少選擇一個工作日",monthDaysRequired:"至少選擇一個月份天數",invalidMonthDays:"月份天數必須是 1-31 之間的逗號分隔值",cronRequired:"Cron 表示式不能為空"},actions:{...(a=e.settings.schedulesTab)==null?void 0:a.actions,create:"建立",refresh:"重新整理",edit:"編輯",runNow:"立即執行",sessions:"會話",runs:"執行記錄",delete:"刪除",open:"開啟",save:"儲存"},runHistory:{columns:{status:"狀態",scheduledFor:"計劃時間",startedAt:"開始時間",completedAt:"完成時間",session:"會話",duration:"耗時",outcome:"結果"}}},sessionsTab:{...e.settings.sessionsTab,currentSessionTitle:"目前會話",clearMessages:"清除訊息",id:"ID",kind:"類型",clear:"清除"},metricsDashboard:{...e.settings.metricsDashboard,sessionsCount:"{{count}} 個會話",tokensAmount:"{{value}} Token",sessionsTabLabel:"會話 ({{count}})",refresh:"重新整理",sessionDetail:{...(n=e.settings.metricsDashboard)==null?void 0:n.sessionDetail,messages:"訊息",tokens:"Token"},granularity:{daily:"每日",weekly:"每週",monthly:"每月"},compactStats:{...(u=e.settings.metricsDashboard)==null?void 0:u.compactStats,combinedTokens:"合併 Token",chatTokens:"聊天 Token",forwardTokens:"Forward Token",avgTokensPerSession:"平均 Token/會話",estimatedTimeSaved:"預估節省時間",estimatedEfficiencyLift:"預估效率提升",estimatedSpeedMultiplier:"預估速度倍率",estimatedSavedWorkdays:"預估節省工作日",avgRoundsPerSession:"平均回合/會話",toolCallsPerSession:"工具呼叫/會話",activeSessionRate:"活躍會話率",avgTokensPerForward:"平均 Token/Forward",forwardErrorRate:"Forward 錯誤率",streamingRatio:"串流比率",p95ForwardLatency:"P95 Forward 延遲",modelCoverage:"模型覆蓋",endpointCoverage:"端點覆蓋"},derivedMetricsTitle:"衍生指標(摘要)",derivedMetricsSubtitle:"無需額外捲動即可查看更多維度"},charts:{...e.settings.charts,tokenUsageOverTime:"Token 使用趨勢",unifiedTokenUsageOverTime:"Token 使用趨勢(Chat + Forward)",noTokenUsage:"暫無 Token 使用資料",tokenUsageDescription:"按日期/週期展示 Prompt、Completion 與總 Tokens。",unifiedTokenUsageDescription:"按時間展示 Chat 與 Forward 的合併 Token 使用。",modelDistribution:"模型分布",noModelMetrics:"暫無模型指標資料",modelDistributionDescription:"按模型展示總 Token 消耗佔比。",endpointDistribution:"端點分布",noForwardMetrics:"目前範圍內暫無 Forward 指標資料。",total:"總計",prompt:"提示",completion:"補全",chat:"聊天",forward:"Forward"},providerTab:{...e.settings.providerTab,title:"LLM 供應商配置",description:"配置你偏好的 LLM 供應商。點擊「儲存並套用配置」後會儲存並生效。",currentProvider:"目前供應商",activeProvider:"目前啟用的 LLM 供應商",selectProviderRequired:"請選擇供應商",saveAndApply:"儲存並套用配置",loadConfigFailed:"載入供應商配置失敗",checkStatusFailed:"檢查狀態失敗",startCopilotAuthFailed:"啟動 Copilot 認證失敗",copilotAuthSuccess:"Copilot 認證成功!",providerReloaded:"供應商已使用新認證重新載入。",completeAuthFailed:"完成認證失敗,請重試。",userCodeCopied:"使用者代碼已複製到剪貼簿!",copyCodeFailedPrefix:"複製失敗,請手動複製:",logoutSuccess:"已登出 Copilot",logoutFailed:"登出 Copilot 失敗",unknownError:"未知錯誤",invalidConfig:"配置無效",invalidConfigPrefix:"配置無效",fetchModelsCopilotFailed:"取得模型失敗,請先完成 Copilot 認證後重試。",fetchModelsFailed:"取得模型失敗,請檢查 API Key 與 Base URL。",noModelsReturned:"未返回模型,請先完成 Copilot 認證後再取得。",foundModels:"已找到 {{count}} 個可用模型",fetchModelsErrorPrefix:"取得模型失敗",saveConfigSuccess:"配置儲存成功",saveConfigFailed:"儲存配置失敗",saveConfigErrorPrefix:"儲存配置失敗",applyConfigSuccess:"配置套用成功,新對話將使用最新配置。",applyConfigFailed:"套用配置失敗",applyConfigErrorPrefix:"套用配置失敗",modelUpdated:"模型更新成功",updateModelFailed:"更新模型失敗",updateModelErrorPrefix:"更新模型失敗",fetchingModels:"正在取得模型...",refreshModelsFrom:"從 {{source}} 重新整理可用模型",fetchModelsFrom:"從 {{source}} 取得可用模型",saveModelChangeFailed:"儲存模型變更失敗",fetchModelsFailedShort:"取得模型失敗",retry:"重試",openaiConfigTitle:"OpenAI 配置",openaiConfigDescription:"輸入 OpenAI API Key 以使用 GPT 模型。你也可以指定自訂 Base URL。",openaiApiKey:"OpenAI API Key",openaiApiKeyRequired:"請輸入 OpenAI API Key",baseUrlOptional:"Base URL(可選)",openaiBaseUrlHelp:"留空將使用預設 OpenAI 介面位址;如有需要請包含完整路徑(例如 /v1)。",defaultModel:"預設模型",fastModel:"快速模型(可選)",fastModelHelp:"用於標題生成、Mermaid 修復、摘要等輕量任務的低成本/快速模型。未設定時使用預設模型。",subAgentModel:"Sub Agent 模型(可選)",subAgentModelHelp:"新建 Sub Agent 時預設使用的模型。未設定時使用快速模型,再回退到預設模型。",visionModel:"視覺模型(可選)",visionModelHelp:"用於圖片理解的視覺模型。當 hooks.image_fallback.mode 設為 'vision' 時,此模型會將圖片描述為文字,讓純文字模型也能理解圖片內容。未設定時使用預設模型。",sameAsDefault:"與預設模型相同",selectModelRequired:"請選擇模型",selectModel:"選擇模型",responsesOnlyModelsOptional:"僅 Responses 模型(可選)",responsesOnlyHelp1:"部分模型僅支援 OpenAI Responses API(不支援 chat/completions)。可在此新增模型 ID 強制 Bamboo 使用",responsesOnlyHelp2:"支援精確匹配(如 gpt-5.3-codex)和後綴 * 的字首匹配(如 gpt-5*)。",anthropicConfigTitle:"Anthropic 配置",anthropicConfigDescription:"輸入 Anthropic API Key 以使用 Claude 模型。",anthropicApiKey:"Anthropic API Key",anthropicApiKeyRequired:"請輸入 Anthropic API Key",anthropicBaseUrlHelp:"留空將使用預設 Anthropic 介面位址;如有需要請包含完整路徑(例如 /v1)。",maxTokensOptional:"最大 Tokens(可選)",maxTokensHelp:"生成時允許的最大 token 數",geminiConfigTitle:"Google Gemini 配置",geminiConfigDescription:"輸入 Google AI API Key 以使用 Gemini 模型。",geminiApiKey:"Gemini API Key",geminiApiKeyRequired:"請輸入 Gemini API Key",geminiBaseUrlHelp:"留空將使用預設 Google AI 介面位址;必要時可填寫完整路徑。",copilotConfigTitle:"GitHub Copilot 配置",copilotConfigDescription:"GitHub Copilot 使用 OAuth 認證,無需 API Key。請確保帳號有有效訂閱。",authStatusTitle:"認證狀態",authenticated:"已認證",notAuthenticated:"未認證",logoutCopilot:"登出 Copilot",authenticateCopilot:"認證 Copilot",refreshStatus:"重新整理狀態",headlessAuth:"無頭認證",headlessAuthHelp:"在控制台輸出登入連結,而不是自動開啟瀏覽器",noModelsLoaded:"尚未載入模型,點擊「從 backend 取得可用模型」。",authFirstThenFetch:"請先完成 Copilot 認證,再取得模型。",copilotUsageTitle:"使用 GitHub Copilot:",copilotUsageStep1:"確保你已開通有效的 GitHub Copilot 訂閱",copilotUsageStep2:"點擊「認證 Copilot」啟動裝置碼流程",copilotUsageStep3:"按終端提示完成認證",copilotAuthModalTitle:"Copilot 認證",cancel:"取消",completedAuthorization:"我已完成授權",browserOpened:"瀏覽器已自動開啟",authStep1:"瀏覽器中應已開啟 GitHub 頁面",authStep2:"複製下方代碼並貼上到 GitHub 頁面",authStep3:"在 GitHub 點擊「Continue」完成授權",visitUrl:"1. 開啟該 URL:",enterCode:"2. 輸入此代碼:",copied:"已複製!",copyCode:"複製代碼",afterContinueHint:"在 GitHub 點擊 Continue 後,請點擊下方「我已完成授權」。",providerModelRef:"供應商模型目錄",providerModelRefHelp:"使用後端提供的模型目錄進行模型選擇。啟用後,模型選擇器將顯示供應商目錄中的可用模型,而非手動配置的模型。",catalogModeInfo:"模型來自供應商目錄。",fetchAllModels:"取得所有模型",fetchingAllModels:"正在取得模型...",fetchModelsSuccess:"成功取得 {{count}} 個供應商的模型",fetchModelsPartialSuccess:"已取得 {{success}}/{{total}} 個供應商的模型",providerNotConfigured:"未配置",capabilityVision:"視覺",capabilityTools:"工具",capabilityReasoning:"推理",refreshCatalog:"重新整理目錄",noCatalogModels:"未發現模型,點擊「取得所有模型」載入。"},mcpTab:{...e.settings.mcpTab,status:{connecting:"連接中",ready:"就緒",degraded:"降級",stopped:"已停止",error:"錯誤"},statusGuideTitle:"狀態說明:",statusHelp:{connecting:"伺服器正在啟動或重連中",ready:"伺服器已連接,工具可正常使用",degraded:"伺服器部分可用,部分工具可能失敗",stopped:"伺服器未執行",error:"伺服器啟動失敗或執行時發生錯誤"},statusLastError:"最近錯誤:{{error}}",serverDeleted:"MCP 伺服器已刪除",deleteServerFailed:"刪除 MCP 伺服器失敗",connectedTo:"已連接到 {{name}}",connectServerFailed:"連接 MCP 伺服器失敗",disconnected:"已斷開 {{name}}",disconnectServerFailed:"斷開 MCP 伺服器失敗",toolsRefreshedFor:"{{name}} 的工具已重新整理",refreshToolsFailed:"重新整理工具失敗",statusRefreshed:"MCP 狀態已重新整理",refreshStatusFailed:"重新整理 MCP 狀態失敗",noServerForEditing:"沒有可編輯的伺服器",savedServer:"已儲存 {{name}}",addedServer:"已新增 {{name}}",saveServerFailed:"儲存 MCP 伺服器失敗",copiedConfig:"MCP 配置已複製到剪貼簿",clipboardUnavailable:"剪貼簿不可用,已在彈窗中顯示匯出內容。",invalidJsonPrefix:"JSON 無效",unknownError:"未知錯誤",jsonMustBeObject:"JSON 必須是物件",missingMcpServers:'缺少 mcpServers。請貼上完整 Claude Desktop 風格配置:{ "mcpServers": { ... } }',importSummary:"已匯入 {{count}} 個伺服器(新增 {{added}},更新 {{updated}},刪除 {{removed}})。啟動失敗 {{failed}} 個。",importStartFailures:"部分伺服器未成功啟動,配置已儲存,請在伺服器列表查看錯誤。",importFailed:"匯入 MCP 伺服器失敗",overviewTitle:"MCP 概覽",overviewDescription:"配置外部 MCP 伺服器並查看已註冊的工具別名。",totalServers:"伺服器總數:{{count}}",totalTools:"工具總數:{{count}}",serversTitle:"MCP 伺服器",addServer:"新增伺服器",refreshAll:"全部重新整理",export:"匯出",import:"匯入",importModalTitle:"匯入 MCP 伺服器",importHint:"貼上 Claude Desktop 風格配置片段,例如:",importModeMerge:"合併(Upsert)",importModeReplace:"取代(刪除其餘)",replaceWarning:"取代模式會刪除不在匯入 mcpServers 中的現有 MCP 伺服器。"},mcpServerTable:{...e.settings.mcpServerTable,columns:{name:"名稱",transportType:"傳輸類型",status:"狀態",toolCount:"工具數",actions:"操作"},transportOptions:{sse:"SSE",stdio:"Stdio"},deleteTitle:"刪除 MCP 伺服器",deleteDescription:"確認刪除伺服器「{{name}}」?",empty:"尚未配置 MCP 伺服器",actions:{edit:"編輯",delete:"刪除",disconnect:"斷開",connect:"連接",refreshTools:"重新整理工具"}},mcpServerForm:{...e.settings.mcpServerForm,jsonMustBeObject:"JSON 必須是物件",detectedBulkConfig:"檢測到 mcpServers(批次配置)。批次匯入請使用 MCP 標籤頁中的「匯入」按鈕,或在這裡貼上單個伺服器配置。",missingIdField:"缺少或無效的 id 欄位",missingTransportField:"缺少或無效的 transport 欄位",missingTransportInfo:"缺少傳輸資訊。應包含 transport(Bodhi 格式)或 command/url(主流 MCP 格式)。",invalidJson:"JSON 無效:{{message}}",unknownError:"未知錯誤",editTitle:"編輯 MCP 伺服器",addTitle:"新增 MCP 伺服器",save:"儲存",modeForm:"表單",modeJson:"JSON",jsonError:"JSON 錯誤",serverId:"伺服器 ID",serverIdRequired:"伺服器 ID 不能為空",serverIdPatternError:"僅支援字母、數字、底線和連字號",displayName:"顯示名稱",enabled:"啟用",enabledHelp:"停用的伺服器會保留在配置中,但不會自動啟動。",transportType:"傳輸類型",transportTypeRequired:"傳輸類型不能為空",transportOptions:{stdio:"Stdio",sse:"SSE"},command:"命令",commandRequired:"命令不能為空",arguments:"參數",argumentsPlaceholder:"輸入參數後按 Enter 新增",envVars:"環境變數",addEnv:"新增環境變數",keyRequired:"鍵不能為空",sseUrl:"SSE URL",sseUrlRequired:"SSE URL 不能為空",validUrlRequired:"請輸入有效 URL",headers:"請求頭",addHeader:"新增請求頭",headerNameRequired:"請求頭名稱不能為空"},mcpToolList:{...e.settings.mcpToolList,title:"MCP 工具",selectServerHint:"請選擇一個伺服器以查看其 MCP 工具",empty:"該伺服器沒有可用工具",noDescription:"暫無描述",aliasMapping:"別名對應",parametersSchema:"參數 Schema"},envVars:{...e.settings.envVars,title:"環境變數",description:"這些變數會注入到 Bash 工具程序。金鑰變數會在儲存時加密。",fetchError:"載入環境變數失敗",created:"變數已建立",updated:"變數已更新",saveError:"儲存變數失敗",deleted:"變數已刪除",deleteError:"刪除變數失敗",addButton:"新增變數",noVars:"尚未配置環境變數",addTitle:"新增環境變數",editTitle:"編輯變數",save:"儲存",cancel:"取消",name:"名稱",nameRequired:"變數名不能為空",nameInvalid:"必須以字母或底線開頭,後續僅可包含字母、數字或底線",value:"值",valueRequired:"新建變數時必須填寫值",valueEditHint:"留空則保留現有值",valuePlaceholder:"輸入值",valuePlaceholderEdit:"輸入新值或留空",secret:"金鑰",secretHint:"金鑰變數會加密儲存,並在介面中脫敏顯示",descriptionField:"說明",descriptionPlaceholder:"可選說明",type:"類型",plain:"普通",descriptionCol:"說明",actions:"操作",deleteConfirm:"確認刪除該變數?",yes:"是",no:"否",notSet:"(未設定)",empty:"(空)"},hooksTab:{...e.settings.hooksTab,title:"圖像 Hooks",enableImagePreflight:"啟用圖像預檢 Hook",modeLabel:"模式",description:"Placeholder 模式會把圖像改寫為文字摘要(可能影響依賴真實圖像資料的工具)。OCR 目前僅支援 Windows。",loadFailed:"載入 Hooks 設定失敗",updateFailed:"更新 Hooks 失敗",modeUpdateFailed:"更新 Hook 模式失敗",enabled:"已啟用圖像 Hooks",disabled:"已停用圖像 Hooks",modeUpdated:"圖像 Hook 模式已設定為:{{mode}}",mode:{placeholder:"佔位符",error:"報錯",ocr:"OCR(Windows)",vision:"視覺描述(LLM)"}},modelTab:{...e.settings.modelTab,selectModelTitle:"選擇模型",loadingModels:"正在載入模型...",selectModelPlaceholder:"請選擇模型",backendApiBaseUrlTitle:"後端 API 基礎位址",resetToDefault:"恢復預設",save:"儲存",backendApiHint:"必須是包含 /v1 的完整基礎位址(例如 {{example}})。"},modelLimits:{...e.settings.modelLimits,title:"Token 預算模型限制",descriptionPrefix:"配置按模型劃分的 token 上限。這些設定會全域儲存到 Bamboo 的",descriptionSuffix:"並由後端解析器使用。",defaultsTitle:"模型預設值",defaultsDescription:"已預置 GPT-5 / GPT-4 / Gemini / Kimi / GLM 的上下文與輸出預設值,可按需繼續調整。",migratedFromLocalStorage:"已將本地儲存中的模型限制遷移到全域配置。",loadFailed:"載入模型限制設定失敗",saveSuccess:"模型限制已儲存到全域配置",saveFailed:"儲存模型限制設定失敗",resetSuccess:"模型限制已恢復為產品預設值",resetFailed:"重置模型限制設定失敗",columns:{...(c=e.settings.modelLimits)==null?void 0:c.columns,vendor:"廠商/系列",model:"模型",contextWindow:"上下文視窗",maxOutput:"最大輸出",notes:"備註",actions:"操作"},placeholders:{...(f=e.settings.modelLimits)==null?void 0:f.placeholders,vendor:"OpenAI / Google / Moonshot",model:"例如 gpt-5.4-thinking",optional:"可選"},actions:{...(P=e.settings.modelLimits)==null?void 0:P.actions,remove:"刪除",addRow:"新增行",save:"儲存",resetToDefaults:"恢復預設",reload:"重新載入"},validation:{...(T=e.settings.modelLimits)==null?void 0:T.validation,atLeastOneRow:"至少保留一條模型限制記錄。",modelPatternEmpty:"模型模式不能為空。",duplicateModelPattern:"模型模式重複:{{pattern}}",contextWindowMin:"{{pattern}} 的上下文視窗最小為 1000。",maxOutputMin:"{{pattern}} 的最大輸出最小為 1。",maxOutputExceedsContext:"{{pattern}} 的最大輸出必須小於或等於上下文視窗。",safetyMarginNegative:"{{pattern}} 的安全邊距不能為負數。",safetyMarginTooLarge:"{{pattern}} 的安全邊距必須小於上下文視窗。"}},modelMappingCard:{...e.settings.modelMappingCard,loadProviderFailed:"載入 Provider 配置失敗",loadMappingsFailed:"載入現有對應失敗",loadModelsFailed:"載入模型失敗",loadModelsHint:"載入模型失敗,請檢查 Provider 配置。",mappingSaved:"模型對應已儲存",mappingSaveFailed:"儲存模型對應失敗",enterModelName:"請輸入模型名稱",customMappingSaved:"自訂模型對應已儲存",customMappingSaveFailed:"儲存自訂模型對應失敗",collapseTitle:"Anthropic 模型對應",description:"配置當 Claude CLI 請求特定模型時,應該使用的 {{provider}} 模型。",loadModelsErrorTitle:"載入模型失敗",retry:"重試",loadingModels:"模型載入中...",modelTypeOpus:"Opus",modelTypeOpusDescription:'匹配包含 "opus" 的模型',modelTypeSonnet:"Sonnet",modelTypeSonnetDescription:'匹配包含 "sonnet" 的模型',modelTypeHaiku:"Haiku",modelTypeHaikuDescription:'匹配包含 "haiku" 的模型',selectModelPlaceholder:"選擇 {{label}} 模型",customModelOption:"自訂模型...",mappedModelNotFound:'對應模型 "{{model}}" 不在目前 Provider 的可用模型列表中',refreshModels:"重新整理模型",currentProvider:"目前 Provider",loadingProvider:"載入中...",availableModels:"可用模型數量",cached:"(快取)",storedIn:"儲存位置",customModalTitle:"輸入自訂模型名稱",customModalDescription:"為 {{modelType}} 輸入自訂模型名稱",customModalPlaceholder:"例如:gpt-4-turbo-preview",customModalNote:"注意:請確認該模型名稱對目前 Provider 有效。",save:"儲存",cancel:"取消"},systemPromptManager:{...e.settings.systemPromptManager,title:"系統提示詞管理",addButton:"新增提示詞",defaultPromptLocked:"預設系統提示詞已鎖定,無法編輯。",updateSuccess:"提示詞更新成功",addSuccess:"提示詞新增成功",saveError:"儲存提示詞失敗,請重試。",deleteSuccess:"提示詞刪除成功",deleteError:"刪除提示詞失敗,請重試。",deleteConfirm:"確認刪除此提示詞嗎?",defaultTag:"預設(鎖定)",editTitle:"編輯系統提示詞",addTitle:"新增系統提示詞",nameLabel:"提示詞名稱",nameRequired:"請輸入提示詞名稱!",descriptionLabel:"提示詞描述",descriptionRequired:"請輸入提示詞描述!",contentLabel:"提示詞內容",contentRequired:"請輸入提示詞內容!"},promptsTab:{...e.settings.promptsTab,title:"系統提示增強",mermaidEnhancement:"Mermaid 增強",taskListRules:"共享任務規則",copilotConclusionWithOptionsBeforeFinish:"Copilot 結束前 conclusion_with_options",switchOn:"開",switchOff:"關",enhancementPlaceholder:"為每次系統提示追加全域增強文本。",saveEnhancement:"儲存增強",description:"該文本會先追加,然後再拼接已啟用的系統增強,最後再發送請求。"},workflowsTab:{...e.settings.workflowsTab,title:"工作流程",description:"工作流程會以 Markdown 檔案儲存在 `~/.bamboo/workflows`。可在聊天中使用 `/name` 插入工作流程。",loadFailed:"載入工作流程失敗",loadContentFailed:"載入工作流程內容失敗",invalidName:"工作流程名稱不合法",nameAlreadyExists:"同名工作流程已存在",saved:"工作流程已儲存",saveFailed:"儲存工作流程失敗",deleted:"工作流程已刪除",deleteFailed:"刪除工作流程失敗",refresh:"重新整理",newWorkflow:"新增工作流程",save:"儲存",empty:"暫無工作流程",namePlaceholder:"工作流程名稱",contentPlaceholder:`# 工作流程標題
|
|
7
7
|
|
|
8
|
-
在這裡描述工作流程步驟。`},metricsCards:{...e.settings.metricsCards,totalSessions:"會話總數",chatTokens:"聊天 Token",totalToolCalls:"工具呼叫總數",avgSessionDuration:"平均會話時長"},forwardMetricsCards:{...e.settings.forwardMetricsCards,totalForwardRequests:"Forward 請求總數",successRate:"成功率",forwardTokens:"Forward Token",avgResponseTime:"平均回應時間"},unifiedMetricsCards:{...e.settings.unifiedMetricsCards,totalRequests:"請求總數",totalTokens:"Token 總數",successRate:"成功率",avgResponseTime:"平均回應時間",chatSessions:"聊天會話",chatTokens:"聊天 Token",toolCalls:"工具呼叫",avgSessionDuration:"平均會話時長",totalMemories:"記憶總數",staleCandidates:"陳舊候選項",memoryProjects:"記憶專案數",lastReindex:"上次重建索引",forwardRequests:"Forward 請求",forwardTokens:"Forward Token",successful:"成功",failed:"失敗"},metricsTable:{...e.settings.metricsTable,session:{...(T=e.settings.metricsTable)==null?void 0:T.session,columns:{...(A=(w=e.settings.metricsTable)==null?void 0:w.session)==null?void 0:A.columns,session:"會話",model:"模型",status:"狀態",started:"開始時間",duration:"耗時",tokens:"Token",toolCalls:"工具呼叫",messages:"訊息數",action:"操作"},view:"查看"},forward:{...(R=e.settings.metricsTable)==null?void 0:R.forward,columns:{...(x=(F=e.settings.metricsTable)==null?void 0:F.forward)==null?void 0:x.columns,id:"ID",endpoint:"端點",model:"模型",type:"類型",status:"狀態",tokens:"Token",duration:"耗時",started:"開始時間",error:"錯誤"},typeStream:"流式",typeSync:"同步",totalRequests:"{{total}} 條請求",empty:"目前範圍內暫無 forward 請求記錄"}},keywordMaskingTab:{...e.settings.keywordMaskingTab,title:"關鍵詞脫敏",addKeyword:"新增關鍵詞",description:"配置發送到 Copilot API 前需要脫敏的關鍵詞。可使用精確匹配或正規匹配,匹配內容會被替換為 [MASKED]。",empty:"暫無關鍵詞脫敏規則",cancel:"取消",patternPlaceholder:"輸入要匹配的模式",examples:"範例",exactMatch:"精確匹配",regexPattern:"正規模式",enabled:"啟用",disabled:"停用",sampleText:"範例文本",sampleTextPlaceholder:"輸入範例文本",maskedPreview:"脫敏預覽",emptyPattern:"(空)",loadFailed:"載入關鍵詞脫敏配置失敗",saveFailed:"儲存配置失敗",saveSuccess:"關鍵詞脫敏配置已儲存",validationFailedPrefix:"校驗失敗",patternRequired:"匹配模式不能為空",invalidRegexPattern:"無效的正規表示式模式",example:{...(D=e.settings.keywordMaskingTab)==null?void 0:D.example,literalToken:"脫敏字面量 token",githubTokens:"脫敏 GitHub token",awsKeys:"脫敏 AWS Key",emails:"脫敏郵件位址"}}},components:{...e.components,markdown:{codeCopiedSuccess:"程式碼已複製到剪貼簿",copyFailed:"複製失敗"},jsonSchema:{...e.components.jsonSchema,field:"欄位",type:"類型",required:"必填",default:"預設",description:"描述"},tokenUsage:{...e.components.tokenUsage,messages:"訊息",tokens:"Token"},workflowResult:{...(E=e.components)==null?void 0:E.workflowResult,waitingForResult:"等待工作流程結果...",executionFailed:"工作流程執行失敗",retryWorkflow:"重試工作流程",copyParameters:"複製參數",copyResult:"複製結果"},toolResult:{...(L=e.components)==null?void 0:L.toolResult,waitingForResult:"等待結果...",executionFailed:"工具執行失敗",copyResult:"複製結果"},mermaid:{...(I=e.components)==null?void 0:I.mermaid,loadingDiagram:"正在載入圖表...",diagramError:"Mermaid 圖表錯誤",fixMermaid:"修復 Mermaid",exportSvg:"匯出 SVG",exportFailed:"匯出圖表失敗"},approval:{...(q=e.components)==null?void 0:q.approval,workflow:"工作流程"},todoList:{...e.components.todoList,llmEvaluation:"LLM 評估",tools:"個工具",dependsOn:"依賴:{{deps}}",dependencies:"項依賴"},toolSession:{...(O=e.components)==null?void 0:O.toolSession,title:"工具會話",running:"執行中",done:"完成",error:"錯誤",completedOnly:"{{completed}} 已完成",completedWithErrors:"{{completed}} 已完成(有錯誤)",completedProgress:"{{completed}} / {{total}} 已完成",noPersistedMessage:"無持久化輸出",deleteMessage:"刪除工具會話"}}}},Me={"fr-FR":async()=>{const e=(await g("en-US")).translation;return{translation:b(Ce(e),me)}},"hi-IN":async()=>{const e=(await g("en-US")).translation;return{translation:b(ke(e),ge)}},"ja-JP":async()=>{const e=(await g("en-US")).translation;return{translation:Se(e)}},"zh-TW":async()=>{const e=(await g("zh-CN")).translation;return{translation:Pe(e)}}},Te=new Set(["en-US","zh-CN"]),N=new Map,C=e=>{const t=N.get(e);if(t)return t;const s=(async()=>{if(Te.has(e))return await g(e);const i=Me[e];if(!i)throw new Error(`No i18n resource loader registered for locale: ${e}`);return i()})();return N.set(e,s),s},J=async e=>{if(d.hasResourceBundle(e,"translation"))return;const t=await C(e);d.addResourceBundle(e,"translation",t.translation,!0,!1)},p=ve(),Y=(async()=>{const e={};if(e[m]=await C(m),p!==m&&(e[p]=await C(p)),!d.isInitialized){d.use(oe),await d.init({resources:e,lng:p,fallbackLng:m,supportedLngs:_,interpolation:{escapeValue:!1},react:{useSuspense:!1},returnNull:!1});return}await J(p),d.language!==p&&await d.changeLanguage(p)})(),Ke=async e=>(await Y,await J(e),d.changeLanguage(e)),Z=document.getElementById("root");if(!Z)throw new Error("Missing #root element for Bodhi app bootstrap");const Q=K.createRoot(Z);let W=!1;window.addEventListener("vite:preloadError",e=>{const t="bodhi_preload_reload_at",s=Date.now();let i=0;try{i=Number(window.sessionStorage.getItem(t)??0)}catch{i=W?s:0}if(!(s-i<1e4)){e.preventDefault(),W=!0;try{window.sessionStorage.setItem(t,String(s))}catch{}window.location.reload()}});const we=e=>{const t=e instanceof Error?`${e.name}: ${e.message}`:String(e||"Unknown startup error");console.error("[Bodhi] Failed to bootstrap app:",e),Q.render(r.jsx(j.StrictMode,{children:r.jsx("div",{style:{height:"100vh",display:"flex",alignItems:"center",justifyContent:"center",padding:24,background:"var(--lotus-main-surface, #f6f6f6)",color:"var(--color-gray-800, #0f0f0f)",fontFamily:"system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"},children:r.jsxs("div",{style:{maxWidth:720,textAlign:"left"},children:[r.jsx("h2",{style:{margin:"0 0 12px"},children:"Bodhi UI failed to start"}),r.jsx("p",{style:{margin:0,lineHeight:1.5,whiteSpace:"pre-wrap"},children:t})]})})}))},Ae=async()=>{try{await Y;const{default:e}=await S(async()=>{const{default:t}=await import("./MetricsService-C89VqmCU.js").then(s=>s.ao);return{default:t}},__vite__mapDeps([0,1,2,3,4,5]),import.meta.url);Q.render(r.jsx(j.StrictMode,{children:r.jsx(e,{})}))}catch(e){we(e)}};Ae();const Re={translation:{app:{loading:"Loading...",retry:"Retry",backendNotReachable:"Backend not reachable at {{baseUrl}} (last error: {{message}})",errorBoundary:{title:"Something went wrong",description:"An unexpected error occurred in this section. You can try again or reload the page if the issue persists.",tryAgain:"Try Again",showDetails:"Show Details",hideDetails:"Hide Details"},passwordGate:{title:"Enter Access Password",description:"Password verification is required before entering the application.",passwordLabel:"Access Password",passwordPlaceholder:"Enter access password",submit:"Verify and Continue",validation:{required:"Please enter the access password",verifyFailed:"Password verification failed"}},notifications:{toolApproval:{title:"Approval Required: {{tool}}",genericTitle:"Approval required",body:"Tool {{tool}} needs your approval before execution",unknownTool:"Unknown Tool"},contextPressure:{title:"Context window nearly exhausted"},backgroundTask:{completedTitle:"Background Task Completed",completedBody:'"{{title}}" has completed',completedFallback:"A background task has completed",completedToast:"Background shell finished — {{command}} ({{status}}, exit {{code}})"},clarification:{title:"Bodhi AI needs your response",fallbackBody:"Agent needs you to answer a question"},conversationSummarized:"Conversation summarized: {{messages}} messages compressed, saved {{tokens}} tokens",allTasksCompleted:"All tasks completed! Total rounds: {{rounds}}, Tool calls: {{toolCalls}}",evaluatingTasks:"Evaluating {{count}} task(s)...",evaluationCompleteUpdated:"Evaluation complete: {{count}} task(s) updated.",evaluationCompleteNoUpdates:"Evaluation complete: No updates needed"},defaultSessionTitle:"New Session",skipToContent:"Skip to main content"},feedback:{helpful:"Helpful",notHelpful:"Not helpful"},sessionSummary:{title:"Session Summary"},inspector:{title:"Inspector",configuration:"Configuration"},layout:{showSidebar:"Show sidebar"},commandPalette:{searchPlaceholder:"Search sessions, settings, and actions",navigationHint:"Use ↑↓ to navigate, Enter to open, and Esc to close.",empty:"No matching commands",groups:{quickActions:"Quick actions",settings:"System settings"},badges:{quickAction:"Action",pinned:"Pinned",running:"Running",child:"Child",childSession:"Child session",rootSession:"Session"},actions:{newSession:"Create New Session",openProviderSettings:"Open Provider Settings",openMcpSettings:"Open MCP Settings",openWorkflowSettings:"Open Workflow Settings",openSessionsSettings:"Open Session Monitor",openSchedulesSettings:"Open Schedules"},errors:{actionFailed:"Command failed"}},common:{cancel:"Cancel",ok:"OK",apply:"Apply",save:"Save",delete:"Delete",saveAnyway:"Save Anyway",yes:"Yes",no:"No",home:"Home",parentDirectory:"Parent Directory",currentPath:"Current Path:",workspace:"Workspace",server:"Server:",category:"Category:",parameters:"Parameters",approve:"Approve",reject:"Reject",download:"Download",directory:"Directory",file:"File",close:"Close",clear:"Clear"},setup:{welcome:{heading:"Welcome to Bodhi",description:"Bodhi is your AI-powered development assistant. Get started by configuring an AI provider, or jump right in.",providerHint:"To start chatting, you'll need to configure an AI provider (e.g. OpenAI, Anthropic) with an API key.",proxyHint:"Behind a corporate proxy? You can configure proxy settings later in System Settings > Network."},button:{getStarted:"Get Started",configureProvider:"Configure Provider"},complete:{title:"All Set!",restartMessage:"Reloading the application..."},error:{completeFailed:"Failed to complete setup. Please try again."}},onboarding:{welcome:{title:"Welcome to Bodhi!",description:"Bodhi is your AI-powered development assistant. Let's take a quick look around."},newSession:{title:"New Session",description:"Click here to start a new chat session with the AI assistant."},taskTemplates:{title:"Task Templates",description:"Pick from pre-built templates like Code Review, Bug Investigation, Refactor, and more to jump-start your work."},modelPicker:{title:"Model Selection",description:"Switch between AI models and providers anytime from here."},sidebar:{title:"Session Sidebar",description:"Search, filter, pin, and switch between your conversations."},settings:{title:"Settings",description:"Configure AI providers, proxy settings, model mappings, MCP servers, and more."}},chat:{sidebar:{newSession:"New Session",createFailedTitle:"Failed to create session",createFailedUnknown:"Unknown error",searchPlaceholder:"Search sessions",filters:{all:"All",pinned:"Pinned",running:"Running",child:"Child"},empty:{noSessions:"No sessions yet",noMatches:"No matching sessions",hint:'Click "New Session" to get started',filterHint:"Try adjusting your search or filters",clearFilters:"Clear filters"},dateGroups:{today:"Today",yesterday:"Yesterday",thisWeek:"This Week",thisMonth:"This Month",pinned:"Pinned",scheduled:"Scheduled"},actions:{collapseChildren:"Collapse child sessions",expandChildren:"Expand child sessions"},delete:{title:"Delete Session",confirm:"Are you sure you want to delete this session?"},deleteByDate:{title:"Delete sessions from {{date}}",confirm:"Are you sure you want to delete {{count}} sessions from {{date}}?"},newSessionWithPrompt:"New session with {{prompt}}"},workspace:{modalTitle:"Set Workspace Path",invalidTitle:"Invalid Workspace Path",issuesDetected:"Potential issues detected with the workspace path:",confirmSaveInvalid:"Do you still want to save this path?",errorEnterPath:"Please enter a workspace path",errorSaveFailed:"Failed to save workspace path",placeholder:"e.g. /Users/alice/Workspace/MyProject",label:"Workspace",browseFolder:"Browse folder",descriptionTitle:"Workspace Path Description",descriptionP1:"Set a workspace path so file references and workspace tools can resolve files reliably.",descriptionP2:"Choose an existing project folder. You can still continue with an invalid path, but related features may not work correctly.",checkTitle:"Workspace Path Check",checkDescription:"Workspace path validation failed.",recentTitle:"Recent Workspaces",suggestedTitle:"Suggested Workspaces",noRecentWorkspaces:"No recent workspaces",noSuggestions:"No suggestions",defaultWorkspaceName:"Workspace",validWorkspace:"Valid workspace",fileCount:"{{count}} files",folderSelected:"Folder selected successfully"},folderBrowser:{title:"Select Workspace Folder",selectCurrent:"Select Current Folder",emptyFolder:"This folder is empty",tip:'Tip: Click a folder to enter, click "Select Current Folder" to confirm',readFolderError:"Unable to read folder"},input:{placeholder:"Send a message...",placeholderWithReference:"Send a message (includes reference)",placeholderWithWorkflows:"Send a message... (type '/' for workflows)",toolCallsOnly:"Tool calls only (allowed tools: {{tools}})",autoPrefixMode:"Auto-prefix mode: {{prefix}} (type '/' to select tools)",toolSpecificMode:"Tool-specific mode (allowed tools: {{tools}})",processingFiles:"Processing files…",dropImagesHere:"Drop images here",referencing:"Referencing",addAttachments:"Add attachments",referenceWorkspaceFiles:"Reference workspace files",imageCountSingular:"{{count}} image",imageCountPlural:"{{count}} images",moreImages:"+{{count}} more",clearAllImages:"Clear all images",charLimitExceeded:"Message exceeds the maximum length of {{max}} characters.",messageFormatInvalid:"Message format is incorrect",filesAdded:"Added {{count}} file(s)",filesAttached:"Attached {{count}} file(s)",reasoningTitle:"Reasoning effort: {{label}}",reasoning:{low:"Low",medium:"Medium",high:"High",xhigh:"Very high",max:"Max"},bypassPermissions:{label:"Bypass",onTitle:"Bypass permissions is ON — this session runs tools without asking for approval. Click to turn off.",offTitle:"Bypass permissions is OFF — risky tools ask for approval. Click to skip approvals for this session.",error:"Failed to update bypass permissions"},strictToolOnlyMode:"Strict tool-only mode",toolSpecificModeLabel:"Tool-specific mode",allowedTools:"Allowed tools:",autoPrefixLabel:"Auto prefix: {{prefix}}",mustStartWithPrefix:'Message must start with "{{prefix}}"'},actions:{regenerate:"Regenerate response",retryFailed:"Retry failed request",retryOptions:"Retry options",cancelRequest:"Cancel request",sendMessage:"Send message",copyMessage:"Copy message",referenceMessage:"Reference message",unpin:"Unpin",pin:"Pin",generateTitle:"Generate AI Title",runProjectDream:"Run Project Dream",runProjectDreamRunning:"Running Project Dream...",runProjectDreamSuccess:"Project Dream updated",runProjectDreamNoChange:"No Project Dream update was needed",runProjectDreamFailed:"Failed to run Project Dream"},prompt:{selectorTitle:"Select System Prompt",createButton:"Create New Session",helperText:"Select a base system prompt for the AI. You can add or edit prompts in the System Settings.",emptyDescription:"No system prompts found. Add one in System Settings.",newSessionSelectorTitle:"Select System Prompt for New Session",defaultDescription:"Default system prompt.",loadPresetsFailed:"Failed to load presets",loadCurrentInfoFailed:"Failed to load current info",systemCard:{title:"System Prompt",viewEnhanced:"View Enhanced",viewBase:"View Base",copy:"Copy",snapshotTitle:"Prompt Snapshot",sections:{base:"Base",enhancement:"Enhancement",workspace:"Workspace",instruction:"Instruction",env:"Environment",skills:"Skills",toolGuide:"Tool Guide",dream:"Dream Notebook",sessionMemory:"Session Memory",externalMemory:"Memory Layers",taskList:"Task List",effective:"Effective Prompt"}}},fileReference:{title:"@ File Reference",setWorkspace:"Set Workspace",noMatches:"No matching files found",emptyDirectory:"Directory is empty"},imagePreview:{counter:"{{current}} of {{total}}"},filePreview:{fileCount_one:"{{count}} file",fileCount_other:"{{count}} files"},commandSelector:{loading:"Loading commands...",emptyWithSearch:'No commands found matching "{{search}}"',empty:"No commands available.",navigationHint:"Navigation: Up/Down or Ctrl+P/N | Select: Enter | Complete: Space/Tab | Cancel: Esc",types:{workflow:"Workflow",skill:"Skill",mcp:"MCP",goal:"Goal"}},model:{selectModel:"Select model",noModelSelected:"No model selected",selectModelHint:"Choose a model to start chatting.",providerNotConfigured:"Provider not configured",configureProviderHint:"Set up your provider in settings before selecting a model.",configureProvider:"Configure provider",openSettings:"Open Settings",noModelsAvailable:"No models available",selectModelBeforeSend:"Please select a model before sending.",selectModelBeforeRetry:"Please select a model before retrying."},streaming:{assistant:"Bodhi",requestCancelled:"Request cancelled",sendFailed:"Failed to send message",retryFailed:"Failed to retry request",modelConfigNotLoaded:"Model configuration not loaded",agentUnavailable:"Agent unavailable",noActiveChatTitle:"No Active Chat",noActiveChatSendContent:"Please create or select a chat before sending a message.",noActiveChatRetryContent:"Please create or select a chat before retrying.",noChatIdTitle:"Missing Chat ID",noChatIdSendContent:"Current chat is missing an ID. Please create a new chat and try again.",noChatIdRetryContent:"Current chat is missing an ID. Please create a new chat and retry."},selectionToolbar:{selectMessages:"Select messages",selectedCount:"{{selected}} selected ({{total}} total)",selectAll:"Select all",clear:"Clear",exportMarkdown:"Export Markdown",exportPdf:"Export PDF",done:"Done"},scroll:{jumpToTop:"Jump to top",backToLatest:"Back to latest",newMessages:"New messages",newMessagesWithCount_one:"{{count}} new message",newMessagesWithCount_other:"{{count}} new messages"},compression:{tag:"Context compressed",timelineDetail:"{{count}} messages archived",timelineAria:"{{detail}} at {{time}}",tooltip:"Latest compression at {{time}}: {{count}} messages archived",archivedShort:"{{count}} archived"},contextBar:{workspace:"Workspace",workspaceTooltip:"Workspace context: {{path}}",files:"Files",fileRefsTooltip:"{{count}} file reference(s) in this session",prompt:"Prompt",promptTooltip:"System prompt: {{name}}",summary:"Summary",summaryTooltip:"Conversation summary contributes {{tokens}} tokens. {{count}} compression event(s) archived older messages.",promptCache:"Prompt cache",promptCacheTooltip:"{{count}} tool output(s) were compacted into prompt-side cache notes, saving {{tokens}} tokens."},machine:{label:"Machine",tooltip:"Runs on {{kind}} · {{host}}"},subAgents:{title:"Sub-agents",expand:"Expand",collapse:"Collapse",continue:"Continue here",open:"Open",retry:"Retry",hiddenHint:"{{count}} sub-agents hidden",headerCount:"({{active}} active / {{total}})",completedGroup:"Completed ({{count}})",noActive:"No active sub-agents",previewHint:"Hover to view output",residentGroup:"Resident agents ({{count}})",residentBadge:"Resident",runChildFailed:"Failed to run child session",continueChildFailed:"Failed to continue child session",fallbackTitle:"Sub-agent",statusRunning:"running",statusCompleted:"completed",statusPending:"pending",statusError:"error",statusCancelled:"cancelled",steeredLive:"Steering message delivered to the running sub-agent",queuedNextTurn:"Queued — takes effect at the next turn",statusFailed:"failed",pinned:"Pinned",heartbeat:"heartbeat",round:"round",summaryCompleted:"{{count}} completed",summaryRunning:"{{count}} running",summaryPending:"{{count}} pending",summaryFailed:"{{count}} failed",previewExpand:"Expand",previewOpenSession:"Open session",previewClose:"Close"},chatItem:{edit:"Edit",childTag:"Child"},systemPromptSelector:{defaultTag:"Default",hide:"Hide",preview:"Preview",copy:"Copy",lines:"{{count}} lines",words:"{{count}} words",chars:"{{count}} chars",noContent:"No content"},title:{updated:"Chat title updated",generateFailed:"Failed to generate chat title"},respond:{customAnswerPlaceholder:"Type your custom answer..."},emptyLauncher:{title:"Start with a task",subtitle:"Create a focused session in this pane and prefill the first message before you send it.",hint:"Nothing is sent automatically — you can edit the prompt first.",actions:{blank:{title:"Blank session",description:"Start from scratch with the default assistant and an empty composer.",sessionTitle:"New Session",prefill:""},codeReview:{title:"Code review",description:"Open a review-focused session with an editable review brief.",sessionTitle:"Code Review",prefill:"Review the relevant code changes in this workspace or repository. Start with the overall scope, then list risks, notable diffs, and the most important fixes."},tokenUsage:{title:"Token usage investigation",description:"Diagnose context growth, truncation risk, and token budget pressure.",sessionTitle:"Token Usage Investigation",prefill:"Help me investigate token usage, context growth, and truncation risk for this session or workflow. Summarize the likely drivers and recommend concrete next fixes."}},errors:{createFailed:"Failed to create session"}},multiPane:{splitHorizontal:"Split horizontally",splitVertical:"Split vertically",closePane:"Close pane",selectSessionHint:"Select a session to view messages",hoverToSplitHint:"Hover a pane to split and compare chats",selectMessagesToExport:"Select messages to export"},messageCard:{authRequired:"Authentication required",goToSettings:"Go to Settings",assistantThinking:"Assistant is thinking...",assistantCompactingContext:"Assistant is compacting context...",assistantCompactingContextDegraded:"Assistant is compacting context (degraded mode)...",assistantCompactingContextFailed:"Assistant failed to compact context. Continuing...",assistantUpdatingMemory:"Assistant is updating memory...",assistantRunningTool:"Assistant is running {{tool}}...",reasoning:"Reasoning",selected:"Selected",selectedTool:"Selected tool"},messageActions:{copy:"Copy",exportMarkdown:"Export as Markdown",exportPdf:"Export as PDF",restoreChat:"Restore chat only",restoreFilesAndChat:"Restore files and chat",deleteMessage:"Delete message",deleteFailed:"Failed to delete message",deleteNotFound:"Message no longer exists on backend. Reload and retry.",deleteConflict:"Session is running. Stop it and try deleting again.",deleteBatchFailed:"{{failed}} of {{total}} messages failed to delete.",savedFile:"Saved to {{filename}}",nothingToExport:"Nothing to export",exportFailed:"Export failed",cannotRestore:"Cannot restore this message",restorePartial:"Chat restored. {{count}} file(s) could not be restored.",restoreFilesSuccess:"Files and chat restored ({{count}} message(s) removed).",restoreSuccess:"Chat restored ({{count}} message(s) removed).",restoreFailed:"Failed to restore session",pdfUnavailable:"PDF export is unavailable in this environment",exportingPdf:"Exporting PDF..."},session:{defaultTitle:"New Session"},view:{roleUser:"You",roleAssistant:"Assistant",roleSystem:"System",roleDefault:"Message",exportSaved:"Saved: {{filename}}",providerNotConfigured:"Please configure provider first",unknownError:"Unknown error",workspacePathEmpty:"Workspace path cannot be empty",brandName:"Bodhi",subTitleUser:"Prompt",chatMessagesAria:"Chat messages",aiRespondingAria:"AI is responding",noExportableMessages:"No exportable messages",noActiveChat:"No active chat",selectAtLeastOneMessage:"Please select at least one message"},statusRail:{idle:"Ready",thinking:"Thinking…",runningTools:"Running tools…",waitingAnswer:"Waiting for your answer",runningChildren:"Running sub-agents…",completed:"Completed",error:"Error",childrenTooltip:"{{running}} running sub-agents"},systemPrompt:{preparing:"System prompt is being prepared..."},home:{running:"Running",justNow:"just now",minutesAgo:"{{count}}m ago",hoursAgo:"{{count}}h ago",daysAgo:"{{count}}d ago"}},settings:{page:{back:"Back",title:"System Settings",tabs:{config:"Config",prompts:"Prompts",mermaid:"Mermaid",skills:"Skills",workflows:"Workflows",mcp:"MCP",modelLimits:"Model Limits",metrics:"Metrics",schedules:"Schedules",sessions:"Sessions",app:"App",provider:"Provider",hooks:"Hooks",permissions:"Permissions",masking:"Masking",envVars:"Env Vars",clusters:"Clusters",notifications:"Notifications"},groups:{ai:"AI",toolsAndExtensions:"Tools & Extensions",securityAndPrivacy:"Security",deployment:"Deployment",monitoring:"Monitoring",system:"System"}},notifications:{deleteAllSuccess:"All sessions deleted (except pinned)",deleteEmptySuccess:"Empty sessions deleted (except pinned)",localStorageCleared:"Local storage has been cleared",resetSuccessReloading:"Application reset successful. Reloading...",resetFailed:"Failed to reset application",promptEnhancementSaved:"System prompt enhancement saved"},appTab:{switchOn:"ON",switchOff:"OFF",darkMode:"Dark Mode",vdiSafeMode:"Graphics compatibility mode",vdiSafeModeDesc:"Disables blur and glass effects that can break dropdowns and hover overlays in some virtual desktop, remote, or graphics-constrained environments.",vdiSafeModeEnabled:"Graphics compatibility mode enabled",vdiSafeModeDisabled:"Graphics compatibility mode disabled",darkModeDark:"Dark",darkModeLight:"Light",language:"Language",languageEnglish:"English",languageChinese:"Simplified Chinese",languageTraditionalChinese:"Traditional Chinese",languageFrench:"French",languageJapanese:"Japanese",languageHindi:"Hindi",deleteAllTitle:"Delete all sessions",deleteAllDescription:"Are you sure? This will delete all sessions except pinned.",deleteAllButton:"Delete All Sessions",deleteEmptyTitle:"Delete empty sessions",deleteEmptyDescription:"Are you sure? This will delete all sessions with no messages (except pinned).",deleteEmptyButton:"Delete Empty Sessions",clearLocalStorageTitle:"Clear Local Storage",clearLocalStorageDescription:"Are you sure? This will delete all local storage data and reset the application.",clearLocalStorageButton:"Clear Local Storage",confirmDeleteAll:"Yes, delete all",confirmDeleteEmpty:"Yes, delete empty",confirmClear:"Yes, clear it",cancel:"Cancel",dangerZone:"Danger Zone",dangerDescription:"These actions cannot be undone. All data will be permanently deleted.",resetApplicationTitle:"Reset Application",resetApplicationIntro:"Are you sure? This will:",resetStepDeleteAllSessions:"Delete ALL sessions (including pinned)",resetStepClearStorage:"Clear all local storage data",resetStepResetConfig:"Reset config.json to default",resetStepSetupFlow:"Trigger the initial setup flow on next launch",resetStepReplayGuide:"Replay feature guide",resetStepReload:"Reload the application",resetConfirm:"Yes, reset everything",resetButton:"Reset Application (All Data)",runningVersion:"Running version",runningVersionDesc:"This is the currently running Lotus frontend version."},configTab:{tabs:{general:"General",tools:"Tools"},loadConfigFailed:"Failed to load configuration",invalidConfig:"Invalid configuration",saveConfigSuccess:"Configuration saved successfully",saveConfigFailed:"Failed to save configuration",toolsLoadFailed:"Failed to load available tools",toolsReloadSuccess:"Tool list reloaded",toolsSaveSuccess:"Tool settings saved successfully",toolsSaveFailed:"Failed to save tool settings",backendSaved:"Backend URL saved",backendResetDefault:"Backend URL reset to default",backendUrlEmpty:"Backend URL cannot be empty",backendUrlInvalidProtocol:"Backend URL must start with http:// or https://",backendUrlInvalidUrl:"Backend URL is not a valid URL",backendUrlMustEndWithV1:'Backend URL must end with "/v1"',providerMovedTitle:"Provider Configuration Moved",providerMovedDescription:"GitHub Copilot and other provider settings have been moved to the Provider Settings tab. Please configure your providers there.",backendApiBaseUrlTitle:"Backend API Base URL",backendApiPlaceholder:"http://127.0.0.1:9562/v1",backendApiHint:"Must include /v1 path",accessPasswordTitle:"Access Password",accessPassword:{helperNotEnabled:"No access password is set. Once enabled, remote access requires a password while local loopback access can bypass it.",helperLocalBypass:"You are on a local connection, so you can change the access password without entering the current password.",helperRemote:"You are on a remote connection. Enter the current password before changing the access password.",loadStatusFailed:"Failed to load access status",updated:"Access password updated",enabled:"Access password set",updateFailed:"Failed to update access password",statusEnabled:"Access password enabled",statusDisabled:"Access password not enabled",currentPasswordLabel:"Current Password",newPasswordLabel:"New Password",setPasswordLabel:"Set Password",confirmPasswordLabel:"Confirm Password",updateAction:"Update Access Password",enableAction:"Enable Access Password",validation:{currentPasswordRequired:"Please enter the current password",newPasswordRequired:"Please enter a new password",confirmPasswordRequired:"Please enter the new password again",minLength:"Password must be at least 4 characters",passwordMismatch:"The passwords do not match"}},resetToDefault:"Reset to Default",save:"Save",language:"Language",languageEnglish:"English",languageChinese:"Simplified Chinese",languageTraditionalChinese:"Traditional Chinese",languageFrench:"French",languageJapanese:"Japanese",languageHindi:"Hindi",toolsTitle:"Tool Availability",toolsDescription:"Toggle whether each tool can be sent to the AI model. Disabled tools are hidden from model tool schemas.",subagentsTitle:"Sub-agents",subagentsDescription:"Sub-agents (child agents spawned by the main agent) each run as an isolated OS actor process: crash isolation, true parallelism, and independent cancellation.",subagentMaxConcurrent:"Max concurrent actors",subagentMaxConcurrentHint:"Upper bound on actor processes running at once; further spawns wait their turn. Empty = default (8).",memoryTitle:"Memory & Auto Dream",memoryDescription:"Manage Bamboo's memory layers: session memory for current-work continuity, long-term memory for durable knowledge, and Auto Dream for background Dream Notebook updates and durable memory extraction.",autoDreamEnabled:"Enable Auto Dream",autoDreamEnabledHint:"Automatically maintains the Dream Notebook and extracts long-term memory candidates in the background.",memoryModelMovedTitle:"Memory model moved to Provider Settings",memoryModelMovedDescription:"Memory Background Model is now configured in Provider Settings under Model Preferences. Auto Dream remains here as a system-level switch.",backgroundModel:"Background Memory Model",backgroundModelPlaceholder:"Leave empty to use the provider fast model",backgroundModelHint:"Optional dedicated model for memory summarization and reflection. If blank, Bamboo falls back to the current provider's fast model.",toolsEmpty:"No tools are currently available.",reloadTools:"Reload Tools",loadBambooConfigFailed:"Failed to load Bamboo config",bambooConfigSaved:"Bamboo config saved",saveBambooConfigFailed:"Failed to save Bamboo config"},networkCard:{title:"Network Settings",guideTip:"If you're behind a corporate proxy, configure your HTTP/HTTPS proxy and credentials here.",httpProxy:"HTTP Proxy",httpsProxy:"HTTPS Proxy",proxyPlaceholder:"http://proxy.example.com:8080",proxyAuthTitle:"Proxy Authentication",proxyConfiguredForUser:"Configured for user: {{username}}",clearCredentials:"Clear Credentials",username:"Username",password:"Password",apply:"Apply",credentialsStorageNote:"Proxy credentials are stored encrypted in ~/.bamboo/config.json",reload:"Reload",save:"Save"},modelMappingCard:{loadProviderFailed:"Failed to load provider configuration",loadMappingsFailed:"Failed to load existing mappings",loadModelsFailed:"Failed to load models",loadModelsHint:"Failed to load models. Please check your provider configuration.",mappingSaved:"Model mapping saved",mappingSaveFailed:"Failed to save model mapping",enterModelName:"Please enter a model name",customMappingSaved:"Custom model mapping saved",customMappingSaveFailed:"Failed to save custom model mapping",collapseTitle:"Provider Model Mapping",description:"Configure which {{provider}} models to use for provider-specific model alias resolution.",loadModelsErrorTitle:"Failed to Load Models",retry:"Retry",loadingModels:"Loading models...",modelTypeOpus:"Opus",modelTypeOpusDescription:'matches models containing "opus"',modelTypeSonnet:"Sonnet",modelTypeSonnetDescription:'matches models containing "sonnet"',modelTypeHaiku:"Haiku",modelTypeHaikuDescription:'matches models containing "haiku"',selectModelPlaceholder:"Select {{label}} model",customModelOption:"Custom model...",mappedModelNotFound:`Mapped model "{{model}}" not found in current provider's available models`,refreshModels:"Refresh Models",currentProvider:"Current Provider",loadingProvider:"Loading...",availableModels:"Available Models",cached:"(cached)",storedIn:"Stored in",customModalTitle:"Enter Custom Model Name",customModalDescription:"Enter a custom model name for {{modelType}}",customModalPlaceholder:"e.g., gpt-4-turbo-preview",customModalNote:"Note: Make sure the model name is valid for the current provider.",save:"Save",cancel:"Cancel"},modelTab:{selectModelTitle:"Select Model",loadingModels:"Loading models...",selectModelPlaceholder:"Select a model",backendApiBaseUrlTitle:"Backend API Base URL",resetToDefault:"Reset to Default",save:"Save",backendApiHint:"Must be a full base URL including /v1 (e.g. {{example}})."},mermaidTab:{title:"Mermaid Diagram Settings",description:"Customize how Mermaid diagrams are rendered in your chats",themeCardTitle:"Theme",themeLabel:"Mermaid Theme",themeTooltip:"Choose a built-in Mermaid theme. Default and Neutral auto-switch between light and dark based on app theme.",themeOptions:{default:"Default (Auto Light/Dark)",neutral:"Neutral (Auto Light/Dark)",dark:"Dark",forest:"Forest (Green Tones)",base:"Base (Minimal)"},themeDescriptionsTitle:"Theme Descriptions:",themeDescriptions:{default:"Default: Classic Mermaid look, auto-adapts to light/dark",neutral:"Neutral: Gray tones, auto-adapts to light/dark",dark:"Dark: Always dark theme",forest:"Forest: Green color scheme, good for technical diagrams",base:"Base: Minimal styling, for custom theming"},globalCardTitle:"Global Settings",fontSizeLabel:"Font Size",fontSizeTooltip:"Base font size for all diagram text (in pixels)",defaultZoomLabel:"Default Zoom",defaultZoomTooltip:"Initial zoom level for diagrams (1.0 = 100%)",responsiveWidthLabel:"Responsive Width",responsiveWidthTooltip:"Enable to make diagrams adapt to container width. Disable for fixed-width diagrams.",switchAuto:"Auto",switchFixed:"Fixed",flowchartCardTitle:"Flowchart Settings",flowchartNodeSpacingLabel:"Node Spacing",flowchartNodeSpacingTooltip:"Horizontal spacing between nodes",flowchartRankSpacingLabel:"Rank Spacing",flowchartRankSpacingTooltip:"Vertical spacing between layers",flowchartCurveTypeLabel:"Curve Type",flowchartCurveTypeTooltip:"Type of curve for connections",flowchartCurveOptions:{basis:"Smooth (Basis)",linear:"Linear",cardinal:"Cardinal"},sequenceCardTitle:"Sequence Diagram Settings",sequenceActorMarginLabel:"Actor Margin",sequenceActorMarginTooltip:"Spacing between actors",sequenceMessageMarginLabel:"Message Margin",sequenceMessageMarginTooltip:"Spacing between messages",sequenceActorWidthLabel:"Actor Width",sequenceActorWidthTooltip:"Width of each actor box",sequenceActorHeightLabel:"Actor Height",sequenceActorHeightTooltip:"Height of each actor box",ganttCardTitle:"Gantt Chart Settings",ganttBarHeightLabel:"Bar Height",ganttBarHeightTooltip:"Height of each task bar",ganttTopPaddingLabel:"Top Padding",ganttTopPaddingTooltip:"Space at the top of the chart",resetToDefaults:"Reset to Defaults",previewTitle:"Preview",previewDescription:"Changes are applied immediately. Try creating or viewing a diagram to see your settings in action."},modelLimits:{title:"Token Budget Model Limits",descriptionPrefix:"Override the token budget for specific models; anything you don't override uses the global default.",descriptionSuffix:"Saved globally and used by the backend resolver.",defaultsTitle:"Models you've used",defaultsDescription:"Models appear here once you select and use them in chat. Each uses the global default until you customize it.",globalDefault:"Global default: {{context}} context / {{output}} output tokens.",emptyState:"No models yet. Models you select and use in chat will appear here automatically.",loadFailed:"Failed to load model limits settings",saveSuccess:"Model limits saved",saveFailed:"Failed to save model limits settings",resetSuccess:"Model limits reset — every model now uses the global default",resetFailed:"Failed to reset model limits settings",badge:{default:"Default · unchanged",defaultTooltip:"Using the global default. Unchanged rows automatically follow future default updates.",customized:"Customized"},columns:{model:"Model",contextWindow:"Context Window",maxOutput:"Max Output",safetyMargin:"Safety Margin",status:"Status",actions:"Actions"},placeholders:{model:"e.g. gpt-4o",optional:"Optional"},actions:{customize:"Customize",revert:"Reset to default",remove:"Remove",addModel:"Add model",save:"Save",resetToDefaults:"Reset all to default",reload:"Reload"},validation:{modelPatternEmpty:"Model pattern cannot be empty.",duplicateModelPattern:"Duplicate model pattern: {{pattern}}",contextWindowMin:"Context window for {{pattern}} must be at least 1000.",maxOutputMin:"Max output for {{pattern}} must be at least 1.",maxOutputExceedsContext:"Max output for {{pattern}} must be less than or equal to context window.",safetyMarginNegative:"Safety margin for {{pattern}} cannot be negative.",safetyMarginTooLarge:"Safety margin for {{pattern}} must be smaller than context window."}},common:{loading:"Loading...",successful:"Successful",failed:"Failed"},systemPromptManager:{title:"System Prompt Management",addButton:"Add Prompt",defaultPromptLocked:"Default system prompts are locked and cannot be edited.",updateSuccess:"Prompt updated successfully",addSuccess:"Prompt added successfully",saveError:"Failed to save prompt. Please try again.",deleteSuccess:"Prompt deleted successfully",deleteError:"Failed to delete prompt. Please try again.",deleteConfirm:"Are you sure to delete this prompt?",defaultTag:"Default (Locked)",editTitle:"Edit System Prompt",addTitle:"Add New System Prompt",nameLabel:"Prompt Name",nameRequired:"Please input the name of the prompt!",descriptionLabel:"Prompt Description",descriptionRequired:"Please input the description of the prompt!",contentLabel:"Prompt Content",contentRequired:"Please input the content of the prompt!"},envVars:{title:"Environment Variables",description:"Variables are injected into Bash tool processes. Secret variables are encrypted at rest.",fetchError:"Failed to load environment variables",created:"Variable created",updated:"Variable updated",saveError:"Failed to save variable",deleted:"Variable deleted",deleteError:"Failed to delete variable",addButton:"Add Variable",noVars:"No environment variables configured",addTitle:"Add Environment Variable",editTitle:"Edit Variable",save:"Save",cancel:"Cancel",name:"Name",nameRequired:"Variable name is required",nameInvalid:"Must start with a letter or underscore, followed by letters, digits, or underscores",value:"Value",valueRequired:"Value is required for new variables",valueEditHint:"Leave empty to keep the existing value",valuePlaceholder:"Enter value",valuePlaceholderEdit:"Enter new value or leave empty",secret:"Secret",secretHint:"Secret variables are encrypted on disk and masked in the UI",descriptionField:"Description",descriptionPlaceholder:"Optional description",type:"Type",plain:"Plain",descriptionCol:"Description",actions:"Actions",deleteConfirm:"Delete this variable?",yes:"Yes",no:"No",notSet:"(not set)",empty:"(empty)"},promptsTab:{title:"System Prompt Enhancement",mermaidEnhancement:"Mermaid Enhancement",taskListRules:"Shared Task Rules",copilotConclusionWithOptionsBeforeFinish:"Copilot conclusion_with_options Before Finish",copilotConclusionWithOptionsBeforeFinishDescription:"When enabled for Copilot sessions, Bamboo requires the assistant to finish by calling conclusion_with_options. If the model tries to end with plain text, Bamboo stops the completion and returns a completion policy violation.",switchOn:"ON",switchOff:"OFF",enhancementPlaceholder:"Add global enhancement text to append to every system prompt.",saveEnhancement:"Save Enhancement",description:"This text is appended first, followed by enabled system enhancements before each request is sent."},hooksTab:{title:"Image Hooks",enableImagePreflight:"Enable image preflight hook",modeLabel:"Mode",description:"Placeholder mode rewrites images into text summaries (this can break tools that expect real image data). OCR is currently Windows-only.",loadFailed:"Failed to load hooks settings",updateFailed:"Failed to update hooks",modeUpdateFailed:"Failed to update hook mode",enabled:"Image hooks enabled",disabled:"Image hooks disabled",modeUpdated:"Image hook mode set to: {{mode}}",mode:{placeholder:"Placeholder",error:"Error",ocr:"OCR (Windows)",vision:"Vision (LLM)"}},permissionsTab:{title:"Always-ask Commands",description:"Tool calls matching these rules always prompt for your approval — even when a session has bypass permissions enabled. Built-in detection of hard-dangerous shell commands (code injection, writes to sensitive paths) is always on; add patterns here for destructive commands like deletes or pushes. Syntax: Tool(pattern), e.g. Bash(rm -rf *), Bash(git push *), Write(/etc/**).",placeholder:"e.g. Bash(rm -rf *)",add:"Add rule",remove:"Remove rule",examples:"Quick add:",empty:"No always-ask rules. Built-in dangerous-command detection is still active.",duplicate:"That rule is already in the list.",loadFailed:"Failed to load permission rules",saveSuccess:"Permission rules saved",saveFailed:"Failed to save permission rules"},keywordMaskingTab:{title:"Keyword Masking",addKeyword:"Add Keyword",description:"Configure keywords to be masked before sending to Copilot API. Use exact match for literal strings or regex for pattern matching. All matches will be replaced with [MASKED].",empty:"No keyword masking rules configured",cancel:"Cancel",patternPlaceholder:"Enter pattern to match",examples:"Examples",exactMatch:"Exact Match",regexPattern:"Regex Pattern",enabled:"Enabled",disabled:"Disabled",sampleText:"Sample text",sampleTextPlaceholder:"Enter sample text",maskedPreview:"Masked preview",emptyPattern:"(empty)",loadFailed:"Failed to load keyword masking configuration",saveFailed:"Failed to save configuration",saveSuccess:"Keyword masking configuration saved",validationFailedPrefix:"Validation failed",patternRequired:"Pattern cannot be empty",invalidRegexPattern:"Invalid regex pattern",example:{literalToken:"Mask a literal token",githubTokens:"Mask GitHub tokens",awsKeys:"Mask AWS keys",emails:"Mask email addresses"}},schedulesTab:{loadFailed:"Failed to load schedules",loadSessionsFailed:"Failed to load schedule sessions",createFailed:"Failed to create schedule",updateFailed:"Failed to update schedule",deleteFailed:"Failed to delete schedule",runNowFailed:"Failed to run schedule",taskMessageRequired:"Task message is required when Auto Execute is enabled",created:"Schedule created",updated:"Schedule updated",deleted:"Deleted schedule",enqueuedRun:"Enqueued run",loading:"Loading...",yes:"Yes",no:"No",optional:"(optional)",defaultName:"My Schedule",createTitle:"Create Schedule",listTitle:"Schedules",scheduleSessionsTitle:"Schedule Sessions",scheduleRunsTitle:"Schedule Run History",noSessionsYet:"No sessions yet.",noRunsYet:"No runs yet.",loadRunsFailed:"Failed to load schedule runs",editTitle:"Edit Schedule",nonIntervalReadOnly:"Quick interval editing is only available for interval triggers.",columns:{name:"Name",status:"Status",activity:"Activity",autoExecute:"Auto Execute",model:"Model",enabled:"Enabled",intervalSeconds:"Interval (s)",nextRun:"Next Run",lastRun:"Last Run",actions:"Actions"},triggerTypes:{interval:"Interval",daily:"Daily",weekly:"Weekly",monthly:"Monthly",cron:"Cron"},misfirePolicyOptions:{runOnce:"Run once",skip:"Skip",catchUpAll:"Catch up all",catchUpWindow:"Catch up window"},overlapPolicyOptions:{queueOne:"Queue one",skip:"Skip overlapping runs",allow:"Allow overlap"},form:{name:"Name",triggerType:"Trigger Type",intervalSeconds:"Interval Seconds",dailyHour:"Hour",dailyMinute:"Minute",weeklyWeekdays:"Weekdays",monthlyDays:"Days of Month",monthlyDaysPlaceholder:"e.g. 1, 15, 28",cronExpr:"Cron Expression",cronExprPlaceholder:"e.g. 0 9 * * 1-5",timezone:"Timezone",timezonePlaceholder:"e.g. Asia/Shanghai",startAt:"Start At",endAt:"End At",datetimePlaceholder:"RFC3339, e.g. 2026-04-05T09:00:00Z",misfirePolicy:"Misfire Policy",overlapPolicy:"Overlap Policy",catchUpWindowMaxRuns:"Catch-up Max Runs",catchUpWindowMaxLatenessSeconds:"Catch-up Max Lateness (s)",enabled:"Enabled",taskMessage:"Task Message",taskMessagePlaceholder:"(Optional) A task to run",model:"Model",modelPlaceholder:"(Optional) e.g. gpt-4o-mini",modelRequiredIfAuto:"Required if auto execute",autoExecute:"Auto Execute",systemPrompt:"System Prompt",workspacePath:"Workspace Path",enhancePrompt:"Enhance Prompt"},validation:{nameRequired:"Name is required",triggerRequired:"Trigger configuration is required",intervalRequired:"Interval is required",weekdaysRequired:"At least one weekday is required",monthDaysRequired:"At least one day of month is required",invalidMonthDays:"Month days must be comma-separated values between 1 and 31",cronRequired:"Cron expression is required"},actions:{create:"Create",refresh:"Refresh",edit:"Edit",runNow:"Run Now",sessions:"Sessions",runs:"Runs",delete:"Delete",open:"Open",save:"Save"},runHistory:{columns:{status:"Status",scheduledFor:"Scheduled For",startedAt:"Started At",completedAt:"Completed At",session:"Session",duration:"Duration",outcome:"Outcome"}},weekdays:{mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat",sun:"Sun"},triggerLabels:{interval:"{{type}} · {{seconds}}s",daily:"{{type}} · {{time}}",weekly:"{{type}} · {{weekdays}}",monthly:"{{type}} · {{days}}",cron:"{{type}} · {{expr}}"},statusLabels:{running:"Running",queued:"Queued",failing:"Failing",disabled:"Disabled",healthy:"Healthy",idle:"Idle"},statusDetails:{active:"{{count}} active",pending:"{{count}} pending",consecutiveFailures:"{{count}} consecutive failures",lastRunSucceeded:"Last run succeeded"},activityLabels:{queued:"Queued: {{count}}",running:"Running: {{count}}",ok:"OK: {{count}}",fail:"Fail: {{count}}"}},sessionsTab:{currentSessionTitle:"Current Session",id:"id",kind:"kind",clearMessages:"Clear Messages",clearMessagesTitle:"Clear Session Messages",clearMessagesContent:"This clears messages/attachments for the current session but keeps the session entry.",clear:"Clear",cancel:"Cancel",sessionCleared:"Session cleared",noActiveSession:"No active session.",bulkCleanupTitle:"Bulk Cleanup",keepPinned:"Keep pinned",deleteAll:"Delete All",deleteAllTitle:"Delete All Sessions",deleteAllKeepPinned:"Deletes all sessions except pinned.",deleteAllIncludePinned:"Deletes all sessions including pinned.",deleteEmpty:"Delete Empty",deleteEmptyTitle:"Delete Empty Sessions",deleteEmptyKeepPinned:"Deletes empty sessions except pinned.",deleteEmptyIncludePinned:"Deletes empty sessions including pinned.",deleteChildren:"Delete Children",deleteChildrenTitle:"Delete Child Sessions",deleteChildrenKeepPinned:"Deletes all child sessions except pinned.",deleteChildrenIncludePinned:"Deletes all child sessions including pinned.",delete:"Delete",cleanupComplete:"Cleanup complete",devResetTitle:"Development Reset",devResetDescription:"Greenfield reset for session storage (deletes sessions/ and resets sessions.json).",devResetAction:"Dev Reset Sessions",devResetConfirmTitle:"Reset Session Storage (Dev)",devResetConfirmContent:"This deletes ALL sessions (including pinned/child) and resets the sessions index. A new empty session will be created after refresh.",reset:"Reset",devResetDone:"Session storage reset"},workflowsTab:{title:"Workflows",description:"Workflows are stored in `~/.bamboo/workflows` as Markdown files. Use `/name` to insert a workflow in chat.",loadFailed:"Failed to load workflows",loadContentFailed:"Failed to load workflow content",invalidName:"Invalid workflow name",nameAlreadyExists:"A workflow with this name already exists",saved:"Workflow saved",saveFailed:"Failed to save workflow",deleted:"Workflow deleted",deleteFailed:"Failed to delete workflow",refresh:"Refresh",newWorkflow:"New Workflow",save:"Save",empty:"No workflows found",namePlaceholder:"Workflow name",contentPlaceholder:`# Workflow Title
|
|
8
|
+
在這裡描述工作流程步驟。`},metricsCards:{...e.settings.metricsCards,totalSessions:"會話總數",chatTokens:"聊天 Token",totalToolCalls:"工具呼叫總數",avgSessionDuration:"平均會話時長"},forwardMetricsCards:{...e.settings.forwardMetricsCards,totalForwardRequests:"Forward 請求總數",successRate:"成功率",forwardTokens:"Forward Token",avgResponseTime:"平均回應時間"},unifiedMetricsCards:{...e.settings.unifiedMetricsCards,totalRequests:"請求總數",totalTokens:"Token 總數",successRate:"成功率",avgResponseTime:"平均回應時間",chatSessions:"聊天會話",chatTokens:"聊天 Token",toolCalls:"工具呼叫",avgSessionDuration:"平均會話時長",totalMemories:"記憶總數",staleCandidates:"陳舊候選項",memoryProjects:"記憶專案數",lastReindex:"上次重建索引",forwardRequests:"Forward 請求",forwardTokens:"Forward Token",successful:"成功",failed:"失敗"},metricsTable:{...e.settings.metricsTable,session:{...(M=e.settings.metricsTable)==null?void 0:M.session,columns:{...(A=(w=e.settings.metricsTable)==null?void 0:w.session)==null?void 0:A.columns,session:"會話",model:"模型",status:"狀態",started:"開始時間",duration:"耗時",tokens:"Token",toolCalls:"工具呼叫",messages:"訊息數",action:"操作"},view:"查看"},forward:{...(R=e.settings.metricsTable)==null?void 0:R.forward,columns:{...(x=(F=e.settings.metricsTable)==null?void 0:F.forward)==null?void 0:x.columns,id:"ID",endpoint:"端點",model:"模型",type:"類型",status:"狀態",tokens:"Token",duration:"耗時",started:"開始時間",error:"錯誤"},typeStream:"流式",typeSync:"同步",totalRequests:"{{total}} 條請求",empty:"目前範圍內暫無 forward 請求記錄"}},keywordMaskingTab:{...e.settings.keywordMaskingTab,title:"關鍵詞脫敏",addKeyword:"新增關鍵詞",description:"配置發送到 Copilot API 前需要脫敏的關鍵詞。可使用精確匹配或正規匹配,匹配內容會被替換為 [MASKED]。",empty:"暫無關鍵詞脫敏規則",cancel:"取消",patternPlaceholder:"輸入要匹配的模式",examples:"範例",exactMatch:"精確匹配",regexPattern:"正規模式",enabled:"啟用",disabled:"停用",sampleText:"範例文本",sampleTextPlaceholder:"輸入範例文本",maskedPreview:"脫敏預覽",emptyPattern:"(空)",loadFailed:"載入關鍵詞脫敏配置失敗",saveFailed:"儲存配置失敗",saveSuccess:"關鍵詞脫敏配置已儲存",validationFailedPrefix:"校驗失敗",patternRequired:"匹配模式不能為空",invalidRegexPattern:"無效的正規表示式模式",example:{...(E=e.settings.keywordMaskingTab)==null?void 0:E.example,literalToken:"脫敏字面量 token",githubTokens:"脫敏 GitHub token",awsKeys:"脫敏 AWS Key",emails:"脫敏郵件位址"}}},components:{...e.components,markdown:{codeCopiedSuccess:"程式碼已複製到剪貼簿",copyFailed:"複製失敗"},jsonSchema:{...e.components.jsonSchema,field:"欄位",type:"類型",required:"必填",default:"預設",description:"描述"},tokenUsage:{...e.components.tokenUsage,messages:"訊息",tokens:"Token"},workflowResult:{...(D=e.components)==null?void 0:D.workflowResult,waitingForResult:"等待工作流程結果...",executionFailed:"工作流程執行失敗",retryWorkflow:"重試工作流程",copyParameters:"複製參數",copyResult:"複製結果"},toolResult:{...(L=e.components)==null?void 0:L.toolResult,waitingForResult:"等待結果...",executionFailed:"工具執行失敗",copyResult:"複製結果"},mermaid:{...(I=e.components)==null?void 0:I.mermaid,loadingDiagram:"正在載入圖表...",diagramError:"Mermaid 圖表錯誤",fixMermaid:"修復 Mermaid",exportSvg:"匯出 SVG",exportFailed:"匯出圖表失敗"},approval:{...(q=e.components)==null?void 0:q.approval,workflow:"工作流程"},todoList:{...e.components.todoList,llmEvaluation:"LLM 評估",tools:"個工具",dependsOn:"依賴:{{deps}}",dependencies:"項依賴"},toolSession:{...(O=e.components)==null?void 0:O.toolSession,title:"工具會話",running:"執行中",done:"完成",error:"錯誤",completedOnly:"{{completed}} 已完成",completedWithErrors:"{{completed}} 已完成(有錯誤)",completedProgress:"{{completed}} / {{total}} 已完成",noPersistedMessage:"無持久化輸出",deleteMessage:"刪除工具會話"}}}},Te={"fr-FR":async()=>{const e=(await g("en-US")).translation;return{translation:S(ke(e),me)}},"hi-IN":async()=>{const e=(await g("en-US")).translation;return{translation:S(Ce(e),ge)}},"ja-JP":async()=>{const e=(await g("en-US")).translation;return{translation:be(e)}},"zh-TW":async()=>{const e=(await g("zh-CN")).translation;return{translation:Pe(e)}}},Me=new Set(["en-US","zh-CN"]),N=new Map,k=e=>{const t=N.get(e);if(t)return t;const s=(async()=>{if(Me.has(e))return await g(e);const i=Te[e];if(!i)throw new Error(`No i18n resource loader registered for locale: ${e}`);return i()})();return N.set(e,s),s},J=async e=>{if(d.hasResourceBundle(e,"translation"))return;const t=await k(e);d.addResourceBundle(e,"translation",t.translation,!0,!1)},p=ve(),Y=(async()=>{const e={};if(e[m]=await k(m),p!==m&&(e[p]=await k(p)),!d.isInitialized){d.use(oe),await d.init({resources:e,lng:p,fallbackLng:m,supportedLngs:_,interpolation:{escapeValue:!1},react:{useSuspense:!1},returnNull:!1});return}await J(p),d.language!==p&&await d.changeLanguage(p)})(),Ve=async e=>(await Y,await J(e),d.changeLanguage(e)),Z=document.getElementById("root");if(!Z)throw new Error("Missing #root element for Bodhi app bootstrap");const Q=V.createRoot(Z);let W=!1;window.addEventListener("vite:preloadError",e=>{const t="bodhi_preload_reload_at",s=Date.now();let i=0;try{i=Number(window.sessionStorage.getItem(t)??0)}catch{i=W?s:0}if(!(s-i<1e4)){e.preventDefault(),W=!0;try{window.sessionStorage.setItem(t,String(s))}catch{}window.location.reload()}});const we=e=>{const t=e instanceof Error?`${e.name}: ${e.message}`:String(e||"Unknown startup error");console.error("[Bodhi] Failed to bootstrap app:",e),Q.render(r.jsx(j.StrictMode,{children:r.jsx("div",{style:{height:"100vh",display:"flex",alignItems:"center",justifyContent:"center",padding:24,background:"var(--lotus-main-surface, #f6f6f6)",color:"var(--color-gray-800, #0f0f0f)",fontFamily:"system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif"},children:r.jsxs("div",{style:{maxWidth:720,textAlign:"left"},children:[r.jsx("h2",{style:{margin:"0 0 12px"},children:"Bodhi UI failed to start"}),r.jsx("p",{style:{margin:0,lineHeight:1.5,whiteSpace:"pre-wrap"},children:t})]})})}))},Ae=async()=>{try{await Y;const{default:e}=await b(async()=>{const{default:t}=await import("./MetricsService-D9UHnvd2.js").then(s=>s.ao);return{default:t}},__vite__mapDeps([0,1,2,3,4,5]),import.meta.url);Q.render(r.jsx(j.StrictMode,{children:r.jsx(e,{})}))}catch(e){we(e)}};Ae();const Re={translation:{app:{loading:"Loading...",retry:"Retry",backendNotReachable:"Backend not reachable at {{baseUrl}} (last error: {{message}})",errorBoundary:{title:"Something went wrong",description:"An unexpected error occurred in this section. You can try again or reload the page if the issue persists.",tryAgain:"Try Again",showDetails:"Show Details",hideDetails:"Hide Details"},passwordGate:{title:"Enter Access Password",description:"Password verification is required before entering the application.",passwordLabel:"Access Password",passwordPlaceholder:"Enter access password",submit:"Verify and Continue",validation:{required:"Please enter the access password",verifyFailed:"Password verification failed"}},notifications:{toolApproval:{title:"Approval Required: {{tool}}",genericTitle:"Approval required",body:"Tool {{tool}} needs your approval before execution",unknownTool:"Unknown Tool"},contextPressure:{title:"Context window nearly exhausted"},backgroundTask:{completedTitle:"Background Task Completed",completedBody:'"{{title}}" has completed',completedFallback:"A background task has completed",completedToast:"Background shell finished — {{command}} ({{status}}, exit {{code}})"},clarification:{title:"Bodhi AI needs your response",fallbackBody:"Agent needs you to answer a question"},conversationSummarized:"Conversation summarized: {{messages}} messages compressed, saved {{tokens}} tokens",allTasksCompleted:"All tasks completed! Total rounds: {{rounds}}, Tool calls: {{toolCalls}}",evaluatingTasks:"Evaluating {{count}} task(s)...",evaluationCompleteUpdated:"Evaluation complete: {{count}} task(s) updated.",evaluationCompleteNoUpdates:"Evaluation complete: No updates needed"},defaultSessionTitle:"New Session",skipToContent:"Skip to main content"},feedback:{helpful:"Helpful",notHelpful:"Not helpful"},sessionSummary:{title:"Session Summary"},inspector:{title:"Inspector",configuration:"Configuration"},layout:{showSidebar:"Show sidebar"},commandPalette:{searchPlaceholder:"Search sessions, settings, and actions",navigationHint:"Use ↑↓ to navigate, Enter to open, and Esc to close.",empty:"No matching commands",groups:{quickActions:"Quick actions",settings:"System settings"},badges:{quickAction:"Action",pinned:"Pinned",running:"Running",child:"Child",childSession:"Child session",rootSession:"Session"},actions:{newSession:"Create New Session",openProviderSettings:"Open Provider Settings",openMcpSettings:"Open MCP Settings",openWorkflowSettings:"Open Workflow Settings",openSessionsSettings:"Open Session Monitor",openSchedulesSettings:"Open Schedules"},errors:{actionFailed:"Command failed"}},common:{cancel:"Cancel",ok:"OK",apply:"Apply",save:"Save",delete:"Delete",saveAnyway:"Save Anyway",yes:"Yes",no:"No",home:"Home",parentDirectory:"Parent Directory",currentPath:"Current Path:",workspace:"Workspace",server:"Server:",category:"Category:",parameters:"Parameters",approve:"Approve",reject:"Reject",download:"Download",directory:"Directory",file:"File",close:"Close",clear:"Clear"},setup:{welcome:{heading:"Welcome to Bodhi",description:"Bodhi is your AI-powered development assistant. Get started by configuring an AI provider, or jump right in.",providerHint:"To start chatting, you'll need to configure an AI provider (e.g. OpenAI, Anthropic) with an API key.",proxyHint:"Behind a corporate proxy? You can configure proxy settings later in System Settings > Network."},button:{getStarted:"Get Started",configureProvider:"Configure Provider"},complete:{title:"All Set!",restartMessage:"Reloading the application..."},error:{completeFailed:"Failed to complete setup. Please try again."}},onboarding:{welcome:{title:"Welcome to Bodhi!",description:"Bodhi is your AI-powered development assistant. Let's take a quick look around."},newSession:{title:"New Session",description:"Click here to start a new chat session with the AI assistant."},taskTemplates:{title:"Task Templates",description:"Pick from pre-built templates like Code Review, Bug Investigation, Refactor, and more to jump-start your work."},modelPicker:{title:"Model Selection",description:"Switch between AI models and providers anytime from here."},sidebar:{title:"Session Sidebar",description:"Search, filter, pin, and switch between your conversations."},settings:{title:"Settings",description:"Configure AI providers, proxy settings, model mappings, MCP servers, and more."}},chat:{sidebar:{newSession:"New Session",createFailedTitle:"Failed to create session",createFailedUnknown:"Unknown error",searchPlaceholder:"Search sessions",filters:{all:"All",pinned:"Pinned",running:"Running",child:"Child"},empty:{noSessions:"No sessions yet",noMatches:"No matching sessions",hint:'Click "New Session" to get started',filterHint:"Try adjusting your search or filters",clearFilters:"Clear filters"},dateGroups:{today:"Today",yesterday:"Yesterday",thisWeek:"This Week",thisMonth:"This Month",pinned:"Pinned",scheduled:"Scheduled"},actions:{collapseChildren:"Collapse child sessions",expandChildren:"Expand child sessions"},delete:{title:"Delete Session",confirm:"Are you sure you want to delete this session?"},deleteByDate:{title:"Delete sessions from {{date}}",confirm:"Are you sure you want to delete {{count}} sessions from {{date}}?"},newSessionWithPrompt:"New session with {{prompt}}"},workspace:{modalTitle:"Set Workspace Path",invalidTitle:"Invalid Workspace Path",issuesDetected:"Potential issues detected with the workspace path:",confirmSaveInvalid:"Do you still want to save this path?",errorEnterPath:"Please enter a workspace path",errorSaveFailed:"Failed to save workspace path",placeholder:"e.g. /Users/alice/Workspace/MyProject",label:"Workspace",browseFolder:"Browse folder",descriptionTitle:"Workspace Path Description",descriptionP1:"Set a workspace path so file references and workspace tools can resolve files reliably.",descriptionP2:"Choose an existing project folder. You can still continue with an invalid path, but related features may not work correctly.",checkTitle:"Workspace Path Check",checkDescription:"Workspace path validation failed.",recentTitle:"Recent Workspaces",suggestedTitle:"Suggested Workspaces",noRecentWorkspaces:"No recent workspaces",noSuggestions:"No suggestions",defaultWorkspaceName:"Workspace",validWorkspace:"Valid workspace",fileCount:"{{count}} files",folderSelected:"Folder selected successfully"},folderBrowser:{title:"Select Workspace Folder",selectCurrent:"Select Current Folder",emptyFolder:"This folder is empty",tip:'Tip: Click a folder to enter, click "Select Current Folder" to confirm',readFolderError:"Unable to read folder"},input:{placeholder:"Send a message...",placeholderWithReference:"Send a message (includes reference)",placeholderWithWorkflows:"Send a message... (type '/' for workflows)",toolCallsOnly:"Tool calls only (allowed tools: {{tools}})",autoPrefixMode:"Auto-prefix mode: {{prefix}} (type '/' to select tools)",toolSpecificMode:"Tool-specific mode (allowed tools: {{tools}})",processingFiles:"Processing files…",dropImagesHere:"Drop images here",referencing:"Referencing",addAttachments:"Add attachments",referenceWorkspaceFiles:"Reference workspace files",imageCountSingular:"{{count}} image",imageCountPlural:"{{count}} images",moreImages:"+{{count}} more",clearAllImages:"Clear all images",charLimitExceeded:"Message exceeds the maximum length of {{max}} characters.",messageFormatInvalid:"Message format is incorrect",filesAdded:"Added {{count}} file(s)",filesAttached:"Attached {{count}} file(s)",reasoningTitle:"Reasoning effort: {{label}}",reasoning:{low:"Low",medium:"Medium",high:"High",xhigh:"Very high",max:"Max"},bypassPermissions:{label:"Bypass",onTitle:"Bypass permissions is ON — this session runs tools without asking for approval. Click to turn off.",offTitle:"Bypass permissions is OFF — risky tools ask for approval. Click to skip approvals for this session.",error:"Failed to update bypass permissions"},strictToolOnlyMode:"Strict tool-only mode",toolSpecificModeLabel:"Tool-specific mode",allowedTools:"Allowed tools:",autoPrefixLabel:"Auto prefix: {{prefix}}",mustStartWithPrefix:'Message must start with "{{prefix}}"'},actions:{regenerate:"Regenerate response",retryFailed:"Retry failed request",retryOptions:"Retry options",cancelRequest:"Cancel request",sendMessage:"Send message",copyMessage:"Copy message",referenceMessage:"Reference message",unpin:"Unpin",pin:"Pin",generateTitle:"Generate AI Title",runProjectDream:"Run Project Dream",runProjectDreamRunning:"Running Project Dream...",runProjectDreamSuccess:"Project Dream updated",runProjectDreamNoChange:"No Project Dream update was needed",runProjectDreamFailed:"Failed to run Project Dream"},prompt:{selectorTitle:"Select System Prompt",createButton:"Create New Session",helperText:"Select a base system prompt for the AI. You can add or edit prompts in the System Settings.",emptyDescription:"No system prompts found. Add one in System Settings.",newSessionSelectorTitle:"Select System Prompt for New Session",defaultDescription:"Default system prompt.",loadPresetsFailed:"Failed to load presets",loadCurrentInfoFailed:"Failed to load current info",systemCard:{title:"System Prompt",viewEnhanced:"View Enhanced",viewBase:"View Base",copy:"Copy",snapshotTitle:"Prompt Snapshot",sections:{base:"Base",enhancement:"Enhancement",workspace:"Workspace",instruction:"Instruction",env:"Environment",skills:"Skills",toolGuide:"Tool Guide",dream:"Dream Notebook",sessionMemory:"Session Memory",externalMemory:"Memory Layers",taskList:"Task List",effective:"Effective Prompt"}}},fileReference:{title:"@ File Reference",setWorkspace:"Set Workspace",noMatches:"No matching files found",emptyDirectory:"Directory is empty"},imagePreview:{counter:"{{current}} of {{total}}"},filePreview:{fileCount_one:"{{count}} file",fileCount_other:"{{count}} files"},commandSelector:{loading:"Loading commands...",emptyWithSearch:'No commands found matching "{{search}}"',empty:"No commands available.",navigationHint:"Navigation: Up/Down or Ctrl+P/N | Select: Enter | Complete: Space/Tab | Cancel: Esc",types:{workflow:"Workflow",skill:"Skill",mcp:"MCP",goal:"Goal"}},model:{selectModel:"Select model",noModelSelected:"No model selected",selectModelHint:"Choose a model to start chatting.",providerNotConfigured:"Provider not configured",configureProviderHint:"Set up your provider in settings before selecting a model.",configureProvider:"Configure provider",openSettings:"Open Settings",noModelsAvailable:"No models available",selectModelBeforeSend:"Please select a model before sending.",selectModelBeforeRetry:"Please select a model before retrying."},streaming:{assistant:"Bodhi",requestCancelled:"Request cancelled",sendFailed:"Failed to send message",retryFailed:"Failed to retry request",modelConfigNotLoaded:"Model configuration not loaded",agentUnavailable:"Agent unavailable",noActiveChatTitle:"No Active Chat",noActiveChatSendContent:"Please create or select a chat before sending a message.",noActiveChatRetryContent:"Please create or select a chat before retrying.",noChatIdTitle:"Missing Chat ID",noChatIdSendContent:"Current chat is missing an ID. Please create a new chat and try again.",noChatIdRetryContent:"Current chat is missing an ID. Please create a new chat and retry."},selectionToolbar:{selectMessages:"Select messages",selectedCount:"{{selected}} selected ({{total}} total)",selectAll:"Select all",clear:"Clear",exportMarkdown:"Export Markdown",exportPdf:"Export PDF",done:"Done"},scroll:{jumpToTop:"Jump to top",backToLatest:"Back to latest",newMessages:"New messages",newMessagesWithCount_one:"{{count}} new message",newMessagesWithCount_other:"{{count}} new messages"},compression:{tag:"Context compressed",timelineDetail:"{{count}} messages archived",timelineAria:"{{detail}} at {{time}}",tooltip:"Latest compression at {{time}}: {{count}} messages archived",archivedShort:"{{count}} archived"},contextBar:{workspace:"Workspace",workspaceTooltip:"Workspace context: {{path}}",files:"Files",fileRefsTooltip:"{{count}} file reference(s) in this session",prompt:"Prompt",promptTooltip:"System prompt: {{name}}",summary:"Summary",summaryTooltip:"Conversation summary contributes {{tokens}} tokens. {{count}} compression event(s) archived older messages.",promptCache:"Prompt cache",promptCacheTooltip:"{{count}} tool output(s) were compacted into prompt-side cache notes, saving {{tokens}} tokens."},machine:{label:"Machine",tooltip:"Runs on {{kind}} · {{host}}"},subAgents:{title:"Sub-agents",expand:"Expand",collapse:"Collapse",continue:"Continue here",open:"Open",retry:"Retry",hiddenHint:"{{count}} sub-agents hidden",headerCount:"({{active}} active / {{total}})",completedGroup:"Completed ({{count}})",noActive:"No active sub-agents",previewHint:"Hover to view output",residentGroup:"Resident agents ({{count}})",residentBadge:"Resident",runChildFailed:"Failed to run child session",continueChildFailed:"Failed to continue child session",fallbackTitle:"Sub-agent",statusRunning:"running",statusCompleted:"completed",statusPending:"pending",statusError:"error",statusCancelled:"cancelled",steeredLive:"Steering message delivered to the running sub-agent",queuedNextTurn:"Queued — takes effect at the next turn",statusFailed:"failed",pinned:"Pinned",heartbeat:"heartbeat",round:"round",summaryCompleted:"{{count}} completed",summaryRunning:"{{count}} running",summaryPending:"{{count}} pending",summaryFailed:"{{count}} failed",previewExpand:"Expand",previewOpenSession:"Open session",previewClose:"Close"},chatItem:{edit:"Edit",childTag:"Child"},systemPromptSelector:{defaultTag:"Default",hide:"Hide",preview:"Preview",copy:"Copy",lines:"{{count}} lines",words:"{{count}} words",chars:"{{count}} chars",noContent:"No content"},title:{updated:"Chat title updated",generateFailed:"Failed to generate chat title"},respond:{customAnswerPlaceholder:"Type your custom answer..."},emptyLauncher:{title:"Start with a task",subtitle:"Create a focused session in this pane and prefill the first message before you send it.",hint:"Nothing is sent automatically — you can edit the prompt first.",actions:{blank:{title:"Blank session",description:"Start from scratch with the default assistant and an empty composer.",sessionTitle:"New Session",prefill:""},codeReview:{title:"Code review",description:"Open a review-focused session with an editable review brief.",sessionTitle:"Code Review",prefill:"Review the relevant code changes in this workspace or repository. Start with the overall scope, then list risks, notable diffs, and the most important fixes."},tokenUsage:{title:"Token usage investigation",description:"Diagnose context growth, truncation risk, and token budget pressure.",sessionTitle:"Token Usage Investigation",prefill:"Help me investigate token usage, context growth, and truncation risk for this session or workflow. Summarize the likely drivers and recommend concrete next fixes."}},errors:{createFailed:"Failed to create session"}},multiPane:{splitHorizontal:"Split horizontally",splitVertical:"Split vertically",closePane:"Close pane",selectSessionHint:"Select a session to view messages",hoverToSplitHint:"Hover a pane to split and compare chats",selectMessagesToExport:"Select messages to export"},messageCard:{authRequired:"Authentication required",goToSettings:"Go to Settings",assistantThinking:"Assistant is thinking...",assistantCompactingContext:"Assistant is compacting context...",assistantCompactingContextDegraded:"Assistant is compacting context (degraded mode)...",assistantCompactingContextFailed:"Assistant failed to compact context. Continuing...",assistantUpdatingMemory:"Assistant is updating memory...",assistantRunningTool:"Assistant is running {{tool}}...",reasoning:"Reasoning",selected:"Selected",selectedTool:"Selected tool"},messageActions:{copy:"Copy",exportMarkdown:"Export as Markdown",exportPdf:"Export as PDF",restoreChat:"Restore chat only",restoreFilesAndChat:"Restore files and chat",deleteMessage:"Delete message",deleteFailed:"Failed to delete message",deleteNotFound:"Message no longer exists on backend. Reload and retry.",deleteConflict:"Session is running. Stop it and try deleting again.",deleteBatchFailed:"{{failed}} of {{total}} messages failed to delete.",savedFile:"Saved to {{filename}}",nothingToExport:"Nothing to export",exportFailed:"Export failed",cannotRestore:"Cannot restore this message",restorePartial:"Chat restored. {{count}} file(s) could not be restored.",restoreFilesSuccess:"Files and chat restored ({{count}} message(s) removed).",restoreSuccess:"Chat restored ({{count}} message(s) removed).",restoreFailed:"Failed to restore session",pdfUnavailable:"PDF export is unavailable in this environment",exportingPdf:"Exporting PDF..."},session:{defaultTitle:"New Session"},view:{roleUser:"You",roleAssistant:"Assistant",roleSystem:"System",roleDefault:"Message",exportSaved:"Saved: {{filename}}",providerNotConfigured:"Please configure provider first",unknownError:"Unknown error",workspacePathEmpty:"Workspace path cannot be empty",brandName:"Bodhi",subTitleUser:"Prompt",chatMessagesAria:"Chat messages",aiRespondingAria:"AI is responding",noExportableMessages:"No exportable messages",noActiveChat:"No active chat",selectAtLeastOneMessage:"Please select at least one message"},statusRail:{idle:"Ready",thinking:"Thinking…",runningTools:"Running tools…",waitingAnswer:"Waiting for your answer",runningChildren:"Running sub-agents…",completed:"Completed",error:"Error",childrenTooltip:"{{running}} running sub-agents"},systemPrompt:{preparing:"System prompt is being prepared..."},home:{running:"Running",justNow:"just now",minutesAgo:"{{count}}m ago",hoursAgo:"{{count}}h ago",daysAgo:"{{count}}d ago"}},settings:{page:{back:"Back",title:"System Settings",tabs:{config:"Config",prompts:"Prompts",mermaid:"Mermaid",skills:"Skills",workflows:"Workflows",mcp:"MCP",modelLimits:"Model Limits",metrics:"Metrics",schedules:"Schedules",sessions:"Sessions",app:"App",provider:"Provider",hooks:"Hooks",permissions:"Permissions",masking:"Masking",envVars:"Env Vars",clusters:"Clusters",notifications:"Notifications"},groups:{ai:"AI",toolsAndExtensions:"Tools & Extensions",securityAndPrivacy:"Security",deployment:"Deployment",monitoring:"Monitoring",system:"System"}},notifications:{deleteAllSuccess:"All sessions deleted (except pinned)",deleteEmptySuccess:"Empty sessions deleted (except pinned)",localStorageCleared:"Local storage has been cleared",resetSuccessReloading:"Application reset successful. Reloading...",resetFailed:"Failed to reset application",promptEnhancementSaved:"System prompt enhancement saved"},notificationsTab:{title:"Desktop Notifications",description:"Receive OS-level notifications when the app is in the background and user action is required.",enabled:"Enable desktop notifications",events:"Notify when:",onClarification:"Agent needs clarification",onToolApproval:"Tool execution needs approval",onContextPressure:"Context window is critically full",onSubAgentComplete:"Background task completes",onBackgroundTaskComplete:"Background command finishes",onRunComplete:"A run finishes successfully",onRunFailed:"A run fails",loadError:"Failed to load notification preferences",saveError:"Failed to save notification preferences",desktopOnly:"Desktop notifications are only available in the Bodhi desktop app.",osNote:"OS notification permissions may also be required. You can manage them in your system settings.",channels:{title:"Notification Channels",description:"Configure how the backend delivers notifications (desktop, ntfy, Bark). Saved settings apply to every device.",retry:"Retry",save:"Save channel settings",saving:"Saving…",saved:"Saved",test:"Send test notification",testing:"Sending…",testNone:"No channels are currently enabled",testAttempted:"Attempted: {{channels}}",desktop:{title:"Desktop",auto:"Auto (on when standalone, off when embedded in Bodhi)",on:"On",off:"Off"},ntfy:{title:"ntfy",enable:"Enable ntfy",baseUrl:"Base URL",topic:"Topic",topicPlaceholder:"my-bamboo-topic",token:"Token (optional, for self-hosted instances)",tokenPlaceholderConfigured:"Configured — leave blank to keep",tokenPlaceholderEmpty:"Not required for the public ntfy.sh topic"},bark:{title:"Bark",enable:"Enable Bark",baseUrl:"Base URL",deviceKey:"Device Key",deviceKeyPlaceholderConfigured:"Configured — leave blank to keep",deviceKeyPlaceholderEmpty:"The device key from the Bark iOS app"}}},appTab:{switchOn:"ON",switchOff:"OFF",darkMode:"Dark Mode",vdiSafeMode:"Graphics compatibility mode",vdiSafeModeDesc:"Disables blur and glass effects that can break dropdowns and hover overlays in some virtual desktop, remote, or graphics-constrained environments.",vdiSafeModeEnabled:"Graphics compatibility mode enabled",vdiSafeModeDisabled:"Graphics compatibility mode disabled",darkModeDark:"Dark",darkModeLight:"Light",language:"Language",languageEnglish:"English",languageChinese:"Simplified Chinese",languageTraditionalChinese:"Traditional Chinese",languageFrench:"French",languageJapanese:"Japanese",languageHindi:"Hindi",deleteAllTitle:"Delete all sessions",deleteAllDescription:"Are you sure? This will delete all sessions except pinned.",deleteAllButton:"Delete All Sessions",deleteEmptyTitle:"Delete empty sessions",deleteEmptyDescription:"Are you sure? This will delete all sessions with no messages (except pinned).",deleteEmptyButton:"Delete Empty Sessions",clearLocalStorageTitle:"Clear Local Storage",clearLocalStorageDescription:"Are you sure? This will delete all local storage data and reset the application.",clearLocalStorageButton:"Clear Local Storage",confirmDeleteAll:"Yes, delete all",confirmDeleteEmpty:"Yes, delete empty",confirmClear:"Yes, clear it",cancel:"Cancel",dangerZone:"Danger Zone",dangerDescription:"These actions cannot be undone. All data will be permanently deleted.",resetApplicationTitle:"Reset Application",resetApplicationIntro:"Are you sure? This will:",resetStepDeleteAllSessions:"Delete ALL sessions (including pinned)",resetStepClearStorage:"Clear all local storage data",resetStepResetConfig:"Reset config.json to default",resetStepSetupFlow:"Trigger the initial setup flow on next launch",resetStepReplayGuide:"Replay feature guide",resetStepReload:"Reload the application",resetConfirm:"Yes, reset everything",resetButton:"Reset Application (All Data)",runningVersion:"Running version",runningVersionDesc:"This is the currently running Lotus frontend version."},configTab:{tabs:{general:"General",tools:"Tools"},loadConfigFailed:"Failed to load configuration",invalidConfig:"Invalid configuration",saveConfigSuccess:"Configuration saved successfully",saveConfigFailed:"Failed to save configuration",toolsLoadFailed:"Failed to load available tools",toolsReloadSuccess:"Tool list reloaded",toolsSaveSuccess:"Tool settings saved successfully",toolsSaveFailed:"Failed to save tool settings",backendSaved:"Backend URL saved",backendResetDefault:"Backend URL reset to default",backendUrlEmpty:"Backend URL cannot be empty",backendUrlInvalidProtocol:"Backend URL must start with http:// or https://",backendUrlInvalidUrl:"Backend URL is not a valid URL",backendUrlMustEndWithV1:'Backend URL must end with "/v1"',providerMovedTitle:"Provider Configuration Moved",providerMovedDescription:"GitHub Copilot and other provider settings have been moved to the Provider Settings tab. Please configure your providers there.",backendApiBaseUrlTitle:"Backend API Base URL",backendApiPlaceholder:"http://127.0.0.1:9562/v1",backendApiHint:"Must include /v1 path",accessPasswordTitle:"Access Password",accessPassword:{helperNotEnabled:"No access password is set. Once enabled, remote access requires a password while local loopback access can bypass it.",helperLocalBypass:"You are on a local connection, so you can change the access password without entering the current password.",helperRemote:"You are on a remote connection. Enter the current password before changing the access password.",loadStatusFailed:"Failed to load access status",updated:"Access password updated",enabled:"Access password set",updateFailed:"Failed to update access password",statusEnabled:"Access password enabled",statusDisabled:"Access password not enabled",currentPasswordLabel:"Current Password",newPasswordLabel:"New Password",setPasswordLabel:"Set Password",confirmPasswordLabel:"Confirm Password",updateAction:"Update Access Password",enableAction:"Enable Access Password",validation:{currentPasswordRequired:"Please enter the current password",newPasswordRequired:"Please enter a new password",confirmPasswordRequired:"Please enter the new password again",minLength:"Password must be at least 4 characters",passwordMismatch:"The passwords do not match"}},resetToDefault:"Reset to Default",save:"Save",language:"Language",languageEnglish:"English",languageChinese:"Simplified Chinese",languageTraditionalChinese:"Traditional Chinese",languageFrench:"French",languageJapanese:"Japanese",languageHindi:"Hindi",toolsTitle:"Tool Availability",toolsDescription:"Toggle whether each tool can be sent to the AI model. Disabled tools are hidden from model tool schemas.",subagentsTitle:"Sub-agents",subagentsDescription:"Sub-agents (child agents spawned by the main agent) each run as an isolated OS actor process: crash isolation, true parallelism, and independent cancellation.",subagentMaxConcurrent:"Max concurrent actors",subagentMaxConcurrentHint:"Upper bound on actor processes running at once; further spawns wait their turn. Empty = default (8).",memoryTitle:"Memory & Auto Dream",memoryDescription:"Manage Bamboo's memory layers: session memory for current-work continuity, long-term memory for durable knowledge, and Auto Dream for background Dream Notebook updates and durable memory extraction.",autoDreamEnabled:"Enable Auto Dream",autoDreamEnabledHint:"Automatically maintains the Dream Notebook and extracts long-term memory candidates in the background.",memoryModelMovedTitle:"Memory model moved to Provider Settings",memoryModelMovedDescription:"Memory Background Model is now configured in Provider Settings under Model Preferences. Auto Dream remains here as a system-level switch.",backgroundModel:"Background Memory Model",backgroundModelPlaceholder:"Leave empty to use the provider fast model",backgroundModelHint:"Optional dedicated model for memory summarization and reflection. If blank, Bamboo falls back to the current provider's fast model.",toolsEmpty:"No tools are currently available.",reloadTools:"Reload Tools",loadBambooConfigFailed:"Failed to load Bamboo config",bambooConfigSaved:"Bamboo config saved",saveBambooConfigFailed:"Failed to save Bamboo config"},networkCard:{title:"Network Settings",guideTip:"If you're behind a corporate proxy, configure your HTTP/HTTPS proxy and credentials here.",httpProxy:"HTTP Proxy",httpsProxy:"HTTPS Proxy",proxyPlaceholder:"http://proxy.example.com:8080",proxyAuthTitle:"Proxy Authentication",proxyConfiguredForUser:"Configured for user: {{username}}",clearCredentials:"Clear Credentials",username:"Username",password:"Password",apply:"Apply",credentialsStorageNote:"Proxy credentials are stored encrypted in ~/.bamboo/config.json",reload:"Reload",save:"Save"},modelMappingCard:{loadProviderFailed:"Failed to load provider configuration",loadMappingsFailed:"Failed to load existing mappings",loadModelsFailed:"Failed to load models",loadModelsHint:"Failed to load models. Please check your provider configuration.",mappingSaved:"Model mapping saved",mappingSaveFailed:"Failed to save model mapping",enterModelName:"Please enter a model name",customMappingSaved:"Custom model mapping saved",customMappingSaveFailed:"Failed to save custom model mapping",collapseTitle:"Provider Model Mapping",description:"Configure which {{provider}} models to use for provider-specific model alias resolution.",loadModelsErrorTitle:"Failed to Load Models",retry:"Retry",loadingModels:"Loading models...",modelTypeOpus:"Opus",modelTypeOpusDescription:'matches models containing "opus"',modelTypeSonnet:"Sonnet",modelTypeSonnetDescription:'matches models containing "sonnet"',modelTypeHaiku:"Haiku",modelTypeHaikuDescription:'matches models containing "haiku"',selectModelPlaceholder:"Select {{label}} model",customModelOption:"Custom model...",mappedModelNotFound:`Mapped model "{{model}}" not found in current provider's available models`,refreshModels:"Refresh Models",currentProvider:"Current Provider",loadingProvider:"Loading...",availableModels:"Available Models",cached:"(cached)",storedIn:"Stored in",customModalTitle:"Enter Custom Model Name",customModalDescription:"Enter a custom model name for {{modelType}}",customModalPlaceholder:"e.g., gpt-4-turbo-preview",customModalNote:"Note: Make sure the model name is valid for the current provider.",save:"Save",cancel:"Cancel"},modelTab:{selectModelTitle:"Select Model",loadingModels:"Loading models...",selectModelPlaceholder:"Select a model",backendApiBaseUrlTitle:"Backend API Base URL",resetToDefault:"Reset to Default",save:"Save",backendApiHint:"Must be a full base URL including /v1 (e.g. {{example}})."},mermaidTab:{title:"Mermaid Diagram Settings",description:"Customize how Mermaid diagrams are rendered in your chats",themeCardTitle:"Theme",themeLabel:"Mermaid Theme",themeTooltip:"Choose a built-in Mermaid theme. Default and Neutral auto-switch between light and dark based on app theme.",themeOptions:{default:"Default (Auto Light/Dark)",neutral:"Neutral (Auto Light/Dark)",dark:"Dark",forest:"Forest (Green Tones)",base:"Base (Minimal)"},themeDescriptionsTitle:"Theme Descriptions:",themeDescriptions:{default:"Default: Classic Mermaid look, auto-adapts to light/dark",neutral:"Neutral: Gray tones, auto-adapts to light/dark",dark:"Dark: Always dark theme",forest:"Forest: Green color scheme, good for technical diagrams",base:"Base: Minimal styling, for custom theming"},globalCardTitle:"Global Settings",fontSizeLabel:"Font Size",fontSizeTooltip:"Base font size for all diagram text (in pixels)",defaultZoomLabel:"Default Zoom",defaultZoomTooltip:"Initial zoom level for diagrams (1.0 = 100%)",responsiveWidthLabel:"Responsive Width",responsiveWidthTooltip:"Enable to make diagrams adapt to container width. Disable for fixed-width diagrams.",switchAuto:"Auto",switchFixed:"Fixed",flowchartCardTitle:"Flowchart Settings",flowchartNodeSpacingLabel:"Node Spacing",flowchartNodeSpacingTooltip:"Horizontal spacing between nodes",flowchartRankSpacingLabel:"Rank Spacing",flowchartRankSpacingTooltip:"Vertical spacing between layers",flowchartCurveTypeLabel:"Curve Type",flowchartCurveTypeTooltip:"Type of curve for connections",flowchartCurveOptions:{basis:"Smooth (Basis)",linear:"Linear",cardinal:"Cardinal"},sequenceCardTitle:"Sequence Diagram Settings",sequenceActorMarginLabel:"Actor Margin",sequenceActorMarginTooltip:"Spacing between actors",sequenceMessageMarginLabel:"Message Margin",sequenceMessageMarginTooltip:"Spacing between messages",sequenceActorWidthLabel:"Actor Width",sequenceActorWidthTooltip:"Width of each actor box",sequenceActorHeightLabel:"Actor Height",sequenceActorHeightTooltip:"Height of each actor box",ganttCardTitle:"Gantt Chart Settings",ganttBarHeightLabel:"Bar Height",ganttBarHeightTooltip:"Height of each task bar",ganttTopPaddingLabel:"Top Padding",ganttTopPaddingTooltip:"Space at the top of the chart",resetToDefaults:"Reset to Defaults",previewTitle:"Preview",previewDescription:"Changes are applied immediately. Try creating or viewing a diagram to see your settings in action."},modelLimits:{title:"Token Budget Model Limits",descriptionPrefix:"Override the token budget for specific models; anything you don't override uses the global default.",descriptionSuffix:"Saved globally and used by the backend resolver.",defaultsTitle:"Models you've used",defaultsDescription:"Models appear here once you select and use them in chat. Each uses the global default until you customize it.",globalDefault:"Global default: {{context}} context / {{output}} output tokens.",emptyState:"No models yet. Models you select and use in chat will appear here automatically.",loadFailed:"Failed to load model limits settings",saveSuccess:"Model limits saved",saveFailed:"Failed to save model limits settings",resetSuccess:"Model limits reset — every model now uses the global default",resetFailed:"Failed to reset model limits settings",badge:{default:"Default · unchanged",defaultTooltip:"Using the global default. Unchanged rows automatically follow future default updates.",customized:"Customized"},columns:{model:"Model",contextWindow:"Context Window",maxOutput:"Max Output",safetyMargin:"Safety Margin",status:"Status",actions:"Actions"},placeholders:{model:"e.g. gpt-4o",optional:"Optional"},actions:{customize:"Customize",revert:"Reset to default",remove:"Remove",addModel:"Add model",save:"Save",resetToDefaults:"Reset all to default",reload:"Reload"},validation:{modelPatternEmpty:"Model pattern cannot be empty.",duplicateModelPattern:"Duplicate model pattern: {{pattern}}",contextWindowMin:"Context window for {{pattern}} must be at least 1000.",maxOutputMin:"Max output for {{pattern}} must be at least 1.",maxOutputExceedsContext:"Max output for {{pattern}} must be less than or equal to context window.",safetyMarginNegative:"Safety margin for {{pattern}} cannot be negative.",safetyMarginTooLarge:"Safety margin for {{pattern}} must be smaller than context window."}},common:{loading:"Loading...",successful:"Successful",failed:"Failed"},systemPromptManager:{title:"System Prompt Management",addButton:"Add Prompt",defaultPromptLocked:"Default system prompts are locked and cannot be edited.",updateSuccess:"Prompt updated successfully",addSuccess:"Prompt added successfully",saveError:"Failed to save prompt. Please try again.",deleteSuccess:"Prompt deleted successfully",deleteError:"Failed to delete prompt. Please try again.",deleteConfirm:"Are you sure to delete this prompt?",defaultTag:"Default (Locked)",editTitle:"Edit System Prompt",addTitle:"Add New System Prompt",nameLabel:"Prompt Name",nameRequired:"Please input the name of the prompt!",descriptionLabel:"Prompt Description",descriptionRequired:"Please input the description of the prompt!",contentLabel:"Prompt Content",contentRequired:"Please input the content of the prompt!"},envVars:{title:"Environment Variables",description:"Variables are injected into Bash tool processes. Secret variables are encrypted at rest.",fetchError:"Failed to load environment variables",created:"Variable created",updated:"Variable updated",saveError:"Failed to save variable",deleted:"Variable deleted",deleteError:"Failed to delete variable",addButton:"Add Variable",noVars:"No environment variables configured",addTitle:"Add Environment Variable",editTitle:"Edit Variable",save:"Save",cancel:"Cancel",name:"Name",nameRequired:"Variable name is required",nameInvalid:"Must start with a letter or underscore, followed by letters, digits, or underscores",value:"Value",valueRequired:"Value is required for new variables",valueEditHint:"Leave empty to keep the existing value",valuePlaceholder:"Enter value",valuePlaceholderEdit:"Enter new value or leave empty",secret:"Secret",secretHint:"Secret variables are encrypted on disk and masked in the UI",descriptionField:"Description",descriptionPlaceholder:"Optional description",type:"Type",plain:"Plain",descriptionCol:"Description",actions:"Actions",deleteConfirm:"Delete this variable?",yes:"Yes",no:"No",notSet:"(not set)",empty:"(empty)"},promptsTab:{title:"System Prompt Enhancement",mermaidEnhancement:"Mermaid Enhancement",taskListRules:"Shared Task Rules",copilotConclusionWithOptionsBeforeFinish:"Copilot conclusion_with_options Before Finish",copilotConclusionWithOptionsBeforeFinishDescription:"When enabled for Copilot sessions, Bamboo requires the assistant to finish by calling conclusion_with_options. If the model tries to end with plain text, Bamboo stops the completion and returns a completion policy violation.",switchOn:"ON",switchOff:"OFF",enhancementPlaceholder:"Add global enhancement text to append to every system prompt.",saveEnhancement:"Save Enhancement",description:"This text is appended first, followed by enabled system enhancements before each request is sent."},hooksTab:{title:"Image Hooks",enableImagePreflight:"Enable image preflight hook",modeLabel:"Mode",description:"Placeholder mode rewrites images into text summaries (this can break tools that expect real image data). OCR is currently Windows-only.",loadFailed:"Failed to load hooks settings",updateFailed:"Failed to update hooks",modeUpdateFailed:"Failed to update hook mode",enabled:"Image hooks enabled",disabled:"Image hooks disabled",modeUpdated:"Image hook mode set to: {{mode}}",mode:{placeholder:"Placeholder",error:"Error",ocr:"OCR (Windows)",vision:"Vision (LLM)"}},permissionsTab:{title:"Always-ask Commands",description:"Tool calls matching these rules always prompt for your approval — even when a session has bypass permissions enabled. Built-in detection of hard-dangerous shell commands (code injection, writes to sensitive paths) is always on; add patterns here for destructive commands like deletes or pushes. Syntax: Tool(pattern), e.g. Bash(rm -rf *), Bash(git push *), Write(/etc/**).",placeholder:"e.g. Bash(rm -rf *)",add:"Add rule",remove:"Remove rule",examples:"Quick add:",empty:"No always-ask rules. Built-in dangerous-command detection is still active.",duplicate:"That rule is already in the list.",loadFailed:"Failed to load permission rules",saveSuccess:"Permission rules saved",saveFailed:"Failed to save permission rules"},keywordMaskingTab:{title:"Keyword Masking",addKeyword:"Add Keyword",description:"Configure keywords to be masked before sending to Copilot API. Use exact match for literal strings or regex for pattern matching. All matches will be replaced with [MASKED].",empty:"No keyword masking rules configured",cancel:"Cancel",patternPlaceholder:"Enter pattern to match",examples:"Examples",exactMatch:"Exact Match",regexPattern:"Regex Pattern",enabled:"Enabled",disabled:"Disabled",sampleText:"Sample text",sampleTextPlaceholder:"Enter sample text",maskedPreview:"Masked preview",emptyPattern:"(empty)",loadFailed:"Failed to load keyword masking configuration",saveFailed:"Failed to save configuration",saveSuccess:"Keyword masking configuration saved",validationFailedPrefix:"Validation failed",patternRequired:"Pattern cannot be empty",invalidRegexPattern:"Invalid regex pattern",example:{literalToken:"Mask a literal token",githubTokens:"Mask GitHub tokens",awsKeys:"Mask AWS keys",emails:"Mask email addresses"}},schedulesTab:{loadFailed:"Failed to load schedules",loadSessionsFailed:"Failed to load schedule sessions",createFailed:"Failed to create schedule",updateFailed:"Failed to update schedule",deleteFailed:"Failed to delete schedule",runNowFailed:"Failed to run schedule",taskMessageRequired:"Task message is required when Auto Execute is enabled",created:"Schedule created",updated:"Schedule updated",deleted:"Deleted schedule",enqueuedRun:"Enqueued run",loading:"Loading...",yes:"Yes",no:"No",optional:"(optional)",defaultName:"My Schedule",createTitle:"Create Schedule",listTitle:"Schedules",scheduleSessionsTitle:"Schedule Sessions",scheduleRunsTitle:"Schedule Run History",noSessionsYet:"No sessions yet.",noRunsYet:"No runs yet.",loadRunsFailed:"Failed to load schedule runs",editTitle:"Edit Schedule",nonIntervalReadOnly:"Quick interval editing is only available for interval triggers.",columns:{name:"Name",status:"Status",activity:"Activity",autoExecute:"Auto Execute",model:"Model",enabled:"Enabled",intervalSeconds:"Interval (s)",nextRun:"Next Run",lastRun:"Last Run",actions:"Actions"},triggerTypes:{interval:"Interval",daily:"Daily",weekly:"Weekly",monthly:"Monthly",cron:"Cron"},misfirePolicyOptions:{runOnce:"Run once",skip:"Skip",catchUpAll:"Catch up all",catchUpWindow:"Catch up window"},overlapPolicyOptions:{queueOne:"Queue one",skip:"Skip overlapping runs",allow:"Allow overlap"},form:{name:"Name",triggerType:"Trigger Type",intervalSeconds:"Interval Seconds",dailyHour:"Hour",dailyMinute:"Minute",weeklyWeekdays:"Weekdays",monthlyDays:"Days of Month",monthlyDaysPlaceholder:"e.g. 1, 15, 28",cronExpr:"Cron Expression",cronExprPlaceholder:"e.g. 0 9 * * 1-5",timezone:"Timezone",timezonePlaceholder:"e.g. Asia/Shanghai",startAt:"Start At",endAt:"End At",datetimePlaceholder:"RFC3339, e.g. 2026-04-05T09:00:00Z",misfirePolicy:"Misfire Policy",overlapPolicy:"Overlap Policy",catchUpWindowMaxRuns:"Catch-up Max Runs",catchUpWindowMaxLatenessSeconds:"Catch-up Max Lateness (s)",enabled:"Enabled",taskMessage:"Task Message",taskMessagePlaceholder:"(Optional) A task to run",model:"Model",modelPlaceholder:"(Optional) e.g. gpt-4o-mini",modelRequiredIfAuto:"Required if auto execute",autoExecute:"Auto Execute",systemPrompt:"System Prompt",workspacePath:"Workspace Path",enhancePrompt:"Enhance Prompt"},validation:{nameRequired:"Name is required",triggerRequired:"Trigger configuration is required",intervalRequired:"Interval is required",weekdaysRequired:"At least one weekday is required",monthDaysRequired:"At least one day of month is required",invalidMonthDays:"Month days must be comma-separated values between 1 and 31",cronRequired:"Cron expression is required"},actions:{create:"Create",refresh:"Refresh",edit:"Edit",runNow:"Run Now",sessions:"Sessions",runs:"Runs",delete:"Delete",open:"Open",save:"Save"},runHistory:{columns:{status:"Status",scheduledFor:"Scheduled For",startedAt:"Started At",completedAt:"Completed At",session:"Session",duration:"Duration",outcome:"Outcome"}},weekdays:{mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat",sun:"Sun"},triggerLabels:{interval:"{{type}} · {{seconds}}s",daily:"{{type}} · {{time}}",weekly:"{{type}} · {{weekdays}}",monthly:"{{type}} · {{days}}",cron:"{{type}} · {{expr}}"},statusLabels:{running:"Running",queued:"Queued",failing:"Failing",disabled:"Disabled",healthy:"Healthy",idle:"Idle"},statusDetails:{active:"{{count}} active",pending:"{{count}} pending",consecutiveFailures:"{{count}} consecutive failures",lastRunSucceeded:"Last run succeeded"},activityLabels:{queued:"Queued: {{count}}",running:"Running: {{count}}",ok:"OK: {{count}}",fail:"Fail: {{count}}"}},sessionsTab:{currentSessionTitle:"Current Session",id:"id",kind:"kind",clearMessages:"Clear Messages",clearMessagesTitle:"Clear Session Messages",clearMessagesContent:"This clears messages/attachments for the current session but keeps the session entry.",clear:"Clear",cancel:"Cancel",sessionCleared:"Session cleared",noActiveSession:"No active session.",bulkCleanupTitle:"Bulk Cleanup",keepPinned:"Keep pinned",deleteAll:"Delete All",deleteAllTitle:"Delete All Sessions",deleteAllKeepPinned:"Deletes all sessions except pinned.",deleteAllIncludePinned:"Deletes all sessions including pinned.",deleteEmpty:"Delete Empty",deleteEmptyTitle:"Delete Empty Sessions",deleteEmptyKeepPinned:"Deletes empty sessions except pinned.",deleteEmptyIncludePinned:"Deletes empty sessions including pinned.",deleteChildren:"Delete Children",deleteChildrenTitle:"Delete Child Sessions",deleteChildrenKeepPinned:"Deletes all child sessions except pinned.",deleteChildrenIncludePinned:"Deletes all child sessions including pinned.",delete:"Delete",cleanupComplete:"Cleanup complete",devResetTitle:"Development Reset",devResetDescription:"Greenfield reset for session storage (deletes sessions/ and resets sessions.json).",devResetAction:"Dev Reset Sessions",devResetConfirmTitle:"Reset Session Storage (Dev)",devResetConfirmContent:"This deletes ALL sessions (including pinned/child) and resets the sessions index. A new empty session will be created after refresh.",reset:"Reset",devResetDone:"Session storage reset"},workflowsTab:{title:"Workflows",description:"Workflows are stored in `~/.bamboo/workflows` as Markdown files. Use `/name` to insert a workflow in chat.",loadFailed:"Failed to load workflows",loadContentFailed:"Failed to load workflow content",invalidName:"Invalid workflow name",nameAlreadyExists:"A workflow with this name already exists",saved:"Workflow saved",saveFailed:"Failed to save workflow",deleted:"Workflow deleted",deleteFailed:"Failed to delete workflow",refresh:"Refresh",newWorkflow:"New Workflow",save:"Save",empty:"No workflows found",namePlaceholder:"Workflow name",contentPlaceholder:`# Workflow Title
|
|
9
9
|
|
|
10
|
-
Describe the workflow steps here.`},providerTab:{title:"LLM Provider Configuration",description:'Configure your preferred LLM provider. Configuration will be saved and applied when you click "Save and Apply Configuration".',currentProvider:"Current Provider",activeProvider:"Active LLM Provider",selectProviderRequired:"Please select a provider",saveAndApply:"Save and Apply Configuration",loadConfigFailed:"Failed to load provider config",checkStatusFailed:"Failed to check status",startCopilotAuthFailed:"Failed to start Copilot authentication",copilotAuthSuccess:"Copilot authentication successful!",providerReloaded:"Provider reloaded with new authentication.",completeAuthFailed:"Authentication completion failed. Please try again.",userCodeCopied:"User code copied to clipboard!",copyCodeFailedPrefix:"Failed to copy code. Please manually copy:",logoutSuccess:"Logged out from Copilot",logoutFailed:"Failed to logout from Copilot",unknownError:"Unknown error",invalidConfig:"Invalid configuration",invalidConfigPrefix:"Invalid configuration",invalidRequestOverridesJson:"Invalid request_overrides JSON for {{provider}}: {{error}}",copilotAuth:"GitHub Copilot Authentication",authStatus:"Status:",authenticated:"Authenticated",notAuthenticated:"Not Authenticated",unknown:"Unknown",refreshStatus:"Refresh",copilotAuthHelp:"Copilot requires OAuth authentication. Click the button below to start the Device Code Flow.",authenticateCopilot:"Authenticate Copilot",fetchModelsCopilotFailed:"Failed to fetch models. Please authenticate Copilot and try again.",fetchModelsFailed:"Failed to fetch models. Please check your API key and base URL.",noModelsReturned:"No models returned. Authenticate Copilot first, then fetch models.",foundModels:"Found {{count}} available models",fetchModelsErrorPrefix:"Failed to fetch models",saveConfigSuccess:"Configuration saved successfully",saveConfigFailed:"Failed to save configuration",saveConfigErrorPrefix:"Failed to save configuration",applyConfigSuccess:"Configuration applied successfully. Changes will take effect for new conversations.",applyConfigFailed:"Failed to apply configuration",applyConfigErrorPrefix:"Failed to apply configuration",modelUpdated:"Model updated successfully",updateModelFailed:"Failed to update model",updateModelErrorPrefix:"Failed to update model",fetchingModels:"Fetching models...",refreshModelsFrom:"Refresh available models from {{source}}",fetchModelsFrom:"Fetch available models from {{source}}",saveModelChangeFailed:"Failed to save model change",fetchModelsFailedShort:"Failed to fetch models",retry:"Retry",openaiConfigTitle:"OpenAI Configuration",openaiConfigDescription:"Enter your OpenAI API key to use GPT models. You can optionally specify a custom base URL for proxy servers.",openaiApiKey:"OpenAI API Key",openaiApiKeyRequired:"Please enter your OpenAI API key",openaiApiKeyPlaceholder:"sk-...",baseUrlOptional:"Base URL (Optional)",openaiBaseUrlPlaceholder:"https://api.openai.com/v1",openaiBaseUrlHelp:"Leave empty to use the default OpenAI API endpoint. Include full path (e.g., /v1) if needed.",defaultModel:"Default Model",modelPreferences:"Model Preferences",fastModel:"Fast Model (Optional)",fastModelHelp:"Cheaper/faster model for lightweight tasks like title generation, mermaid fix, and summarization. Uses default model when not set.",taskSummaryModel:"Task Summary Model (Optional)",taskSummaryModelHelp:"Dedicated model for task-oriented summarization and conversation compression. Falls back to Memory Background Model, then Fast Model, then the default model.",memoryBackgroundModel:"Memory Background Model (Optional)",memoryBackgroundModelHelp:"Dedicated model for memory reranking, recall background work, and Auto Dream. Falls back to Fast Model when not set.",subAgentModel:"Sub Agent Model (Optional)",subAgentModelHelp:"Default model for new Sub Agents. Uses Fast Model when not set, then falls back to the default model.",visionModel:"Vision Model (Optional)",visionModelHelp:"Vision-capable model for image understanding. When hooks.image_fallback.mode is set to 'vision', this model describes images as text so text-only models can understand them. Uses default model when not set.",sameAsDefault:"Same as default model",selectModelRequired:"Please select a model",selectModel:"Select a model",responsesOnlyModelsOptional:"Responses-Only Models (Optional)",responsesOnlyModelsPlaceholder:'e.g. "gpt-5.3-codex", "gpt-5*"',responsesOnlyHelp1:"Some models only support the OpenAI Responses API (not chat/completions). Add model ids here to force Bamboo to use upstream",responsesOnlyHelp2:"Supports exact match (e.g. gpt-5.3-codex) and prefix match with a trailing * (e.g. gpt-5*).",anthropicConfigTitle:"Anthropic Configuration",anthropicConfigDescription:"Enter your Anthropic API key to use Claude models.",anthropicApiKey:"Anthropic API Key",anthropicApiKeyRequired:"Please enter your Anthropic API key",anthropicApiKeyPlaceholder:"sk-ant-...",anthropicBaseUrlPlaceholder:"https://api.anthropic.com/v1",anthropicBaseUrlHelp:"Leave empty to use the default Anthropic API endpoint. Include full path (e.g., /v1) if needed.",maxTokensOptional:"Max Tokens (Optional)",maxTokensHelp:"Maximum number of tokens to generate",maxTokensPlaceholder:"4096",geminiConfigTitle:"Google Gemini Configuration",geminiConfigDescription:"Enter your Google AI API key to use Gemini models.",geminiApiKey:"Gemini API Key",geminiApiKeyRequired:"Please enter your Gemini API key",geminiApiKeyPlaceholder:"AIza...",geminiBaseUrlPlaceholder:"https://generativelanguage.googleapis.com/v1beta",geminiBaseUrlHelp:"Leave empty to use the default Google AI API endpoint. Include full path if needed.",copilotConfigTitle:"GitHub Copilot Configuration",copilotConfigDescription:"GitHub Copilot uses OAuth authentication by default. No API key is required. Alternatively, you can provide a Personal Access Token for direct API access.",copilotApiKey:"Personal Access Token (Optional)",copilotApiKeyHelp:"GitHub Personal Access Token for API access (alternative to OAuth device flow)",copilotApiKeyPlaceholder:"ghp_... or github_pat_...",authStatusTitle:"Authentication Status",logoutCopilot:"Logout from Copilot",headlessAuth:"Headless Authentication",headlessAuthHelp:"Print login URL in console instead of opening browser automatically",noModelsLoaded:'No models loaded yet. Click "Fetch available models from backend".',authFirstThenFetch:"Authenticate Copilot first, then fetch models.",copilotUsageTitle:"To use GitHub Copilot:",copilotUsageStep1:"Ensure you have an active GitHub Copilot subscription",copilotUsageStep2:'Click "Authenticate Copilot" to start the device code flow',copilotUsageStep3:"Follow the instructions in your terminal to complete authentication",copilotAuthModalTitle:"Copilot Authentication",cancel:"Cancel",completedAuthorization:"I've Completed Authorization",browserOpened:"Browser opened automatically",authStep1:"A GitHub page should have opened in your browser",authStep2:"Copy the code below and paste it on the GitHub page",authStep3:'Click "Continue" on GitHub to authorize',visitUrl:"1. Visit this URL:",enterCode:"2. Enter this code:",copied:"Copied!",copyCode:"Copy Code",afterContinueHint:`After clicking "Continue" on GitHub, click the "I've Completed Authorization" button below.`,providerNames:{openai:"OpenAI",anthropic:"Anthropic",gemini:"Gemini",copilot:"Copilot"},providerModelRef:"Provider Model Catalog",providerModelRefHelp:"Use catalog-based model selection from the backend. When enabled, the model picker shows available models from the provider catalog instead of manually configured models.",catalogModeInfo:"Models are sourced from the provider catalog.",fetchAllModels:"Fetch All Models",fetchingAllModels:"Fetching models...",fetchModelsSuccess:"Successfully fetched models for {{count}} providers",fetchModelsPartialSuccess:"Fetched models for {{success}} of {{total}} providers",providerNotConfigured:"Not Configured",capabilityVision:"Vision",capabilityTools:"Tools",capabilityReasoning:"Reasoning",refreshCatalog:"Refresh Catalog",noCatalogModels:"No models found. Click 'Fetch All Models' to load.",reasoningEffortDefault:"Default",reasoningEffortOptional:"Reasoning Effort (Optional)",reasoningEffortHelp:"Default reasoning effort for requests sent through this provider.",activeProviderReasoningEffort:"Active Provider Reasoning Effort",reasoningEffortUpdated:"Reasoning effort updated",updateReasoningEffortErrorPrefix:"Failed to update reasoning effort",updateReasoningEffortFailed:"Failed to update reasoning effort",advancedRequestOverrides:"Advanced Request Overrides (JSON)",advancedRequestOverridesHelp:"Customize provider request headers/body patch rules.",envVarInjection:"Env var injection:",bodhiApiKey:"Bodhi API Key",bodhiBaseUrl:"Base URL",targetProvider:"Target Provider",bodhiBaseUrlExtra:"Your Bodhi Server endpoint address",targetProviderExtra:"Which upstream provider to route through Bodhi",apiKeyRequired:"API key is required",apiKeyKeepPlaceholder:"Configured — leave empty to keep",bodhiApiKeyPlaceholder:"bhi_sk_...",bodhiBaseUrlPlaceholder:"http://localhost:8080",targetProviderPlaceholder:"openai"},mcpTab:{status:{connecting:"Connecting",ready:"Ready",degraded:"Degraded",stopped:"Stopped",error:"Error"},statusGuideTitle:"Status guide:",statusHelp:{connecting:"Server is starting or reconnecting",ready:"Server is connected and serving tools normally",degraded:"Server is partially available; some tools may fail",stopped:"Server is not running",error:"Server failed to start or encountered runtime errors"},statusLastError:"Last error: {{error}}",serverDeleted:"MCP server deleted",deleteServerFailed:"Failed to delete MCP server",connectedTo:"Connected to {{name}}",connectServerFailed:"Failed to connect MCP server",disconnected:"Disconnected {{name}}",disconnectServerFailed:"Failed to disconnect MCP server",toolsRefreshedFor:"Tools refreshed for {{name}}",refreshToolsFailed:"Failed to refresh tools",statusRefreshed:"MCP status refreshed",refreshStatusFailed:"Failed to refresh MCP status",noServerForEditing:"No server selected for editing",savedServer:"Saved {{name}}",addedServer:"Added {{name}}",saveServerFailed:"Failed to save MCP server",copiedConfig:"Copied MCP config to clipboard",clipboardUnavailable:"Clipboard not available. Export is shown in the modal.",invalidJsonPrefix:"Invalid JSON",unknownError:"Unknown error",jsonMustBeObject:"JSON must be an object",missingMcpServers:`Missing 'mcpServers'. Paste a full Claude Desktop-style config chunk: { "mcpServers": { ... } }`,importSummary:"Imported {{count}} server(s) ({{added}} added, {{updated}} updated, {{removed}} removed). {{failed}} failed to start.",importStartFailures:"Some servers did not start. Config is saved; open the server list to see errors.",importFailed:"Failed to import MCP servers",overviewTitle:"MCP Overview",overviewDescription:"Configure external MCP servers and inspect registered tool aliases.",totalServers:"Total servers: {{count}}",totalTools:"Total tools: {{count}}",serversTitle:"MCP Servers",addServer:"Add Server",refreshAll:"Refresh All",export:"Export",import:"Import",importModalTitle:"Import MCP Servers",importHint:"Paste a Claude Desktop-style config chunk. Example:",importModeMerge:"Merge (Upsert)",importModeReplace:"Replace (Delete Others)",replaceWarning:"Replace mode will remove existing MCP servers not present in the imported mcpServers."},mcpServerTable:{columns:{name:"Name",transportType:"Transport Type",status:"Status",toolCount:"Tool Count",actions:"Actions"},transportOptions:{sse:"SSE",stdio:"Stdio"},deleteTitle:"Delete MCP server",deleteDescription:'Delete server "{{name}}"?',empty:"No MCP servers configured",actions:{edit:"Edit",delete:"Delete",disconnect:"Disconnect",connect:"Connect",refreshTools:"Refresh Tools"}},mcpToolList:{title:"MCP Tools",selectServerHint:"Select a server to inspect its MCP tools",empty:"No tools found for this server",noDescription:"No description available",aliasMapping:"Alias mapping",parametersSchema:"Parameters schema"},mcpServerForm:{jsonMustBeObject:"JSON must be an object",detectedBulkConfig:"Detected mcpServers (bulk config). Use the MCP tab Import button for bulk import, or paste a single server config here.",missingIdField:"Missing or invalid id field",missingTransportField:"Missing or invalid transport field",missingTransportInfo:"Missing transport info. Expected either transport (Bodhi format) or command/url (mainstream MCP format).",invalidJson:"Invalid JSON: {{message}}",unknownError:"Unknown error",editTitle:"Edit MCP Server",addTitle:"Add MCP Server",save:"Save",modeForm:"Form",modeJson:"JSON",jsonError:"JSON Error",serverId:"Server ID",serverIdRequired:"Server ID is required",serverIdPatternError:"Use only letters, numbers, underscore, and hyphen",displayName:"Display Name",enabled:"Enabled",enabledHelp:"Disabled servers stay in config but will not be started.",transportType:"Transport Type",transportTypeRequired:"Transport type is required",transportOptions:{stdio:"Stdio",sse:"SSE"},command:"Command",commandRequired:"Command is required",arguments:"Arguments",argumentsPlaceholder:"Add an argument and press Enter",envVars:"Environment Variables",addEnv:"Add Env",keyRequired:"Key required",sseUrl:"SSE URL",sseUrlRequired:"SSE URL is required",validUrlRequired:"Please enter a valid URL",headers:"Headers",addHeader:"Add Header",headerNameRequired:"Header name required"},metricsCards:{totalSessions:"Total Sessions",chatTokens:"Chat Tokens",totalToolCalls:"Total Tool Calls",tokensSaved:"Saved Tokens",toolContextSavedTokens:"Tool Context Saved Tokens",compressionEvents:"Compression Events",avgSessionDuration:"Avg Session Duration"},forwardMetricsCards:{totalForwardRequests:"Total Forward Requests",successRate:"Success Rate",forwardTokens:"Forward Tokens",avgResponseTime:"Avg Response Time"},unifiedMetricsCards:{totalRequests:"Total Requests",totalTokens:"Total Tokens",successRate:"Success Rate",avgResponseTime:"Avg Response Time",chatSessions:"Chat Sessions",chatTokens:"Chat Tokens",toolCalls:"Tool Calls",avgSessionDuration:"Avg Session Duration",promptCachedToolOutputs:"Prompt-Cached Tool Outputs",tokensSaved:"Saved Tokens",compressionEvents:"Compression Events",totalMemories:"Total Memories",staleCandidates:"Stale Candidates",memoryProjects:"Memory Projects",lastReindex:"Last Reindex",forwardRequests:"Forward Requests",forwardTokens:"Forward Tokens",successful:"Successful",failed:"Failed"},metricsTable:{session:{columns:{session:"Session",model:"Model",status:"Status",started:"Started",duration:"Duration",tokens:"Tokens",toolCalls:"Tool Calls",messages:"Messages",action:"Action"},status:{running:"Running",awaitingResponse:"Awaiting Response",completed:"Completed",error:"Error",cancelled:"Cancelled"},view:"View"},forward:{columns:{id:"ID",endpoint:"Endpoint",model:"Model",type:"Type",status:"Status",tokens:"Tokens",duration:"Duration",started:"Started",error:"Error"},typeStream:"Stream",typeSync:"Sync",totalRequests:"{{total}} requests",empty:"No forward requests recorded for this range"}},metricsDashboard:{roundColumns:{round:"Round",status:"Status",duration:"Duration",tokens:"Tokens",toolCalls:"Tool Calls"},compactStats:{combinedTokens:"Combined Tokens",chatTokens:"Chat Tokens",forwardTokens:"Forward Tokens",avgTokensPerSession:"Avg Tokens / Session",savedTokens:"Saved Tokens",toolContextSavedTokens:"Tool Context Saved Tokens",nonToolCompressionSavedTokens:"Non-Tool Compression Saved Tokens",savedTokenRatio:"Saved / Chat Tokens",toolSavedShare:"Tool Share of Saved Tokens",promptCachedToolOutputs:"Prompt-Cached Tool Outputs",compressionEvents:"Compression Events",estimatedTimeSaved:"Est. Time Saved",estimatedEfficiencyLift:"Est. Efficiency Lift",estimatedSpeedMultiplier:"Est. Speed Multiplier",estimatedSavedWorkdays:"Est. Saved Workdays",avgRoundsPerSession:"Avg Rounds / Session",toolCallsPerSession:"Tool Calls / Session",activeSessionRate:"Active Session Rate",avgTokensPerForward:"Avg Tokens / Forward",forwardErrorRate:"Forward Error Rate",streamingRatio:"Streaming Ratio",p95ForwardLatency:"P95 Forward Latency",modelCoverage:"Model Coverage",endpointCoverage:"Endpoint Coverage"},multiplierSuffix:"x",filtersTitle:"Filters",refresh:"Refresh",startDate:"Start date",endDate:"End date",model:"Model",daysOption:"{{value}} days",granularity:{daily:"Daily",weekly:"Weekly",monthly:"Monthly"},dashboardTitle:"Dashboard",tabs:{overview:"Overview",analysis:"Analysis",records:"Records",chat:"Chat",skillsAndMcp:"Skills & MCP",forward:"Forward",memory:"Memory"},derivedMetricsTitle:"Derived Metrics (Compact)",derivedMetricsSubtitle:"More dimensions without extra page length",overviewSections:{scaleTitle:"Scale & Activity",scaleSubtitle:"Current usage volume across chat, forward, skills, and memory.",efficiencyTitle:"Compression & Efficiency Advantage",efficiencySubtitle:"Real savings from context compression, especially around tool-heavy workflows."},efficiencyHint:"These metrics now prefer direct runtime evidence: saved tokens, tool-context savings, non-tool compression savings, compression events, and workload / quality indicators across chat and forward traffic.",toolUsageTitle:"Tool Usage Frequency",noToolUsage:"No tool calls recorded for this range.",calls:"Calls",activityHeatmapTitle:"Daily Activity Heatmap",noActivity:"No activity available for this range.",sessionsCount:"{{count}} sessions",tokensAmount:"{{value}} tokens",sessionsTabLabel:"Sessions ({{count}})",chatSessionsLabel:"Chat Sessions ({{count}})",sessionsHint:"Click a session for full round detail",forwardTabLabel:"Forward Requests ({{count}})",detailedMetricsTitle:"Detailed Metrics",sessionMetricsTitle:"Session Metrics",loadingSessionDetails:"Loading session details...",sessionDetail:{sessionId:"Session ID",model:"Model",status:"Status",duration:"Duration",messages:"Messages",totalTokens:"Total Tokens",toolCalls:"Tool Calls"},noDetail:"No detail available.",skillsAndMcp:{cards:{skillLoadCalls:"Skill Loads",uniqueSkills:"Unique Skills",mcpCalls:"MCP Calls",uniqueMcpServers:"MCP Servers",uniqueMcpTools:"MCP Tools",coreToolCalls:"Core Tool Calls"},mix:{coreTools:"Core Tools",skillLoads:"Skill Loads",mcpCalls:"MCP Calls"},meta:{uniqueTools:"{{count}} tools"},usageMixTitle:"Usage Mix",usageMixSubtitle:"Compare core tools, skill loads, and MCP calls in one view.",noUsageMix:"No usage data available for this range.",topSkillsTitle:"Top Skills",topSkillsSubtitle:"Counted from load_skill calls during matching sessions.",noSkills:"No skills were loaded in this range.",topMcpServersTitle:"Top MCP Servers",topMcpServersSubtitle:"Server-level MCP call distribution.",noMcpServers:"No MCP activity recorded for this range.",topMcpToolsTitle:"Top MCP Tools",topMcpToolsSubtitle:"Most frequently called MCP tool aliases.",noMcpTools:"No MCP tools were called in this range.",topCoreToolsTitle:"Top Core Tools",topCoreToolsSubtitle:"Canonicalized built-in and server tool usage ranking.",noCoreTools:"No core tools were called in this range."},forward:{performanceTitle:"Forward Performance",performance:{p95Latency:"P95 Latency",errorRate:"Error Rate",streamingRatio:"Streaming Ratio",endpointCoverage:"Endpoint Coverage"}},memory:{breakdownTitle:"Memory Breakdown",byType:"By Type",byStatus:"By Status",byScope:"By Scope",lastDream:"Last Dream",lastReindex:"Last Reindex"}},charts:{tokenUsageOverTime:"Token Usage Over Time",unifiedTokenUsageOverTime:"Token Usage Over Time (Chat + Forward)",memoryTrendTitle:"Memory Trend",noTokenUsage:"No token usage available",noMemoryTrend:"No memory trend available",tokenUsageDescription:"Prompt, completion, and total tokens by day/period.",unifiedTokenUsageDescription:"Combined chat and forward token usage over time.",memoryTrendDescription:"Created memories, updated memories, and total durable memory over time.",total:"Total",prompt:"Prompt",completion:"Completion",chat:"Chat",forward:"Forward",totalMemories:"Total Memories",createdMemories:"Created Memories",updatedMemories:"Updated Memories",modelDistribution:"Model Distribution",noModelMetrics:"No model metrics available",modelDistributionDescription:"Share of total tokens consumed by model.",endpointDistribution:"Endpoint Distribution",noForwardMetrics:"No forward metrics available for this range."}},components:{markdown:{codeCopiedSuccess:"Code copied to clipboard",copyFailed:"Copy failed",copyCodeAriaLabel:"Copy code"},jsonSchema:{field:"Field",type:"Type",required:"Required",yes:"Yes",no:"No",default:"Default",description:"Description",noProperties:"No properties in schema"},workflowResult:{userWorkflow:"User Workflow",waitingForResult:"Waiting for workflow result...",executionFailed:"Workflow execution failed",retryWorkflow:"Retry workflow",copyParameters:"Copy parameters",copyResult:"Copy result",expandResult:"Expand result",collapseResult:"Collapse result"},toolResult:{waiting:"Waiting",waitingForResult:"Waiting for result...",executionFailed:"Tool execution failed",copyResult:"Copy result",checkpoint:"Checkpoint",checkpointNone:"None",diffTruncated:"Diff is too long and has been truncated",structuredToolResultHint:"Tool result · {{tool}}",memory:{action:{inspect:"Inspect",rebuild:"Rebuild"},totalMemories:"{{count}} memories",staleCandidates:"stale candidates: {{count}}",coverage:"Coverage",viewsLabel:"Views:",indexesLabel:"Indexes:",stateFilesLabel:"State files:",lastReindexLabel:"Last reindex:",lastDreamLabel:"Last dream:",viewFiles:"View files",indexFiles:"Index files",stateFiles:"State files",topicPaths:"Topic paths",recentMemories:"Recent memories"}},toolCall:{liveOutput:"Live output",keyParameters:"Key parameters",fullParameters:"Full parameters",copyParameters:"Copy parameters"},toolSteps:{title:"Tool Run",running:"running…",runningInBackground:"Running in background…",backgroundCompleted:"Completed",backgroundKilled:"Killed",backgroundFailed:"Failed",viewFullOutput:"View full output",details:"Details",preview:"Preview",parameters:"Parameters",result:"Result",noResult:"No result yet",intent:"Intent",keyParameters:"Key parameters",statusError:"error",statusFinish:"finish",statusProcess:"process",statusWait:"wait"},plan:{executionPlan:"Execution Plan",goal:"Goal",steps:"Steps",stepTitle:"Step {{number}}",reason:"Reason",estimated:"Estimated",tools:"Tools",prerequisites:"Prerequisites",potentialRisks:"Potential Risks ({{count}})",totalEstimatedTime:"Total estimated time",feedbackPlaceholder:"Tell the agent what to adjust...",sendFeedback:"Send feedback",refinePlan:"Refine plan",executePlan:"Execute plan"},question:{agentQuestion:"Agent Question",context:"Context",chooseOption:"Choose an option",recommended:"Recommended",customAnswerHint:"Need another option? Type your own answer.",customAnswerPlaceholder:"Type your custom answer...",submitAnswer:"Submit answer"},questionDialog:{selectOptionWarning:"Please select an option before submitting.",responseSubmitted:"Response submitted",responseSubmittedContinue:"Response submitted, AI will continue processing",submitFailed:"Failed to submit response",noModelConfigured:"No model configured",customAnswerTip:"Custom answer",otherTypeBelow:"Other (type below)",confirm:"Confirm"},skillManager:{title:"Skills",refresh:"Refresh",skillsRefreshed:"Skills refreshed",lastUpdated:"Last updated: {{value}}",justNow:"just now",secondsAgo:"{{count}}s ago",minutesAgo:"{{count}}m ago",searchPlaceholder:"Search skills",readOnlyHint:"Skill files remain read-only, but you can enable or disable them for prompt usage.",disabledHint:"Disabled skills stay visible here, but Bamboo filters them from system prompt skill context and blocks load_skill at runtime.",disabledTag:"Disabled",switchEnabled:"On",switchDisabled:"Off",skillStateSaved:"Skill state saved",saveFailed:"Failed to save skill state",noSkillsFound:"No skills found",noMatch:"No skills match the current search",loadFailed:"Failed to load skills",getFailed:"Failed to get skill"},skillSelector:{placeholder:"Select skills",disabledSkillsHint:"{{count}} previously selected skill is now globally disabled and has been removed."},imageGrid:{preview:"Preview",ocr:"OCR"},todoList:{title:"Task List",evaluating:"Evaluating",pin:"Pin",unpin:"Unpin",llmEvaluation:"LLM Evaluation",tools:"tools",dependsOn:"Depends on: {{deps}}",dependencies:"deps",status:{pending:"Pending",inProgress:"In Progress",completed:"Completed",blocked:"Blocked",skipped:"Skipped",failed:"Failed"},listStatus:{active:"Active",completed:"Completed",abandoned:"Abandoned"},percentComplete:"{{percent}}% Complete",progressLabel:"{{completed}} / {{total}} tasks completed",currentLabel:"Current: {{description}}"},tokenUsage:{title:"Token Usage",contextWindow:"Context window",contextPrepared:"Context prepared",promptCacheTitle:"Prompt-side savings",providerResult:"Provider-reported result",summary:"Summary",system:"System",messages:"Messages",tokens:"tokens",usedPercent:"Used {{value}}%",cachedToolOutputs:"Tool outputs compacted: {{count}}",promptSaved:"Prompt tokens saved",cacheRead:"Provider cache read",thinking:"Thinking tokens",promptSavedBadge:"Saved {{value}}",cacheReadBadge:"Cache {{value}}",thinkingBadge:"Think {{value}}",truncatedBadge:"{{count}} truncated"},approval:{workflow:"Workflow",executionRequest:"Execution Request",aiWantsExecute:"AI wants to execute the following action",childTitle:"Sub-agent approval needed",childQuestion:"A sub-agent wants to run a tool that requires your approval.",approve:"Approve",deny:"Deny",toolName:"Tool",permission:"Permission",target:"Target",childGone:"The sub-agent is no longer waiting; the request was dismissed.",deliverFailed:"Couldn't deliver your decision. Please try again."},toolSession:{title:"Tool Session",running:"Running",done:"Done",error:"Error",completedOnly:"{{completed}} completed",completedWithErrors:"{{completed}} completed (with errors)",completedProgress:"{{completed}} / {{total}} completed",noPersistedMessage:"No persisted output",deleteMessage:"Delete tool session"},mermaid:{loadingDiagram:"Loading diagram...",diagramError:"Mermaid Diagram Error",errorTitlePrefix:"Error",checkConsoleHint:"Check Mermaid syntax or open the console for details.",fixMermaid:"Fix Mermaid",renderingDiagram:"Rendering diagram...",exportSvg:"Export SVG",exportFailed:"Failed to export diagram",downloadChartAriaLabel:"Download chart"}},validation:{workspaceRequired:"Please enter a workspace path",invalidPath:"Invalid path"},error:{saveWorkspaceFailed:"Failed to save workspace path",readFolderFailed:"Unable to read folder",copyPromptFailed:"Failed to copy prompt content"},success:{promptCopied:'Copied "{{name}}" prompt'}}},Fe=Object.freeze(Object.defineProperty({__proto__:null,enUsTranslation:Re},Symbol.toStringTag,{value:"Module"})),xe={translation:{app:{loading:"加载中...",retry:"重试",backendNotReachable:"无法连接后端 {{baseUrl}}(最近错误:{{message}})",errorBoundary:{title:"出了点问题",description:"此区域发生了意外错误。您可以重试,或者如果问题持续存在,请重新加载页面。",tryAgain:"重试",showDetails:"显示详情",hideDetails:"隐藏详情"},passwordGate:{title:"输入访问密码",description:"进入应用前需要先通过密码验证。",passwordLabel:"访问密码",passwordPlaceholder:"请输入访问密码",submit:"验证并继续",validation:{required:"请输入访问密码",verifyFailed:"密码验证失败"}},notifications:{toolApproval:{title:"需要审批:{{tool}}",genericTitle:"需要审批",body:"工具 {{tool}} 需要您的审批后才能执行",unknownTool:"未知工具"},contextPressure:{title:"上下文即将耗尽"},backgroundTask:{completedTitle:"后台任务完成",completedBody:"「{{title}}」已完成",completedFallback:"一个后台任务已完成",completedToast:"后台命令已结束 — {{command}}({{status}},退出码 {{code}})"},clarification:{title:"Bodhi AI 需要您的回复",fallbackBody:"Agent 需要您回答一个问题"},conversationSummarized:"对话已摘要:压缩了 {{messages}} 条消息,节省了 {{tokens}} 个 token",allTasksCompleted:"所有任务已完成!总轮次:{{rounds}},工具调用:{{toolCalls}}",evaluatingTasks:"正在评估 {{count}} 个任务...",evaluationCompleteUpdated:"评估完成:已更新 {{count}} 个任务。",evaluationCompleteNoUpdates:"评估完成:无需更新"},defaultSessionTitle:"新建会话",skipToContent:"跳转到主内容"},feedback:{helpful:"有帮助",notHelpful:"无帮助"},sessionSummary:{title:"会话摘要"},inspector:{title:"检查器",configuration:"配置"},layout:{showSidebar:"显示侧边栏"},commandPalette:{searchPlaceholder:"搜索会话、设置和快捷操作",navigationHint:"使用 ↑↓ 导航,Enter 打开,Esc 关闭。",empty:"没有匹配的命令",groups:{quickActions:"快捷操作",settings:"系统设置"},badges:{quickAction:"操作",pinned:"置顶",running:"运行中",child:"子会话",childSession:"子会话",rootSession:"会话"},actions:{newSession:"创建新会话",openProviderSettings:"打开 Provider 设置",openMcpSettings:"打开 MCP 设置",openWorkflowSettings:"打开工作流设置",openSessionsSettings:"打开会话监控",openSchedulesSettings:"打开计划任务"},errors:{actionFailed:"命令执行失败"}},common:{cancel:"取消",ok:"确定",apply:"应用",save:"保存",delete:"删除",saveAnyway:"仍然保存",yes:"是",no:"否",home:"主页",parentDirectory:"上级目录",currentPath:"当前路径:",workspace:"工作区",server:"服务器:",category:"类别:",parameters:"参数",approve:"批准",reject:"拒绝",download:"下载",directory:"目录",file:"文件",close:"关闭",clear:"清除"},setup:{welcome:{heading:"欢迎使用 Bodhi",description:"Bodhi 是您的 AI 驱动开发助手。配置一个 AI 提供商即可开始,或直接进入应用。",providerHint:"要开始对话,您需要配置一个 AI 提供商(如 OpenAI、Anthropic)并提供 API 密钥。",proxyHint:"在公司代理后面?您可以稍后在系统设置 > 网络中配置代理。"},button:{getStarted:"开始使用",configureProvider:"配置 Provider"},complete:{title:"一切就绪!",restartMessage:"正在重新加载应用..."},error:{completeFailed:"完成设置失败,请重试。"}},onboarding:{welcome:{title:"欢迎使用 Bodhi!",description:"Bodhi 是您的 AI 驱动开发助手。让我们快速了解一下界面。"},newSession:{title:"新建会话",description:"点击这里开始一个与 AI 助手的新对话。"},taskTemplates:{title:"任务模板",description:"从预置模板中选择,如代码审查、Bug 调查、重构等,快速启动工作。"},modelPicker:{title:"模型选择",description:"随时在此切换 AI 模型和提供商。"},sidebar:{title:"会话侧边栏",description:"在此管理您的会话——搜索、过滤、置顶和切换对话。"},settings:{title:"设置",description:"配置 AI 提供商、代理设置、模型映射、MCP 服务器等。"}},chat:{sidebar:{newSession:"新建会话",createFailedTitle:"创建会话失败",createFailedUnknown:"未知错误",searchPlaceholder:"搜索会话",filters:{all:"全部",pinned:"置顶",running:"运行中",child:"子会话"},empty:{noSessions:"暂无会话",noMatches:"没有匹配的会话",hint:"点击「新建会话」开始",filterHint:"请尝试调整搜索词或筛选条件",clearFilters:"清除筛选"},dateGroups:{today:"今天",yesterday:"昨天",thisWeek:"本周",thisMonth:"本月",pinned:"置顶",scheduled:"计划任务"},actions:{collapseChildren:"折叠子会话",expandChildren:"展开子会话"},delete:{title:"删除会话",confirm:"确定要删除这个会话吗?"},deleteByDate:{title:"删除 {{date}} 的会话",confirm:"确定要删除 {{date}} 的 {{count}} 个会话吗?"},newSessionWithPrompt:"基于 {{prompt}} 的新会话"},workspace:{modalTitle:"设置工作区路径",invalidTitle:"无效的工作区路径",issuesDetected:"检测到工作区路径的潜在问题:",confirmSaveInvalid:"您仍要保存此路径吗?",errorEnterPath:"请输入工作区路径",errorSaveFailed:"保存工作区路径失败",placeholder:"例如:/Users/alice/Workspace/MyProject",label:"工作区",browseFolder:"浏览文件夹",descriptionTitle:"工作区路径描述",descriptionP1:"设置工作区路径后,文件引用和工作区相关工具才能稳定地定位文件。",descriptionP2:"建议选择真实存在的项目目录。即使路径无效也可继续保存,但相关功能可能不可用。",checkTitle:"工作区路径检查",checkDescription:"工作区路径校验失败。",recentTitle:"最近工作区",suggestedTitle:"推荐工作区",noRecentWorkspaces:"暂无最近工作区",noSuggestions:"暂无推荐",defaultWorkspaceName:"工作区",validWorkspace:"工作区有效",fileCount:"{{count}} 个文件",folderSelected:"文件夹选择成功"},folderBrowser:{title:"选择工作区文件夹",selectCurrent:"选择当前文件夹",emptyFolder:"此文件夹为空",tip:"提示:点击文件夹进入,点击「选择当前文件夹」确认",readFolderError:"无法读取文件夹"},input:{placeholder:"发送消息...",placeholderWithReference:"发送消息(包含引用)",placeholderWithWorkflows:"发送消息...(输入 '/' 选择工作流)",toolCallsOnly:"仅工具调用(允许的工具:{{tools}})",autoPrefixMode:"自动前缀模式:{{prefix}}(输入 '/' 选择工具)",toolSpecificMode:"工具特定模式(允许的工具:{{tools}})",processingFiles:"正在处理文件…",dropImagesHere:"将图片拖放到此处",referencing:"引用中",addAttachments:"添加附件",referenceWorkspaceFiles:"引用工作区文件",imageCountSingular:"{{count}} 张图片",imageCountPlural:"{{count}} 张图片",moreImages:"还有 {{count}} 张",clearAllImages:"清除所有图片",charLimitExceeded:"消息超过了最大长度限制 {{max}} 个字符。",messageFormatInvalid:"消息格式不正确",filesAdded:"已添加 {{count}} 个文件",filesAttached:"已附加 {{count}} 个文件",reasoningTitle:"推理强度:{{label}}",reasoning:{low:"低",medium:"中",high:"高",xhigh:"很高",max:"最大"},bypassPermissions:{label:"免确认",onTitle:"已开启「绕过权限」——本会话执行工具时不再请求确认。点击关闭。",offTitle:"「绕过权限」已关闭——高风险工具会请求确认。点击可让本会话跳过确认。",error:"更新绕过权限失败"},strictToolOnlyMode:"严格仅工具模式",toolSpecificModeLabel:"工具特定模式",allowedTools:"允许的工具:",autoPrefixLabel:"自动前缀:{{prefix}}",mustStartWithPrefix:"消息必须以“{{prefix}}”开头"},actions:{regenerate:"重新生成响应",retryFailed:"重试失败的请求",retryOptions:"重试选项",cancelRequest:"取消请求",sendMessage:"发送消息",copyMessage:"复制消息",referenceMessage:"引用消息",unpin:"取消置顶",pin:"置顶",generateTitle:"生成 AI 标题",runProjectDream:"运行 Project Dream",runProjectDreamRunning:"正在运行 Project Dream...",runProjectDreamSuccess:"Project Dream 已更新",runProjectDreamNoChange:"无需更新 Project Dream",runProjectDreamFailed:"运行 Project Dream 失败"},prompt:{selectorTitle:"选择系统提示词",createButton:"创建新会话",helperText:"为 AI 选择一个基础系统提示词。您可以在系统设置中添加或编辑提示词。",emptyDescription:"未找到系统提示词。在系统设置中添加一个。",newSessionSelectorTitle:"为新会话选择系统提示词",defaultDescription:"默认系统提示词。",loadPresetsFailed:"加载预设失败",loadCurrentInfoFailed:"加载当前信息失败",systemCard:{title:"系统提示词",viewEnhanced:"查看增强版",viewBase:"查看基础版",copy:"复制",snapshotTitle:"提示快照",sections:{base:"基础提示",enhancement:"增强层",workspace:"工作区",instruction:"指令层",env:"环境变量",skills:"技能",toolGuide:"工具指引",dream:"Dream Notebook",sessionMemory:"会话记忆",externalMemory:"记忆层",taskList:"任务列表",effective:"最终提示词"}}},fileReference:{title:"@ 文件引用",setWorkspace:"设置工作区",noMatches:"未找到匹配的文件",emptyDirectory:"目录为空"},imagePreview:{counter:"第 {{current}} / {{total}} 张"},filePreview:{fileCount_one:"{{count}} 个文件",fileCount_other:"{{count}} 个文件"},commandSelector:{loading:"正在加载命令...",emptyWithSearch:"没有匹配“{{search}}”的命令",empty:"暂无可用命令。",navigationHint:"导航:上下键 或 Ctrl+P/N | 选择:Enter | 补全:Space/Tab | 取消:Esc",types:{workflow:"工作流",skill:"技能",mcp:"MCP",goal:"目标"}},model:{selectModel:"选择模型",noModelSelected:"未选择模型",selectModelHint:"请选择一个模型后再开始对话。",providerNotConfigured:"提供商未配置",configureProviderHint:"请先在设置中配置提供商,然后再选择模型。",configureProvider:"配置提供商",openSettings:"打开设置",noModelsAvailable:"暂无可用模型",selectModelBeforeSend:"发送前请先选择模型。",selectModelBeforeRetry:"重试前请先选择模型。"},streaming:{assistant:"Bodhi",requestCancelled:"请求已取消",sendFailed:"发送消息失败",retryFailed:"重试请求失败",modelConfigNotLoaded:"模型配置尚未加载",agentUnavailable:"智能体不可用",noActiveChatTitle:"没有活动会话",noActiveChatSendContent:"发送前请先创建或选择一个会话。",noActiveChatRetryContent:"重试前请先创建或选择一个会话。",noChatIdTitle:"缺少会话 ID",noChatIdSendContent:"当前会话缺少 ID,请新建会话后再试。",noChatIdRetryContent:"当前会话缺少 ID,请新建会话后重试。"},selectionToolbar:{selectMessages:"选择消息",selectedCount:"已选择 {{selected}} 条(共 {{total}} 条)",selectAll:"全选",clear:"清空",exportMarkdown:"导出 Markdown",exportPdf:"导出 PDF",done:"完成"},scroll:{jumpToTop:"回到顶部",backToLatest:"回到最新消息",newMessages:"有新消息",newMessagesWithCount:"有 {{count}} 条新消息"},compression:{tag:"已压缩上下文",timelineDetail:"已归档 {{count}} 条消息",timelineAria:"{{time}},{{detail}}",tooltip:"最近一次压缩:{{time}},已归档 {{count}} 条消息",archivedShort:"已归档 {{count}} 条"},contextBar:{workspace:"工作区",workspaceTooltip:"工作区上下文:{{path}}",files:"文件",fileRefsTooltip:"当前会话中有 {{count}} 个文件引用",prompt:"提示词",promptTooltip:"系统提示词:{{name}}",summary:"摘要",summaryTooltip:"对话摘要贡献了 {{tokens}} 个 tokens,并且已有 {{count}} 次压缩归档了较早消息。",promptCache:"Prompt 缓存",promptCacheTooltip:"{{count}} 个工具输出已被压缩为 prompt 侧缓存摘要,共节省 {{tokens}} 个 tokens。"},machine:{label:"机器",tooltip:"运行于 {{kind}} · {{host}}"},subAgents:{title:"子代理",expand:"展开",collapse:"收起",continue:"在此继续",open:"打开",retry:"重试",hiddenHint:"已隐藏 {{count}} 个子代理",headerCount:"({{active}} 活跃 / {{total}})",completedGroup:"已完成 ({{count}})",noActive:"暂无活跃子代理",previewHint:"悬停查看输出",residentGroup:"常驻代理 ({{count}})",residentBadge:"常驻",runChildFailed:"运行子会话失败",continueChildFailed:"继续子会话失败",fallbackTitle:"子代理",statusRunning:"运行中",statusCompleted:"已完成",statusPending:"等待中",statusError:"错误",statusCancelled:"已取消",steeredLive:"已实时转向运行中的子代理",queuedNextTurn:"已排队,下一轮生效",statusFailed:"失败",pinned:"已固定",heartbeat:"心跳",round:"轮次",summaryCompleted:"{{count}} 已完成",summaryRunning:"{{count}} 运行中",summaryPending:"{{count}} 等待中",summaryFailed:"{{count}} 失败",previewExpand:"展开",previewOpenSession:"进入会话",previewClose:"关闭"},chatItem:{edit:"编辑",childTag:"子会话"},systemPromptSelector:{defaultTag:"默认",hide:"隐藏",preview:"预览",copy:"复制",lines:"{{count}} 行",words:"{{count}} 词",chars:"{{count}} 字",noContent:"无内容"},title:{updated:"会话标题已更新",generateFailed:"生成会话标题失败"},respond:{customAnswerPlaceholder:"输入你的自定义回答..."},emptyLauncher:{title:"从任务开始",subtitle:"在当前分栏中创建一个聚焦会话,并先预填第一条消息,再由你决定是否发送。",hint:"不会自动发送,你可以先编辑提示词。",actions:{blank:{title:"空白会话",description:"使用默认助手从零开始,并保留空白输入框。",sessionTitle:"新建会话",prefill:""},codeReview:{title:"代码评审",description:"打开一个面向评审的会话,并预填可编辑的评审说明。",sessionTitle:"代码评审",prefill:"请审查这个工作区或仓库中的相关代码变更。先概述范围,再列出风险点、关键 diff,以及最值得优先修复的问题。"},tokenUsage:{title:"Token 使用调查",description:"诊断上下文膨胀、截断风险和 token 预算压力。",sessionTitle:"Token 使用调查",prefill:"请帮我分析这个会话或工作流的 token 使用、上下文增长和截断风险,归纳主要原因,并给出下一步最具体的优化建议。"}},errors:{createFailed:"创建会话失败"}},multiPane:{splitHorizontal:"水平拆分",splitVertical:"垂直拆分",closePane:"关闭分栏",selectSessionHint:"请选择一个会话查看消息",hoverToSplitHint:"将鼠标悬停在分栏上可进行拆分对比",selectMessagesToExport:"请选择要导出的消息"},messageCard:{authRequired:"需要身份验证",goToSettings:"前往设置",assistantThinking:"助手正在思考...",assistantCompactingContext:"助手正在压缩上下文...",assistantCompactingContextDegraded:"助手正在压缩上下文(降级模式)...",assistantCompactingContextFailed:"助手压缩上下文失败,继续处理中...",assistantUpdatingMemory:"助手正在更新记忆...",assistantRunningTool:"助手正在运行 {{tool}}...",reasoning:"推理",selected:"已选中",selectedTool:"已选工具"},messageActions:{copy:"复制",exportMarkdown:"导出 Markdown",exportPdf:"导出 PDF",restoreChat:"仅恢复会话",restoreFilesAndChat:"恢复文件和会话",deleteMessage:"删除消息",deleteFailed:"删除消息失败",deleteNotFound:"后端中找不到该消息,请刷新后重试",deleteConflict:"会话正在运行,请先停止后再删除",deleteBatchFailed:"共 {{total}} 条中有 {{failed}} 条删除失败",savedFile:"已保存到 {{filename}}",nothingToExport:"没有可导出的内容",exportFailed:"导出失败",cannotRestore:"无法恢复这条消息",restorePartial:"会话已恢复,但有 {{count}} 个文件未能恢复。",restoreFilesSuccess:"文件和会话已恢复(移除 {{count}} 条消息)。",restoreSuccess:"会话已恢复(移除 {{count}} 条消息)。",restoreFailed:"恢复会话失败",pdfUnavailable:"当前环境不支持导出 PDF",exportingPdf:"正在导出 PDF..."},session:{defaultTitle:"新建会话"},view:{roleUser:"你",roleAssistant:"助手",roleSystem:"系统",roleDefault:"消息",exportSaved:"已保存:{{filename}}",providerNotConfigured:"请先配置供应商",unknownError:"未知错误",workspacePathEmpty:"工作区路径不能为空",brandName:"Bodhi",subTitleUser:"提示词",chatMessagesAria:"聊天消息",aiRespondingAria:"AI 正在回复",noExportableMessages:"没有可导出的消息",noActiveChat:"没有活跃的对话",selectAtLeastOneMessage:"请至少选择一条消息"},statusRail:{idle:"就绪",thinking:"思考中…",runningTools:"正在调用工具…",waitingAnswer:"等待您的回答",runningChildren:"正在运行子代理…",completed:"已完成",error:"错误",childrenTooltip:"{{running}} 个子代理运行中"},systemPrompt:{preparing:"系统提示词正在准备中..."},home:{running:"运行中",justNow:"刚刚",minutesAgo:"{{count}}分钟前",hoursAgo:"{{count}}小时前",daysAgo:"{{count}}天前"}},settings:{page:{back:"返回",title:"系统设置",tabs:{config:"配置",prompts:"提示词",mermaid:"Mermaid",skills:"技能",workflows:"工作流",mcp:"MCP",modelLimits:"模型限制",metrics:"指标",schedules:"调度",sessions:"会话",app:"应用",provider:"提供商",hooks:"Hooks",permissions:"权限",masking:"脱敏",envVars:"环境变量",clusters:"集群",notifications:"通知"},groups:{ai:"AI",toolsAndExtensions:"工具与扩展",securityAndPrivacy:"安全",deployment:"部署",monitoring:"监控",system:"系统"}},notifications:{deleteAllSuccess:"已删除所有会话(置顶除外)",deleteEmptySuccess:"已删除空会话(置顶除外)",localStorageCleared:"本地存储已清空",resetSuccessReloading:"应用重置成功,正在重新加载...",resetFailed:"重置应用失败",promptEnhancementSaved:"系统提示增强已保存"},appTab:{switchOn:"开",switchOff:"关",darkMode:"深色模式",vdiSafeMode:"图形兼容模式",vdiSafeModeDesc:"禁用模糊和玻璃效果,这些效果在某些虚拟桌面、远程或图形受限的环境中可能导致下拉菜单和悬浮层异常。",vdiSafeModeEnabled:"已启用图形兼容模式",vdiSafeModeDisabled:"已关闭图形兼容模式",darkModeDark:"深色",darkModeLight:"浅色",language:"语言",languageEnglish:"English",languageChinese:"简体中文",languageTraditionalChinese:"繁體中文",languageFrench:"Français",languageJapanese:"日本語",languageHindi:"हिन्दी",deleteAllTitle:"删除所有会话",deleteAllDescription:"确认删除?将删除所有会话(置顶除外)。",deleteAllButton:"删除所有会话",deleteEmptyTitle:"删除空会话",deleteEmptyDescription:"确认删除?将删除没有消息内容的会话(置顶除外)。",deleteEmptyButton:"删除空会话",clearLocalStorageTitle:"清空本地存储",clearLocalStorageDescription:"确认清空?将删除所有本地存储数据并重置应用。",clearLocalStorageButton:"清空本地存储",confirmDeleteAll:"确认,全部删除",confirmDeleteEmpty:"确认,删除空会话",confirmClear:"确认,清空",cancel:"取消",dangerZone:"危险操作",dangerDescription:"以下操作不可撤销,所有数据将被永久删除。",resetApplicationTitle:"重置应用",resetApplicationIntro:"确认执行以下操作:",resetStepDeleteAllSessions:"删除所有会话(包括置顶)",resetStepClearStorage:"清空所有本地存储数据",resetStepResetConfig:"将 config.json 重置为默认值",resetStepSetupFlow:"下次启动时触发初始化流程",resetStepReplayGuide:"重播功能引导",resetStepReload:"重新加载应用",resetConfirm:"确认,重置全部",resetButton:"重置应用(清空全部数据)",runningVersion:"运行版本",runningVersionDesc:"当前运行的 Lotus 前端版本。"},configTab:{tabs:{general:"常规",tools:"工具"},loadConfigFailed:"加载配置失败",invalidConfig:"配置无效",saveConfigSuccess:"配置保存成功",saveConfigFailed:"保存配置失败",toolsLoadFailed:"加载可用工具失败",toolsReloadSuccess:"工具列表已刷新",toolsSaveSuccess:"工具设置保存成功",toolsSaveFailed:"保存工具设置失败",backendSaved:"后端地址已保存",backendResetDefault:"后端地址已重置为默认值",backendUrlEmpty:"后端地址不能为空",backendUrlInvalidProtocol:"后端地址必须以 http:// 或 https:// 开头",backendUrlInvalidUrl:"后端地址不是有效的 URL",backendUrlMustEndWithV1:'后端地址必须以 "/v1" 结尾',providerMovedTitle:"Provider 配置已迁移",providerMovedDescription:"GitHub Copilot 和其他 Provider 配置已迁移到 Provider Settings 标签页,请前往那里进行配置。",backendApiBaseUrlTitle:"后端 API 基础地址",backendApiPlaceholder:"http://127.0.0.1:9562/v1",backendApiHint:"必须包含 /v1 路径",accessPasswordTitle:"访问密码",accessPassword:{helperNotEnabled:"未设置访问密码。设置后,远程访问需要先输入密码,本地 loopback 访问可直接绕过。",helperLocalBypass:"当前是本地访问,可直接修改访问密码,无需输入当前密码。",helperRemote:"当前是远程访问。修改访问密码前,必须先输入当前密码。",loadStatusFailed:"加载访问状态失败",updated:"访问密码已更新",enabled:"访问密码已设置",updateFailed:"更新访问密码失败",statusEnabled:"访问密码已启用",statusDisabled:"访问密码未启用",currentPasswordLabel:"当前密码",newPasswordLabel:"新密码",setPasswordLabel:"设置密码",confirmPasswordLabel:"确认密码",updateAction:"更新访问密码",enableAction:"启用访问密码",validation:{currentPasswordRequired:"请输入当前密码",newPasswordRequired:"请输入新密码",confirmPasswordRequired:"请再次输入新密码",minLength:"密码长度至少 4 位",passwordMismatch:"两次输入的密码不一致"}},resetToDefault:"恢复默认",save:"保存",language:"语言",languageEnglish:"English",languageChinese:"简体中文",languageTraditionalChinese:"繁體中文",languageFrench:"Français",languageJapanese:"日本語",languageHindi:"हिन्दी",toolsTitle:"工具可用性",toolsDescription:"控制每个工具是否可以发送给 AI 模型。关闭后,该工具不会出现在模型可用工具列表中。",subagentsTitle:"子代理 (Sub-agents)",subagentsDescription:"主代理派生的子代理均以独立的操作系统 Actor 进程运行:崩溃隔离、真并行、可独立取消。",subagentMaxConcurrent:"最大并发 Actor 数",subagentMaxConcurrentHint:"同时运行的 actor 进程上限,超出的派生请求排队等待。留空使用默认值(8)。",memoryTitle:"Memory 与 Auto Dream",memoryDescription:"管理 Bamboo 的记忆层:会话记忆用于当前工作连续性,长期记忆用于沉淀 durable knowledge,而 Auto Dream 负责在后台更新 Dream Notebook 并提取长期记忆候选项。",autoDreamEnabled:"启用 Auto Dream",autoDreamEnabledHint:"在后台自动维护 Dream Notebook,并提取长期记忆候选项。",memoryModelMovedTitle:"记忆模型已迁移到 Provider Settings",memoryModelMovedDescription:"记忆背景模型现在统一在 Provider Settings 的 Model Preferences 中配置,这里保留 Auto Dream 作为系统级开关。",backgroundModel:"后台记忆模型",backgroundModelPlaceholder:"留空则使用当前 Provider 的 fast model",backgroundModelHint:"可选的专用 memory summarization / reflection 模型。若留空,Bamboo 会回退到当前 Provider 的 fast model。",toolsEmpty:"当前没有可用工具。",reloadTools:"刷新工具列表",loadBambooConfigFailed:"加载 Bamboo 配置失败",bambooConfigSaved:"Bamboo 配置已保存",saveBambooConfigFailed:"保存 Bamboo 配置失败"},networkCard:{title:"网络设置",guideTip:"如果您在公司代理后面,可以在此配置 HTTP/HTTPS 代理和凭据。",httpProxy:"HTTP 代理",httpsProxy:"HTTPS 代理",proxyPlaceholder:"http://proxy.example.com:8080",proxyAuthTitle:"代理认证",proxyConfiguredForUser:"已为用户 {{username}} 配置认证",clearCredentials:"清除凭据",username:"用户名",password:"密码",apply:"应用",credentialsStorageNote:"代理凭据会加密存储在 ~/.bamboo/config.json",reload:"重新加载",save:"保存"},modelMappingCard:{loadProviderFailed:"加载 Provider 配置失败",loadMappingsFailed:"加载现有映射失败",loadModelsFailed:"加载模型失败",loadModelsHint:"加载模型失败,请检查 Provider 配置。",mappingSaved:"模型映射已保存",mappingSaveFailed:"保存模型映射失败",enterModelName:"请输入模型名称",customMappingSaved:"自定义模型映射已保存",customMappingSaveFailed:"保存自定义模型映射失败",collapseTitle:"Anthropic 模型映射",description:"配置当 Claude CLI 请求特定模型时,应该使用的 {{provider}} 模型。",loadModelsErrorTitle:"加载模型失败",retry:"重试",loadingModels:"模型加载中...",modelTypeOpus:"Opus",modelTypeOpusDescription:'匹配包含 "opus" 的模型',modelTypeSonnet:"Sonnet",modelTypeSonnetDescription:'匹配包含 "sonnet" 的模型',modelTypeHaiku:"Haiku",modelTypeHaikuDescription:'匹配包含 "haiku" 的模型',selectModelPlaceholder:"选择 {{label}} 模型",customModelOption:"自定义模型...",mappedModelNotFound:'映射模型 "{{model}}" 不在当前 Provider 的可用模型列表中',refreshModels:"刷新模型",currentProvider:"当前 Provider",loadingProvider:"加载中...",availableModels:"可用模型数量",cached:"(缓存)",storedIn:"存储位置",customModalTitle:"输入自定义模型名称",customModalDescription:"为 {{modelType}} 输入自定义模型名称",customModalPlaceholder:"例如:gpt-4-turbo-preview",customModalNote:"注意:请确认该模型名称对当前 Provider 有效。",save:"保存",cancel:"取消"},modelTab:{selectModelTitle:"选择模型",loadingModels:"正在加载模型...",selectModelPlaceholder:"请选择模型",backendApiBaseUrlTitle:"后端 API 基础地址",resetToDefault:"恢复默认",save:"保存",backendApiHint:"必须是包含 /v1 的完整基础地址(例如 {{example}})。"},mermaidTab:{title:"Mermaid 图表设置",description:"自定义 Mermaid 图在聊天中的渲染方式",themeCardTitle:"主题",themeLabel:"Mermaid 主题",themeTooltip:"选择内置 Mermaid 主题。Default 和 Neutral 会根据应用主题自动切换明暗。",themeOptions:{default:"Default(自动明/暗)",neutral:"Neutral(自动明/暗)",dark:"Dark",forest:"Forest(绿色调)",base:"Base(极简)"},themeDescriptionsTitle:"主题说明:",themeDescriptions:{default:"Default:经典 Mermaid 风格,自动适配明/暗主题",neutral:"Neutral:灰度风格,自动适配明/暗主题",dark:"Dark:始终使用暗色主题",forest:"Forest:绿色配色,适合技术图表",base:"Base:最小化样式,适合自定义主题"},globalCardTitle:"全局设置",fontSizeLabel:"字体大小",fontSizeTooltip:"图表文本的基础字号(像素)",defaultZoomLabel:"默认缩放",defaultZoomTooltip:"图表初始缩放比例(1.0 = 100%)",responsiveWidthLabel:"自适应宽度",responsiveWidthTooltip:"开启后图表会自适应容器宽度;关闭后使用固定宽度。",switchAuto:"自动",switchFixed:"固定",flowchartCardTitle:"流程图设置",flowchartNodeSpacingLabel:"节点间距",flowchartNodeSpacingTooltip:"节点之间的水平间距",flowchartRankSpacingLabel:"层级间距",flowchartRankSpacingTooltip:"层与层之间的垂直间距",flowchartCurveTypeLabel:"连线类型",flowchartCurveTypeTooltip:"连接线使用的曲线类型",flowchartCurveOptions:{basis:"平滑(Basis)",linear:"线性",cardinal:"Cardinal"},sequenceCardTitle:"时序图设置",sequenceActorMarginLabel:"参与者间距",sequenceActorMarginTooltip:"参与者之间的间距",sequenceMessageMarginLabel:"消息间距",sequenceMessageMarginTooltip:"消息之间的间距",sequenceActorWidthLabel:"参与者宽度",sequenceActorWidthTooltip:"每个参与者框的宽度",sequenceActorHeightLabel:"参与者高度",sequenceActorHeightTooltip:"每个参与者框的高度",ganttCardTitle:"甘特图设置",ganttBarHeightLabel:"任务条高度",ganttBarHeightTooltip:"每个任务条的高度",ganttTopPaddingLabel:"顶部留白",ganttTopPaddingTooltip:"图表顶部的留白间距",resetToDefaults:"恢复默认",previewTitle:"预览",previewDescription:"修改会立即生效。可新建或查看图表以查看效果。"},modelLimits:{title:"Token 预算模型限制",descriptionPrefix:"为特定模型覆盖 token 预算;未覆盖的模型使用全局默认值。",descriptionSuffix:"保存后全局生效,由后端解析器使用。",defaultsTitle:"你用过的模型",defaultsDescription:"你在对话中选择并使用过的模型会自动出现在这里。未自定义前都使用全局默认值。",globalDefault:"全局默认:{{context}} 上下文 / {{output}} 输出 token。",emptyState:"暂无模型。你在对话中选择并使用过的模型会自动出现在这里。",loadFailed:"加载模型限制设置失败",saveSuccess:"模型限制已保存",saveFailed:"保存模型限制设置失败",resetSuccess:"已重置——所有模型现在都使用全局默认值",resetFailed:"重置模型限制设置失败",badge:{default:"默认 · 未修改",defaultTooltip:"正在使用全局默认值。未修改的行会自动跟随后续默认值更新。",customized:"已自定义"},columns:{model:"模型",contextWindow:"上下文窗口",maxOutput:"最大输出",safetyMargin:"安全边距",status:"状态",actions:"操作"},placeholders:{model:"例如 gpt-4o",optional:"可选"},actions:{customize:"自定义",revert:"恢复默认",remove:"删除",addModel:"新增模型",save:"保存",resetToDefaults:"全部恢复默认",reload:"重新加载"},validation:{modelPatternEmpty:"模型模式不能为空。",duplicateModelPattern:"模型模式重复:{{pattern}}",contextWindowMin:"{{pattern}} 的上下文窗口最小为 1000。",maxOutputMin:"{{pattern}} 的最大输出最小为 1。",maxOutputExceedsContext:"{{pattern}} 的最大输出必须小于或等于上下文窗口。",safetyMarginNegative:"{{pattern}} 的安全边距不能为负数。",safetyMarginTooLarge:"{{pattern}} 的安全边距必须小于上下文窗口。"}},common:{loading:"加载中...",successful:"成功",failed:"失败"},systemPromptManager:{title:"系统提示词管理",addButton:"添加提示词",defaultPromptLocked:"默认系统提示词已锁定,无法编辑。",updateSuccess:"提示词更新成功",addSuccess:"提示词添加成功",saveError:"保存提示词失败,请重试。",deleteSuccess:"提示词删除成功",deleteError:"删除提示词失败,请重试。",deleteConfirm:"确认删除此提示词吗?",defaultTag:"默认(锁定)",editTitle:"编辑系统提示词",addTitle:"新增系统提示词",nameLabel:"提示词名称",nameRequired:"请输入提示词名称!",descriptionLabel:"提示词描述",descriptionRequired:"请输入提示词描述!",contentLabel:"提示词内容",contentRequired:"请输入提示词内容!"},envVars:{title:"环境变量",description:"这些变量会注入到 Bash 工具进程。密钥变量会在存储时加密。",fetchError:"加载环境变量失败",created:"变量已创建",updated:"变量已更新",saveError:"保存变量失败",deleted:"变量已删除",deleteError:"删除变量失败",addButton:"添加变量",noVars:"尚未配置环境变量",addTitle:"添加环境变量",editTitle:"编辑变量",save:"保存",cancel:"取消",name:"名称",nameRequired:"变量名不能为空",nameInvalid:"必须以字母或下划线开头,后续仅可包含字母、数字或下划线",value:"值",valueRequired:"新建变量时必须填写值",valueEditHint:"留空则保留现有值",valuePlaceholder:"输入值",valuePlaceholderEdit:"输入新值或留空",secret:"密钥",secretHint:"密钥变量会加密存储,并在界面中脱敏显示",descriptionField:"说明",descriptionPlaceholder:"可选说明",type:"类型",plain:"普通",descriptionCol:"说明",actions:"操作",deleteConfirm:"确认删除该变量?",yes:"是",no:"否",notSet:"(未设置)",empty:"(空)"},promptsTab:{title:"系统提示增强",mermaidEnhancement:"Mermaid 增强",taskListRules:"共享任务规则",copilotConclusionWithOptionsBeforeFinish:"Copilot 结束前 conclusion_with_options",switchOn:"开",switchOff:"关",enhancementPlaceholder:"为每次系统提示追加全局增强文本。",saveEnhancement:"保存增强",description:"该文本会先追加,然后再拼接已启用的系统增强,最后再发送请求。"},hooksTab:{title:"图像 Hooks",enableImagePreflight:"启用图像预检 Hook",modeLabel:"模式",description:"Placeholder 模式会把图像改写为文本摘要(可能影响依赖真实图像数据的工具)。OCR 目前仅支持 Windows。",loadFailed:"加载 Hooks 设置失败",updateFailed:"更新 Hooks 失败",modeUpdateFailed:"更新 Hook 模式失败",enabled:"已启用图像 Hooks",disabled:"已禁用图像 Hooks",modeUpdated:"图像 Hook 模式已设置为:{{mode}}",mode:{placeholder:"占位符",error:"报错",ocr:"OCR(Windows)",vision:"视觉描述(LLM)"}},permissionsTab:{title:"强制确认命令",description:"匹配这些规则的工具调用会始终请求你确认——即使会话开启了「绕过权限」。内置的高危 shell 命令检测(代码注入、写入敏感路径)始终生效;这里用于补充删除、推送等破坏性命令。语法:Tool(pattern),例如 Bash(rm -rf *)、Bash(git push *)、Write(/etc/**)。",placeholder:"例如 Bash(rm -rf *)",add:"添加规则",remove:"删除规则",examples:"快速添加:",empty:"暂无强制确认规则。内置高危命令检测仍然生效。",duplicate:"该规则已存在。",loadFailed:"加载权限规则失败",saveSuccess:"权限规则已保存",saveFailed:"保存权限规则失败"},keywordMaskingTab:{title:"关键词脱敏",addKeyword:"添加关键词",description:"配置发送到 Copilot API 前需要脱敏的关键词。可使用精确匹配或正则匹配,匹配内容会被替换为 [MASKED]。",empty:"暂无关键词脱敏规则",cancel:"取消",patternPlaceholder:"输入要匹配的模式",examples:"示例",exactMatch:"精确匹配",regexPattern:"正则模式",enabled:"启用",disabled:"禁用",sampleText:"示例文本",sampleTextPlaceholder:"输入示例文本",maskedPreview:"脱敏预览",emptyPattern:"(空)",loadFailed:"加载关键词脱敏配置失败",saveFailed:"保存配置失败",saveSuccess:"关键词脱敏配置已保存",validationFailedPrefix:"校验失败",patternRequired:"匹配模式不能为空",invalidRegexPattern:"无效的正则表达式模式",example:{literalToken:"脱敏字面量 token",githubTokens:"脱敏 GitHub token",awsKeys:"脱敏 AWS Key",emails:"脱敏邮箱地址"}},schedulesTab:{loadFailed:"加载调度失败",loadSessionsFailed:"加载调度会话失败",createFailed:"创建调度失败",updateFailed:"更新调度失败",deleteFailed:"删除调度失败",runNowFailed:"立即执行失败",taskMessageRequired:"启用自动执行时必须填写任务消息",created:"调度已创建",updated:"调度已更新",deleted:"调度已删除",enqueuedRun:"已加入执行队列",loading:"加载中...",yes:"是",no:"否",optional:"(可选)",defaultName:"我的调度",createTitle:"创建调度",listTitle:"调度列表",scheduleSessionsTitle:"调度会话",scheduleRunsTitle:"调度运行历史",noSessionsYet:"暂无会话。",noRunsYet:"暂无运行记录。",loadRunsFailed:"加载调度运行记录失败",editTitle:"编辑调度",nonIntervalReadOnly:"仅间隔触发器支持快速间隔编辑。",columns:{name:"名称",status:"状态",activity:"活动",autoExecute:"自动执行",model:"模型",enabled:"启用",intervalSeconds:"间隔(秒)",nextRun:"下次运行",lastRun:"最近运行",actions:"操作"},triggerTypes:{interval:"间隔",daily:"每天",weekly:"每周",monthly:"每月",cron:"Cron"},misfirePolicyOptions:{runOnce:"执行一次",skip:"跳过",catchUpAll:"补执行全部",catchUpWindow:"补执行窗口"},overlapPolicyOptions:{queueOne:"排队一个",skip:"跳过重叠运行",allow:"允许重叠"},form:{name:"名称",triggerType:"触发类型",intervalSeconds:"间隔秒数",dailyHour:"小时",dailyMinute:"分钟",weeklyWeekdays:"工作日",monthlyDays:"月份天数",monthlyDaysPlaceholder:"例如 1, 15, 28",cronExpr:"Cron 表达式",cronExprPlaceholder:"例如 0 9 * * 1-5",timezone:"时区",timezonePlaceholder:"例如 Asia/Shanghai",startAt:"开始时间",endAt:"结束时间",datetimePlaceholder:"RFC3339 格式,例如 2026-04-05T09:00:00Z",misfirePolicy:"错过策略",overlapPolicy:"重叠策略",catchUpWindowMaxRuns:"补执行最大运行次数",catchUpWindowMaxLatenessSeconds:"补执行最大延迟(秒)",enabled:"启用",taskMessage:"任务消息",taskMessagePlaceholder:"(可选)要执行的任务",model:"模型",modelPlaceholder:"(可选)例如 gpt-4o-mini",modelRequiredIfAuto:"启用自动执行时必填",autoExecute:"自动执行",systemPrompt:"系统提示词",workspacePath:"工作区路径",enhancePrompt:"增强提示"},validation:{nameRequired:"名称不能为空",triggerRequired:"触发配置不能为空",intervalRequired:"间隔不能为空",weekdaysRequired:"至少选择一个工作日",monthDaysRequired:"至少选择一个月份天数",invalidMonthDays:"月份天数必须是 1-31 之间的逗号分隔值",cronRequired:"Cron 表达式不能为空"},actions:{create:"创建",refresh:"刷新",edit:"编辑",runNow:"立即执行",sessions:"会话",runs:"运行记录",delete:"删除",open:"打开",save:"保存"},runHistory:{columns:{status:"状态",scheduledFor:"计划时间",startedAt:"开始时间",completedAt:"完成时间",session:"会话",duration:"耗时",outcome:"结果"}},weekdays:{mon:"周一",tue:"周二",wed:"周三",thu:"周四",fri:"周五",sat:"周六",sun:"周日"},triggerLabels:{interval:"{{type}} · {{seconds}}s",daily:"{{type}} · {{time}}",weekly:"{{type}} · {{weekdays}}",monthly:"{{type}} · {{days}}",cron:"{{type}} · {{expr}}"},statusLabels:{running:"运行中",queued:"排队中",failing:"失败中",disabled:"已禁用",healthy:"正常",idle:"空闲"},statusDetails:{active:"{{count}} 个活跃",pending:"{{count}} 个等待",consecutiveFailures:"连续 {{count}} 次失败",lastRunSucceeded:"上次运行成功"},activityLabels:{queued:"排队: {{count}}",running:"运行: {{count}}",ok:"成功: {{count}}",fail:"失败: {{count}}"}},sessionsTab:{currentSessionTitle:"当前会话",id:"ID",kind:"类型",clearMessages:"清空消息",clearMessagesTitle:"清空会话消息",clearMessagesContent:"将清空当前会话的消息/附件,但保留会话条目。",clear:"清空",cancel:"取消",sessionCleared:"会话已清空",noActiveSession:"当前没有活跃会话。",bulkCleanupTitle:"批量清理",keepPinned:"保留置顶",deleteAll:"删除全部",deleteAllTitle:"删除所有会话",deleteAllKeepPinned:"删除所有会话(保留置顶)。",deleteAllIncludePinned:"删除所有会话(包含置顶)。",deleteEmpty:"删除空会话",deleteEmptyTitle:"删除空会话",deleteEmptyKeepPinned:"删除空会话(保留置顶)。",deleteEmptyIncludePinned:"删除空会话(包含置顶)。",deleteChildren:"删除子会话",deleteChildrenTitle:"删除子会话",deleteChildrenKeepPinned:"删除所有子会话(保留置顶)。",deleteChildrenIncludePinned:"删除所有子会话(包含置顶)。",delete:"删除",cleanupComplete:"清理完成",devResetTitle:"开发重置",devResetDescription:"会话存储绿地重置(删除 sessions/ 并重置 sessions.json)。",devResetAction:"开发重置会话",devResetConfirmTitle:"重置会话存储(开发)",devResetConfirmContent:"将删除所有会话(包含置顶/子会话)并重置会话索引。刷新后会创建一个新的空会话。",reset:"重置",devResetDone:"会话存储已重置"},workflowsTab:{title:"工作流",description:"工作流会以 Markdown 文件存储在 `~/.bamboo/workflows`。可在聊天中使用 `/name` 插入工作流。",loadFailed:"加载工作流失败",loadContentFailed:"加载工作流内容失败",invalidName:"工作流名称不合法",nameAlreadyExists:"同名工作流已存在",saved:"工作流已保存",saveFailed:"保存工作流失败",deleted:"工作流已删除",deleteFailed:"删除工作流失败",refresh:"刷新",newWorkflow:"新建工作流",save:"保存",empty:"暂无工作流",namePlaceholder:"工作流名称",contentPlaceholder:`# 工作流标题
|
|
10
|
+
Describe the workflow steps here.`},providerTab:{title:"LLM Provider Configuration",description:'Configure your preferred LLM provider. Configuration will be saved and applied when you click "Save and Apply Configuration".',currentProvider:"Current Provider",activeProvider:"Active LLM Provider",selectProviderRequired:"Please select a provider",saveAndApply:"Save and Apply Configuration",loadConfigFailed:"Failed to load provider config",checkStatusFailed:"Failed to check status",startCopilotAuthFailed:"Failed to start Copilot authentication",copilotAuthSuccess:"Copilot authentication successful!",providerReloaded:"Provider reloaded with new authentication.",completeAuthFailed:"Authentication completion failed. Please try again.",userCodeCopied:"User code copied to clipboard!",copyCodeFailedPrefix:"Failed to copy code. Please manually copy:",logoutSuccess:"Logged out from Copilot",logoutFailed:"Failed to logout from Copilot",unknownError:"Unknown error",invalidConfig:"Invalid configuration",invalidConfigPrefix:"Invalid configuration",invalidRequestOverridesJson:"Invalid request_overrides JSON for {{provider}}: {{error}}",copilotAuth:"GitHub Copilot Authentication",authStatus:"Status:",authenticated:"Authenticated",notAuthenticated:"Not Authenticated",unknown:"Unknown",refreshStatus:"Refresh",copilotAuthHelp:"Copilot requires OAuth authentication. Click the button below to start the Device Code Flow.",authenticateCopilot:"Authenticate Copilot",fetchModelsCopilotFailed:"Failed to fetch models. Please authenticate Copilot and try again.",fetchModelsFailed:"Failed to fetch models. Please check your API key and base URL.",noModelsReturned:"No models returned. Authenticate Copilot first, then fetch models.",foundModels:"Found {{count}} available models",fetchModelsErrorPrefix:"Failed to fetch models",saveConfigSuccess:"Configuration saved successfully",saveConfigFailed:"Failed to save configuration",saveConfigErrorPrefix:"Failed to save configuration",applyConfigSuccess:"Configuration applied successfully. Changes will take effect for new conversations.",applyConfigFailed:"Failed to apply configuration",applyConfigErrorPrefix:"Failed to apply configuration",modelUpdated:"Model updated successfully",updateModelFailed:"Failed to update model",updateModelErrorPrefix:"Failed to update model",fetchingModels:"Fetching models...",refreshModelsFrom:"Refresh available models from {{source}}",fetchModelsFrom:"Fetch available models from {{source}}",saveModelChangeFailed:"Failed to save model change",fetchModelsFailedShort:"Failed to fetch models",retry:"Retry",openaiConfigTitle:"OpenAI Configuration",openaiConfigDescription:"Enter your OpenAI API key to use GPT models. You can optionally specify a custom base URL for proxy servers.",openaiApiKey:"OpenAI API Key",openaiApiKeyRequired:"Please enter your OpenAI API key",openaiApiKeyPlaceholder:"sk-...",baseUrlOptional:"Base URL (Optional)",openaiBaseUrlPlaceholder:"https://api.openai.com/v1",openaiBaseUrlHelp:"Leave empty to use the default OpenAI API endpoint. Include full path (e.g., /v1) if needed.",defaultModel:"Default Model",modelPreferences:"Model Preferences",fastModel:"Fast Model (Optional)",fastModelHelp:"Cheaper/faster model for lightweight tasks like title generation, mermaid fix, and summarization. Uses default model when not set.",taskSummaryModel:"Task Summary Model (Optional)",taskSummaryModelHelp:"Dedicated model for task-oriented summarization and conversation compression. Falls back to Memory Background Model, then Fast Model, then the default model.",memoryBackgroundModel:"Memory Background Model (Optional)",memoryBackgroundModelHelp:"Dedicated model for memory reranking, recall background work, and Auto Dream. Falls back to Fast Model when not set.",subAgentModel:"Sub Agent Model (Optional)",subAgentModelHelp:"Default model for new Sub Agents. Uses Fast Model when not set, then falls back to the default model.",visionModel:"Vision Model (Optional)",visionModelHelp:"Vision-capable model for image understanding. When hooks.image_fallback.mode is set to 'vision', this model describes images as text so text-only models can understand them. Uses default model when not set.",sameAsDefault:"Same as default model",selectModelRequired:"Please select a model",selectModel:"Select a model",responsesOnlyModelsOptional:"Responses-Only Models (Optional)",responsesOnlyModelsPlaceholder:'e.g. "gpt-5.3-codex", "gpt-5*"',responsesOnlyHelp1:"Some models only support the OpenAI Responses API (not chat/completions). Add model ids here to force Bamboo to use upstream",responsesOnlyHelp2:"Supports exact match (e.g. gpt-5.3-codex) and prefix match with a trailing * (e.g. gpt-5*).",anthropicConfigTitle:"Anthropic Configuration",anthropicConfigDescription:"Enter your Anthropic API key to use Claude models.",anthropicApiKey:"Anthropic API Key",anthropicApiKeyRequired:"Please enter your Anthropic API key",anthropicApiKeyPlaceholder:"sk-ant-...",anthropicBaseUrlPlaceholder:"https://api.anthropic.com/v1",anthropicBaseUrlHelp:"Leave empty to use the default Anthropic API endpoint. Include full path (e.g., /v1) if needed.",maxTokensOptional:"Max Tokens (Optional)",maxTokensHelp:"Maximum number of tokens to generate",maxTokensPlaceholder:"4096",geminiConfigTitle:"Google Gemini Configuration",geminiConfigDescription:"Enter your Google AI API key to use Gemini models.",geminiApiKey:"Gemini API Key",geminiApiKeyRequired:"Please enter your Gemini API key",geminiApiKeyPlaceholder:"AIza...",geminiBaseUrlPlaceholder:"https://generativelanguage.googleapis.com/v1beta",geminiBaseUrlHelp:"Leave empty to use the default Google AI API endpoint. Include full path if needed.",copilotConfigTitle:"GitHub Copilot Configuration",copilotConfigDescription:"GitHub Copilot uses OAuth authentication by default. No API key is required. Alternatively, you can provide a Personal Access Token for direct API access.",copilotApiKey:"Personal Access Token (Optional)",copilotApiKeyHelp:"GitHub Personal Access Token for API access (alternative to OAuth device flow)",copilotApiKeyPlaceholder:"ghp_... or github_pat_...",authStatusTitle:"Authentication Status",logoutCopilot:"Logout from Copilot",headlessAuth:"Headless Authentication",headlessAuthHelp:"Print login URL in console instead of opening browser automatically",noModelsLoaded:'No models loaded yet. Click "Fetch available models from backend".',authFirstThenFetch:"Authenticate Copilot first, then fetch models.",copilotUsageTitle:"To use GitHub Copilot:",copilotUsageStep1:"Ensure you have an active GitHub Copilot subscription",copilotUsageStep2:'Click "Authenticate Copilot" to start the device code flow',copilotUsageStep3:"Follow the instructions in your terminal to complete authentication",copilotAuthModalTitle:"Copilot Authentication",cancel:"Cancel",completedAuthorization:"I've Completed Authorization",browserOpened:"Browser opened automatically",authStep1:"A GitHub page should have opened in your browser",authStep2:"Copy the code below and paste it on the GitHub page",authStep3:'Click "Continue" on GitHub to authorize',visitUrl:"1. Visit this URL:",enterCode:"2. Enter this code:",copied:"Copied!",copyCode:"Copy Code",afterContinueHint:`After clicking "Continue" on GitHub, click the "I've Completed Authorization" button below.`,providerNames:{openai:"OpenAI",anthropic:"Anthropic",gemini:"Gemini",copilot:"Copilot"},providerModelRef:"Provider Model Catalog",providerModelRefHelp:"Use catalog-based model selection from the backend. When enabled, the model picker shows available models from the provider catalog instead of manually configured models.",catalogModeInfo:"Models are sourced from the provider catalog.",fetchAllModels:"Fetch All Models",fetchingAllModels:"Fetching models...",fetchModelsSuccess:"Successfully fetched models for {{count}} providers",fetchModelsPartialSuccess:"Fetched models for {{success}} of {{total}} providers",providerNotConfigured:"Not Configured",capabilityVision:"Vision",capabilityTools:"Tools",capabilityReasoning:"Reasoning",refreshCatalog:"Refresh Catalog",noCatalogModels:"No models found. Click 'Fetch All Models' to load.",reasoningEffortDefault:"Default",reasoningEffortOptional:"Reasoning Effort (Optional)",reasoningEffortHelp:"Default reasoning effort for requests sent through this provider.",activeProviderReasoningEffort:"Active Provider Reasoning Effort",reasoningEffortUpdated:"Reasoning effort updated",updateReasoningEffortErrorPrefix:"Failed to update reasoning effort",updateReasoningEffortFailed:"Failed to update reasoning effort",advancedRequestOverrides:"Advanced Request Overrides (JSON)",advancedRequestOverridesHelp:"Customize provider request headers/body patch rules.",envVarInjection:"Env var injection:",bodhiApiKey:"Bodhi API Key",bodhiBaseUrl:"Base URL",targetProvider:"Target Provider",bodhiBaseUrlExtra:"Your Bodhi Server endpoint address",targetProviderExtra:"Which upstream provider to route through Bodhi",apiKeyRequired:"API key is required",apiKeyKeepPlaceholder:"Configured — leave empty to keep",bodhiApiKeyPlaceholder:"bhi_sk_...",bodhiBaseUrlPlaceholder:"http://localhost:8080",targetProviderPlaceholder:"openai"},mcpTab:{status:{connecting:"Connecting",ready:"Ready",degraded:"Degraded",stopped:"Stopped",error:"Error"},statusGuideTitle:"Status guide:",statusHelp:{connecting:"Server is starting or reconnecting",ready:"Server is connected and serving tools normally",degraded:"Server is partially available; some tools may fail",stopped:"Server is not running",error:"Server failed to start or encountered runtime errors"},statusLastError:"Last error: {{error}}",serverDeleted:"MCP server deleted",deleteServerFailed:"Failed to delete MCP server",connectedTo:"Connected to {{name}}",connectServerFailed:"Failed to connect MCP server",disconnected:"Disconnected {{name}}",disconnectServerFailed:"Failed to disconnect MCP server",toolsRefreshedFor:"Tools refreshed for {{name}}",refreshToolsFailed:"Failed to refresh tools",statusRefreshed:"MCP status refreshed",refreshStatusFailed:"Failed to refresh MCP status",noServerForEditing:"No server selected for editing",savedServer:"Saved {{name}}",addedServer:"Added {{name}}",saveServerFailed:"Failed to save MCP server",copiedConfig:"Copied MCP config to clipboard",clipboardUnavailable:"Clipboard not available. Export is shown in the modal.",invalidJsonPrefix:"Invalid JSON",unknownError:"Unknown error",jsonMustBeObject:"JSON must be an object",missingMcpServers:`Missing 'mcpServers'. Paste a full Claude Desktop-style config chunk: { "mcpServers": { ... } }`,importSummary:"Imported {{count}} server(s) ({{added}} added, {{updated}} updated, {{removed}} removed). {{failed}} failed to start.",importStartFailures:"Some servers did not start. Config is saved; open the server list to see errors.",importFailed:"Failed to import MCP servers",overviewTitle:"MCP Overview",overviewDescription:"Configure external MCP servers and inspect registered tool aliases.",totalServers:"Total servers: {{count}}",totalTools:"Total tools: {{count}}",serversTitle:"MCP Servers",addServer:"Add Server",refreshAll:"Refresh All",export:"Export",import:"Import",importModalTitle:"Import MCP Servers",importHint:"Paste a Claude Desktop-style config chunk. Example:",importModeMerge:"Merge (Upsert)",importModeReplace:"Replace (Delete Others)",replaceWarning:"Replace mode will remove existing MCP servers not present in the imported mcpServers."},mcpServerTable:{columns:{name:"Name",transportType:"Transport Type",status:"Status",toolCount:"Tool Count",actions:"Actions"},transportOptions:{sse:"SSE",stdio:"Stdio"},deleteTitle:"Delete MCP server",deleteDescription:'Delete server "{{name}}"?',empty:"No MCP servers configured",actions:{edit:"Edit",delete:"Delete",disconnect:"Disconnect",connect:"Connect",refreshTools:"Refresh Tools"}},mcpToolList:{title:"MCP Tools",selectServerHint:"Select a server to inspect its MCP tools",empty:"No tools found for this server",noDescription:"No description available",aliasMapping:"Alias mapping",parametersSchema:"Parameters schema"},mcpServerForm:{jsonMustBeObject:"JSON must be an object",detectedBulkConfig:"Detected mcpServers (bulk config). Use the MCP tab Import button for bulk import, or paste a single server config here.",missingIdField:"Missing or invalid id field",missingTransportField:"Missing or invalid transport field",missingTransportInfo:"Missing transport info. Expected either transport (Bodhi format) or command/url (mainstream MCP format).",invalidJson:"Invalid JSON: {{message}}",unknownError:"Unknown error",editTitle:"Edit MCP Server",addTitle:"Add MCP Server",save:"Save",modeForm:"Form",modeJson:"JSON",jsonError:"JSON Error",serverId:"Server ID",serverIdRequired:"Server ID is required",serverIdPatternError:"Use only letters, numbers, underscore, and hyphen",displayName:"Display Name",enabled:"Enabled",enabledHelp:"Disabled servers stay in config but will not be started.",transportType:"Transport Type",transportTypeRequired:"Transport type is required",transportOptions:{stdio:"Stdio",sse:"SSE"},command:"Command",commandRequired:"Command is required",arguments:"Arguments",argumentsPlaceholder:"Add an argument and press Enter",envVars:"Environment Variables",addEnv:"Add Env",keyRequired:"Key required",sseUrl:"SSE URL",sseUrlRequired:"SSE URL is required",validUrlRequired:"Please enter a valid URL",headers:"Headers",addHeader:"Add Header",headerNameRequired:"Header name required"},metricsCards:{totalSessions:"Total Sessions",chatTokens:"Chat Tokens",totalToolCalls:"Total Tool Calls",tokensSaved:"Saved Tokens",toolContextSavedTokens:"Tool Context Saved Tokens",compressionEvents:"Compression Events",avgSessionDuration:"Avg Session Duration"},forwardMetricsCards:{totalForwardRequests:"Total Forward Requests",successRate:"Success Rate",forwardTokens:"Forward Tokens",avgResponseTime:"Avg Response Time"},unifiedMetricsCards:{totalRequests:"Total Requests",totalTokens:"Total Tokens",successRate:"Success Rate",avgResponseTime:"Avg Response Time",chatSessions:"Chat Sessions",chatTokens:"Chat Tokens",toolCalls:"Tool Calls",avgSessionDuration:"Avg Session Duration",promptCachedToolOutputs:"Prompt-Cached Tool Outputs",tokensSaved:"Saved Tokens",compressionEvents:"Compression Events",totalMemories:"Total Memories",staleCandidates:"Stale Candidates",memoryProjects:"Memory Projects",lastReindex:"Last Reindex",forwardRequests:"Forward Requests",forwardTokens:"Forward Tokens",successful:"Successful",failed:"Failed"},metricsTable:{session:{columns:{session:"Session",model:"Model",status:"Status",started:"Started",duration:"Duration",tokens:"Tokens",toolCalls:"Tool Calls",messages:"Messages",action:"Action"},status:{running:"Running",awaitingResponse:"Awaiting Response",completed:"Completed",error:"Error",cancelled:"Cancelled"},view:"View"},forward:{columns:{id:"ID",endpoint:"Endpoint",model:"Model",type:"Type",status:"Status",tokens:"Tokens",duration:"Duration",started:"Started",error:"Error"},typeStream:"Stream",typeSync:"Sync",totalRequests:"{{total}} requests",empty:"No forward requests recorded for this range"}},metricsDashboard:{roundColumns:{round:"Round",status:"Status",duration:"Duration",tokens:"Tokens",toolCalls:"Tool Calls"},compactStats:{combinedTokens:"Combined Tokens",chatTokens:"Chat Tokens",forwardTokens:"Forward Tokens",avgTokensPerSession:"Avg Tokens / Session",savedTokens:"Saved Tokens",toolContextSavedTokens:"Tool Context Saved Tokens",nonToolCompressionSavedTokens:"Non-Tool Compression Saved Tokens",savedTokenRatio:"Saved / Chat Tokens",toolSavedShare:"Tool Share of Saved Tokens",promptCachedToolOutputs:"Prompt-Cached Tool Outputs",compressionEvents:"Compression Events",estimatedTimeSaved:"Est. Time Saved",estimatedEfficiencyLift:"Est. Efficiency Lift",estimatedSpeedMultiplier:"Est. Speed Multiplier",estimatedSavedWorkdays:"Est. Saved Workdays",avgRoundsPerSession:"Avg Rounds / Session",toolCallsPerSession:"Tool Calls / Session",activeSessionRate:"Active Session Rate",avgTokensPerForward:"Avg Tokens / Forward",forwardErrorRate:"Forward Error Rate",streamingRatio:"Streaming Ratio",p95ForwardLatency:"P95 Forward Latency",modelCoverage:"Model Coverage",endpointCoverage:"Endpoint Coverage"},multiplierSuffix:"x",filtersTitle:"Filters",refresh:"Refresh",startDate:"Start date",endDate:"End date",model:"Model",daysOption:"{{value}} days",granularity:{daily:"Daily",weekly:"Weekly",monthly:"Monthly"},dashboardTitle:"Dashboard",tabs:{overview:"Overview",analysis:"Analysis",records:"Records",chat:"Chat",skillsAndMcp:"Skills & MCP",forward:"Forward",memory:"Memory"},derivedMetricsTitle:"Derived Metrics (Compact)",derivedMetricsSubtitle:"More dimensions without extra page length",overviewSections:{scaleTitle:"Scale & Activity",scaleSubtitle:"Current usage volume across chat, forward, skills, and memory.",efficiencyTitle:"Compression & Efficiency Advantage",efficiencySubtitle:"Real savings from context compression, especially around tool-heavy workflows."},efficiencyHint:"These metrics now prefer direct runtime evidence: saved tokens, tool-context savings, non-tool compression savings, compression events, and workload / quality indicators across chat and forward traffic.",toolUsageTitle:"Tool Usage Frequency",noToolUsage:"No tool calls recorded for this range.",calls:"Calls",activityHeatmapTitle:"Daily Activity Heatmap",noActivity:"No activity available for this range.",sessionsCount:"{{count}} sessions",tokensAmount:"{{value}} tokens",sessionsTabLabel:"Sessions ({{count}})",chatSessionsLabel:"Chat Sessions ({{count}})",sessionsHint:"Click a session for full round detail",forwardTabLabel:"Forward Requests ({{count}})",detailedMetricsTitle:"Detailed Metrics",sessionMetricsTitle:"Session Metrics",loadingSessionDetails:"Loading session details...",sessionDetail:{sessionId:"Session ID",model:"Model",status:"Status",duration:"Duration",messages:"Messages",totalTokens:"Total Tokens",toolCalls:"Tool Calls"},noDetail:"No detail available.",skillsAndMcp:{cards:{skillLoadCalls:"Skill Loads",uniqueSkills:"Unique Skills",mcpCalls:"MCP Calls",uniqueMcpServers:"MCP Servers",uniqueMcpTools:"MCP Tools",coreToolCalls:"Core Tool Calls"},mix:{coreTools:"Core Tools",skillLoads:"Skill Loads",mcpCalls:"MCP Calls"},meta:{uniqueTools:"{{count}} tools"},usageMixTitle:"Usage Mix",usageMixSubtitle:"Compare core tools, skill loads, and MCP calls in one view.",noUsageMix:"No usage data available for this range.",topSkillsTitle:"Top Skills",topSkillsSubtitle:"Counted from load_skill calls during matching sessions.",noSkills:"No skills were loaded in this range.",topMcpServersTitle:"Top MCP Servers",topMcpServersSubtitle:"Server-level MCP call distribution.",noMcpServers:"No MCP activity recorded for this range.",topMcpToolsTitle:"Top MCP Tools",topMcpToolsSubtitle:"Most frequently called MCP tool aliases.",noMcpTools:"No MCP tools were called in this range.",topCoreToolsTitle:"Top Core Tools",topCoreToolsSubtitle:"Canonicalized built-in and server tool usage ranking.",noCoreTools:"No core tools were called in this range."},forward:{performanceTitle:"Forward Performance",performance:{p95Latency:"P95 Latency",errorRate:"Error Rate",streamingRatio:"Streaming Ratio",endpointCoverage:"Endpoint Coverage"}},memory:{breakdownTitle:"Memory Breakdown",byType:"By Type",byStatus:"By Status",byScope:"By Scope",lastDream:"Last Dream",lastReindex:"Last Reindex"}},charts:{tokenUsageOverTime:"Token Usage Over Time",unifiedTokenUsageOverTime:"Token Usage Over Time (Chat + Forward)",memoryTrendTitle:"Memory Trend",noTokenUsage:"No token usage available",noMemoryTrend:"No memory trend available",tokenUsageDescription:"Prompt, completion, and total tokens by day/period.",unifiedTokenUsageDescription:"Combined chat and forward token usage over time.",memoryTrendDescription:"Created memories, updated memories, and total durable memory over time.",total:"Total",prompt:"Prompt",completion:"Completion",chat:"Chat",forward:"Forward",totalMemories:"Total Memories",createdMemories:"Created Memories",updatedMemories:"Updated Memories",modelDistribution:"Model Distribution",noModelMetrics:"No model metrics available",modelDistributionDescription:"Share of total tokens consumed by model.",endpointDistribution:"Endpoint Distribution",noForwardMetrics:"No forward metrics available for this range."}},components:{markdown:{codeCopiedSuccess:"Code copied to clipboard",copyFailed:"Copy failed",copyCodeAriaLabel:"Copy code"},jsonSchema:{field:"Field",type:"Type",required:"Required",yes:"Yes",no:"No",default:"Default",description:"Description",noProperties:"No properties in schema"},workflowResult:{userWorkflow:"User Workflow",waitingForResult:"Waiting for workflow result...",executionFailed:"Workflow execution failed",retryWorkflow:"Retry workflow",copyParameters:"Copy parameters",copyResult:"Copy result",expandResult:"Expand result",collapseResult:"Collapse result"},toolResult:{waiting:"Waiting",waitingForResult:"Waiting for result...",executionFailed:"Tool execution failed",copyResult:"Copy result",checkpoint:"Checkpoint",checkpointNone:"None",diffTruncated:"Diff is too long and has been truncated",structuredToolResultHint:"Tool result · {{tool}}",memory:{action:{inspect:"Inspect",rebuild:"Rebuild"},totalMemories:"{{count}} memories",staleCandidates:"stale candidates: {{count}}",coverage:"Coverage",viewsLabel:"Views:",indexesLabel:"Indexes:",stateFilesLabel:"State files:",lastReindexLabel:"Last reindex:",lastDreamLabel:"Last dream:",viewFiles:"View files",indexFiles:"Index files",stateFiles:"State files",topicPaths:"Topic paths",recentMemories:"Recent memories"}},toolCall:{liveOutput:"Live output",keyParameters:"Key parameters",fullParameters:"Full parameters",copyParameters:"Copy parameters"},toolSteps:{title:"Tool Run",running:"running…",runningInBackground:"Running in background…",backgroundCompleted:"Completed",backgroundKilled:"Killed",backgroundFailed:"Failed",viewFullOutput:"View full output",details:"Details",preview:"Preview",parameters:"Parameters",result:"Result",noResult:"No result yet",intent:"Intent",keyParameters:"Key parameters",statusError:"error",statusFinish:"finish",statusProcess:"process",statusWait:"wait"},plan:{executionPlan:"Execution Plan",goal:"Goal",steps:"Steps",stepTitle:"Step {{number}}",reason:"Reason",estimated:"Estimated",tools:"Tools",prerequisites:"Prerequisites",potentialRisks:"Potential Risks ({{count}})",totalEstimatedTime:"Total estimated time",feedbackPlaceholder:"Tell the agent what to adjust...",sendFeedback:"Send feedback",refinePlan:"Refine plan",executePlan:"Execute plan"},question:{agentQuestion:"Agent Question",context:"Context",chooseOption:"Choose an option",recommended:"Recommended",customAnswerHint:"Need another option? Type your own answer.",customAnswerPlaceholder:"Type your custom answer...",submitAnswer:"Submit answer"},questionDialog:{selectOptionWarning:"Please select an option before submitting.",responseSubmitted:"Response submitted",responseSubmittedContinue:"Response submitted, AI will continue processing",submitFailed:"Failed to submit response",noModelConfigured:"No model configured",customAnswerTip:"Custom answer",otherTypeBelow:"Other (type below)",confirm:"Confirm"},skillManager:{title:"Skills",refresh:"Refresh",skillsRefreshed:"Skills refreshed",lastUpdated:"Last updated: {{value}}",justNow:"just now",secondsAgo:"{{count}}s ago",minutesAgo:"{{count}}m ago",searchPlaceholder:"Search skills",readOnlyHint:"Skill files remain read-only, but you can enable or disable them for prompt usage.",disabledHint:"Disabled skills stay visible here, but Bamboo filters them from system prompt skill context and blocks load_skill at runtime.",disabledTag:"Disabled",switchEnabled:"On",switchDisabled:"Off",skillStateSaved:"Skill state saved",saveFailed:"Failed to save skill state",noSkillsFound:"No skills found",noMatch:"No skills match the current search",loadFailed:"Failed to load skills",getFailed:"Failed to get skill"},skillSelector:{placeholder:"Select skills",disabledSkillsHint:"{{count}} previously selected skill is now globally disabled and has been removed."},imageGrid:{preview:"Preview",ocr:"OCR"},todoList:{title:"Task List",evaluating:"Evaluating",pin:"Pin",unpin:"Unpin",llmEvaluation:"LLM Evaluation",tools:"tools",dependsOn:"Depends on: {{deps}}",dependencies:"deps",status:{pending:"Pending",inProgress:"In Progress",completed:"Completed",blocked:"Blocked",skipped:"Skipped",failed:"Failed"},listStatus:{active:"Active",completed:"Completed",abandoned:"Abandoned"},percentComplete:"{{percent}}% Complete",progressLabel:"{{completed}} / {{total}} tasks completed",currentLabel:"Current: {{description}}"},tokenUsage:{title:"Token Usage",contextWindow:"Context window",contextPrepared:"Context prepared",promptCacheTitle:"Prompt-side savings",providerResult:"Provider-reported result",summary:"Summary",system:"System",messages:"Messages",tokens:"tokens",usedPercent:"Used {{value}}%",cachedToolOutputs:"Tool outputs compacted: {{count}}",promptSaved:"Prompt tokens saved",cacheRead:"Provider cache read",thinking:"Thinking tokens",promptSavedBadge:"Saved {{value}}",cacheReadBadge:"Cache {{value}}",thinkingBadge:"Think {{value}}",truncatedBadge:"{{count}} truncated"},approval:{workflow:"Workflow",executionRequest:"Execution Request",aiWantsExecute:"AI wants to execute the following action",childTitle:"Sub-agent approval needed",childQuestion:"A sub-agent wants to run a tool that requires your approval.",approve:"Approve",deny:"Deny",toolName:"Tool",permission:"Permission",target:"Target",childGone:"The sub-agent is no longer waiting; the request was dismissed.",deliverFailed:"Couldn't deliver your decision. Please try again."},toolSession:{title:"Tool Session",running:"Running",done:"Done",error:"Error",completedOnly:"{{completed}} completed",completedWithErrors:"{{completed}} completed (with errors)",completedProgress:"{{completed}} / {{total}} completed",noPersistedMessage:"No persisted output",deleteMessage:"Delete tool session"},mermaid:{loadingDiagram:"Loading diagram...",diagramError:"Mermaid Diagram Error",errorTitlePrefix:"Error",checkConsoleHint:"Check Mermaid syntax or open the console for details.",fixMermaid:"Fix Mermaid",renderingDiagram:"Rendering diagram...",exportSvg:"Export SVG",exportFailed:"Failed to export diagram",downloadChartAriaLabel:"Download chart"}},validation:{workspaceRequired:"Please enter a workspace path",invalidPath:"Invalid path"},error:{saveWorkspaceFailed:"Failed to save workspace path",readFolderFailed:"Unable to read folder",copyPromptFailed:"Failed to copy prompt content"},success:{promptCopied:'Copied "{{name}}" prompt'}}},Fe=Object.freeze(Object.defineProperty({__proto__:null,enUsTranslation:Re},Symbol.toStringTag,{value:"Module"})),xe={translation:{app:{loading:"加载中...",retry:"重试",backendNotReachable:"无法连接后端 {{baseUrl}}(最近错误:{{message}})",errorBoundary:{title:"出了点问题",description:"此区域发生了意外错误。您可以重试,或者如果问题持续存在,请重新加载页面。",tryAgain:"重试",showDetails:"显示详情",hideDetails:"隐藏详情"},passwordGate:{title:"输入访问密码",description:"进入应用前需要先通过密码验证。",passwordLabel:"访问密码",passwordPlaceholder:"请输入访问密码",submit:"验证并继续",validation:{required:"请输入访问密码",verifyFailed:"密码验证失败"}},notifications:{toolApproval:{title:"需要审批:{{tool}}",genericTitle:"需要审批",body:"工具 {{tool}} 需要您的审批后才能执行",unknownTool:"未知工具"},contextPressure:{title:"上下文即将耗尽"},backgroundTask:{completedTitle:"后台任务完成",completedBody:"「{{title}}」已完成",completedFallback:"一个后台任务已完成",completedToast:"后台命令已结束 — {{command}}({{status}},退出码 {{code}})"},clarification:{title:"Bodhi AI 需要您的回复",fallbackBody:"Agent 需要您回答一个问题"},conversationSummarized:"对话已摘要:压缩了 {{messages}} 条消息,节省了 {{tokens}} 个 token",allTasksCompleted:"所有任务已完成!总轮次:{{rounds}},工具调用:{{toolCalls}}",evaluatingTasks:"正在评估 {{count}} 个任务...",evaluationCompleteUpdated:"评估完成:已更新 {{count}} 个任务。",evaluationCompleteNoUpdates:"评估完成:无需更新"},defaultSessionTitle:"新建会话",skipToContent:"跳转到主内容"},feedback:{helpful:"有帮助",notHelpful:"无帮助"},sessionSummary:{title:"会话摘要"},inspector:{title:"检查器",configuration:"配置"},layout:{showSidebar:"显示侧边栏"},commandPalette:{searchPlaceholder:"搜索会话、设置和快捷操作",navigationHint:"使用 ↑↓ 导航,Enter 打开,Esc 关闭。",empty:"没有匹配的命令",groups:{quickActions:"快捷操作",settings:"系统设置"},badges:{quickAction:"操作",pinned:"置顶",running:"运行中",child:"子会话",childSession:"子会话",rootSession:"会话"},actions:{newSession:"创建新会话",openProviderSettings:"打开 Provider 设置",openMcpSettings:"打开 MCP 设置",openWorkflowSettings:"打开工作流设置",openSessionsSettings:"打开会话监控",openSchedulesSettings:"打开计划任务"},errors:{actionFailed:"命令执行失败"}},common:{cancel:"取消",ok:"确定",apply:"应用",save:"保存",delete:"删除",saveAnyway:"仍然保存",yes:"是",no:"否",home:"主页",parentDirectory:"上级目录",currentPath:"当前路径:",workspace:"工作区",server:"服务器:",category:"类别:",parameters:"参数",approve:"批准",reject:"拒绝",download:"下载",directory:"目录",file:"文件",close:"关闭",clear:"清除"},setup:{welcome:{heading:"欢迎使用 Bodhi",description:"Bodhi 是您的 AI 驱动开发助手。配置一个 AI 提供商即可开始,或直接进入应用。",providerHint:"要开始对话,您需要配置一个 AI 提供商(如 OpenAI、Anthropic)并提供 API 密钥。",proxyHint:"在公司代理后面?您可以稍后在系统设置 > 网络中配置代理。"},button:{getStarted:"开始使用",configureProvider:"配置 Provider"},complete:{title:"一切就绪!",restartMessage:"正在重新加载应用..."},error:{completeFailed:"完成设置失败,请重试。"}},onboarding:{welcome:{title:"欢迎使用 Bodhi!",description:"Bodhi 是您的 AI 驱动开发助手。让我们快速了解一下界面。"},newSession:{title:"新建会话",description:"点击这里开始一个与 AI 助手的新对话。"},taskTemplates:{title:"任务模板",description:"从预置模板中选择,如代码审查、Bug 调查、重构等,快速启动工作。"},modelPicker:{title:"模型选择",description:"随时在此切换 AI 模型和提供商。"},sidebar:{title:"会话侧边栏",description:"在此管理您的会话——搜索、过滤、置顶和切换对话。"},settings:{title:"设置",description:"配置 AI 提供商、代理设置、模型映射、MCP 服务器等。"}},chat:{sidebar:{newSession:"新建会话",createFailedTitle:"创建会话失败",createFailedUnknown:"未知错误",searchPlaceholder:"搜索会话",filters:{all:"全部",pinned:"置顶",running:"运行中",child:"子会话"},empty:{noSessions:"暂无会话",noMatches:"没有匹配的会话",hint:"点击「新建会话」开始",filterHint:"请尝试调整搜索词或筛选条件",clearFilters:"清除筛选"},dateGroups:{today:"今天",yesterday:"昨天",thisWeek:"本周",thisMonth:"本月",pinned:"置顶",scheduled:"计划任务"},actions:{collapseChildren:"折叠子会话",expandChildren:"展开子会话"},delete:{title:"删除会话",confirm:"确定要删除这个会话吗?"},deleteByDate:{title:"删除 {{date}} 的会话",confirm:"确定要删除 {{date}} 的 {{count}} 个会话吗?"},newSessionWithPrompt:"基于 {{prompt}} 的新会话"},workspace:{modalTitle:"设置工作区路径",invalidTitle:"无效的工作区路径",issuesDetected:"检测到工作区路径的潜在问题:",confirmSaveInvalid:"您仍要保存此路径吗?",errorEnterPath:"请输入工作区路径",errorSaveFailed:"保存工作区路径失败",placeholder:"例如:/Users/alice/Workspace/MyProject",label:"工作区",browseFolder:"浏览文件夹",descriptionTitle:"工作区路径描述",descriptionP1:"设置工作区路径后,文件引用和工作区相关工具才能稳定地定位文件。",descriptionP2:"建议选择真实存在的项目目录。即使路径无效也可继续保存,但相关功能可能不可用。",checkTitle:"工作区路径检查",checkDescription:"工作区路径校验失败。",recentTitle:"最近工作区",suggestedTitle:"推荐工作区",noRecentWorkspaces:"暂无最近工作区",noSuggestions:"暂无推荐",defaultWorkspaceName:"工作区",validWorkspace:"工作区有效",fileCount:"{{count}} 个文件",folderSelected:"文件夹选择成功"},folderBrowser:{title:"选择工作区文件夹",selectCurrent:"选择当前文件夹",emptyFolder:"此文件夹为空",tip:"提示:点击文件夹进入,点击「选择当前文件夹」确认",readFolderError:"无法读取文件夹"},input:{placeholder:"发送消息...",placeholderWithReference:"发送消息(包含引用)",placeholderWithWorkflows:"发送消息...(输入 '/' 选择工作流)",toolCallsOnly:"仅工具调用(允许的工具:{{tools}})",autoPrefixMode:"自动前缀模式:{{prefix}}(输入 '/' 选择工具)",toolSpecificMode:"工具特定模式(允许的工具:{{tools}})",processingFiles:"正在处理文件…",dropImagesHere:"将图片拖放到此处",referencing:"引用中",addAttachments:"添加附件",referenceWorkspaceFiles:"引用工作区文件",imageCountSingular:"{{count}} 张图片",imageCountPlural:"{{count}} 张图片",moreImages:"还有 {{count}} 张",clearAllImages:"清除所有图片",charLimitExceeded:"消息超过了最大长度限制 {{max}} 个字符。",messageFormatInvalid:"消息格式不正确",filesAdded:"已添加 {{count}} 个文件",filesAttached:"已附加 {{count}} 个文件",reasoningTitle:"推理强度:{{label}}",reasoning:{low:"低",medium:"中",high:"高",xhigh:"很高",max:"最大"},bypassPermissions:{label:"免确认",onTitle:"已开启「绕过权限」——本会话执行工具时不再请求确认。点击关闭。",offTitle:"「绕过权限」已关闭——高风险工具会请求确认。点击可让本会话跳过确认。",error:"更新绕过权限失败"},strictToolOnlyMode:"严格仅工具模式",toolSpecificModeLabel:"工具特定模式",allowedTools:"允许的工具:",autoPrefixLabel:"自动前缀:{{prefix}}",mustStartWithPrefix:"消息必须以“{{prefix}}”开头"},actions:{regenerate:"重新生成响应",retryFailed:"重试失败的请求",retryOptions:"重试选项",cancelRequest:"取消请求",sendMessage:"发送消息",copyMessage:"复制消息",referenceMessage:"引用消息",unpin:"取消置顶",pin:"置顶",generateTitle:"生成 AI 标题",runProjectDream:"运行 Project Dream",runProjectDreamRunning:"正在运行 Project Dream...",runProjectDreamSuccess:"Project Dream 已更新",runProjectDreamNoChange:"无需更新 Project Dream",runProjectDreamFailed:"运行 Project Dream 失败"},prompt:{selectorTitle:"选择系统提示词",createButton:"创建新会话",helperText:"为 AI 选择一个基础系统提示词。您可以在系统设置中添加或编辑提示词。",emptyDescription:"未找到系统提示词。在系统设置中添加一个。",newSessionSelectorTitle:"为新会话选择系统提示词",defaultDescription:"默认系统提示词。",loadPresetsFailed:"加载预设失败",loadCurrentInfoFailed:"加载当前信息失败",systemCard:{title:"系统提示词",viewEnhanced:"查看增强版",viewBase:"查看基础版",copy:"复制",snapshotTitle:"提示快照",sections:{base:"基础提示",enhancement:"增强层",workspace:"工作区",instruction:"指令层",env:"环境变量",skills:"技能",toolGuide:"工具指引",dream:"Dream Notebook",sessionMemory:"会话记忆",externalMemory:"记忆层",taskList:"任务列表",effective:"最终提示词"}}},fileReference:{title:"@ 文件引用",setWorkspace:"设置工作区",noMatches:"未找到匹配的文件",emptyDirectory:"目录为空"},imagePreview:{counter:"第 {{current}} / {{total}} 张"},filePreview:{fileCount_one:"{{count}} 个文件",fileCount_other:"{{count}} 个文件"},commandSelector:{loading:"正在加载命令...",emptyWithSearch:"没有匹配“{{search}}”的命令",empty:"暂无可用命令。",navigationHint:"导航:上下键 或 Ctrl+P/N | 选择:Enter | 补全:Space/Tab | 取消:Esc",types:{workflow:"工作流",skill:"技能",mcp:"MCP",goal:"目标"}},model:{selectModel:"选择模型",noModelSelected:"未选择模型",selectModelHint:"请选择一个模型后再开始对话。",providerNotConfigured:"提供商未配置",configureProviderHint:"请先在设置中配置提供商,然后再选择模型。",configureProvider:"配置提供商",openSettings:"打开设置",noModelsAvailable:"暂无可用模型",selectModelBeforeSend:"发送前请先选择模型。",selectModelBeforeRetry:"重试前请先选择模型。"},streaming:{assistant:"Bodhi",requestCancelled:"请求已取消",sendFailed:"发送消息失败",retryFailed:"重试请求失败",modelConfigNotLoaded:"模型配置尚未加载",agentUnavailable:"智能体不可用",noActiveChatTitle:"没有活动会话",noActiveChatSendContent:"发送前请先创建或选择一个会话。",noActiveChatRetryContent:"重试前请先创建或选择一个会话。",noChatIdTitle:"缺少会话 ID",noChatIdSendContent:"当前会话缺少 ID,请新建会话后再试。",noChatIdRetryContent:"当前会话缺少 ID,请新建会话后重试。"},selectionToolbar:{selectMessages:"选择消息",selectedCount:"已选择 {{selected}} 条(共 {{total}} 条)",selectAll:"全选",clear:"清空",exportMarkdown:"导出 Markdown",exportPdf:"导出 PDF",done:"完成"},scroll:{jumpToTop:"回到顶部",backToLatest:"回到最新消息",newMessages:"有新消息",newMessagesWithCount:"有 {{count}} 条新消息"},compression:{tag:"已压缩上下文",timelineDetail:"已归档 {{count}} 条消息",timelineAria:"{{time}},{{detail}}",tooltip:"最近一次压缩:{{time}},已归档 {{count}} 条消息",archivedShort:"已归档 {{count}} 条"},contextBar:{workspace:"工作区",workspaceTooltip:"工作区上下文:{{path}}",files:"文件",fileRefsTooltip:"当前会话中有 {{count}} 个文件引用",prompt:"提示词",promptTooltip:"系统提示词:{{name}}",summary:"摘要",summaryTooltip:"对话摘要贡献了 {{tokens}} 个 tokens,并且已有 {{count}} 次压缩归档了较早消息。",promptCache:"Prompt 缓存",promptCacheTooltip:"{{count}} 个工具输出已被压缩为 prompt 侧缓存摘要,共节省 {{tokens}} 个 tokens。"},machine:{label:"机器",tooltip:"运行于 {{kind}} · {{host}}"},subAgents:{title:"子代理",expand:"展开",collapse:"收起",continue:"在此继续",open:"打开",retry:"重试",hiddenHint:"已隐藏 {{count}} 个子代理",headerCount:"({{active}} 活跃 / {{total}})",completedGroup:"已完成 ({{count}})",noActive:"暂无活跃子代理",previewHint:"悬停查看输出",residentGroup:"常驻代理 ({{count}})",residentBadge:"常驻",runChildFailed:"运行子会话失败",continueChildFailed:"继续子会话失败",fallbackTitle:"子代理",statusRunning:"运行中",statusCompleted:"已完成",statusPending:"等待中",statusError:"错误",statusCancelled:"已取消",steeredLive:"已实时转向运行中的子代理",queuedNextTurn:"已排队,下一轮生效",statusFailed:"失败",pinned:"已固定",heartbeat:"心跳",round:"轮次",summaryCompleted:"{{count}} 已完成",summaryRunning:"{{count}} 运行中",summaryPending:"{{count}} 等待中",summaryFailed:"{{count}} 失败",previewExpand:"展开",previewOpenSession:"进入会话",previewClose:"关闭"},chatItem:{edit:"编辑",childTag:"子会话"},systemPromptSelector:{defaultTag:"默认",hide:"隐藏",preview:"预览",copy:"复制",lines:"{{count}} 行",words:"{{count}} 词",chars:"{{count}} 字",noContent:"无内容"},title:{updated:"会话标题已更新",generateFailed:"生成会话标题失败"},respond:{customAnswerPlaceholder:"输入你的自定义回答..."},emptyLauncher:{title:"从任务开始",subtitle:"在当前分栏中创建一个聚焦会话,并先预填第一条消息,再由你决定是否发送。",hint:"不会自动发送,你可以先编辑提示词。",actions:{blank:{title:"空白会话",description:"使用默认助手从零开始,并保留空白输入框。",sessionTitle:"新建会话",prefill:""},codeReview:{title:"代码评审",description:"打开一个面向评审的会话,并预填可编辑的评审说明。",sessionTitle:"代码评审",prefill:"请审查这个工作区或仓库中的相关代码变更。先概述范围,再列出风险点、关键 diff,以及最值得优先修复的问题。"},tokenUsage:{title:"Token 使用调查",description:"诊断上下文膨胀、截断风险和 token 预算压力。",sessionTitle:"Token 使用调查",prefill:"请帮我分析这个会话或工作流的 token 使用、上下文增长和截断风险,归纳主要原因,并给出下一步最具体的优化建议。"}},errors:{createFailed:"创建会话失败"}},multiPane:{splitHorizontal:"水平拆分",splitVertical:"垂直拆分",closePane:"关闭分栏",selectSessionHint:"请选择一个会话查看消息",hoverToSplitHint:"将鼠标悬停在分栏上可进行拆分对比",selectMessagesToExport:"请选择要导出的消息"},messageCard:{authRequired:"需要身份验证",goToSettings:"前往设置",assistantThinking:"助手正在思考...",assistantCompactingContext:"助手正在压缩上下文...",assistantCompactingContextDegraded:"助手正在压缩上下文(降级模式)...",assistantCompactingContextFailed:"助手压缩上下文失败,继续处理中...",assistantUpdatingMemory:"助手正在更新记忆...",assistantRunningTool:"助手正在运行 {{tool}}...",reasoning:"推理",selected:"已选中",selectedTool:"已选工具"},messageActions:{copy:"复制",exportMarkdown:"导出 Markdown",exportPdf:"导出 PDF",restoreChat:"仅恢复会话",restoreFilesAndChat:"恢复文件和会话",deleteMessage:"删除消息",deleteFailed:"删除消息失败",deleteNotFound:"后端中找不到该消息,请刷新后重试",deleteConflict:"会话正在运行,请先停止后再删除",deleteBatchFailed:"共 {{total}} 条中有 {{failed}} 条删除失败",savedFile:"已保存到 {{filename}}",nothingToExport:"没有可导出的内容",exportFailed:"导出失败",cannotRestore:"无法恢复这条消息",restorePartial:"会话已恢复,但有 {{count}} 个文件未能恢复。",restoreFilesSuccess:"文件和会话已恢复(移除 {{count}} 条消息)。",restoreSuccess:"会话已恢复(移除 {{count}} 条消息)。",restoreFailed:"恢复会话失败",pdfUnavailable:"当前环境不支持导出 PDF",exportingPdf:"正在导出 PDF..."},session:{defaultTitle:"新建会话"},view:{roleUser:"你",roleAssistant:"助手",roleSystem:"系统",roleDefault:"消息",exportSaved:"已保存:{{filename}}",providerNotConfigured:"请先配置供应商",unknownError:"未知错误",workspacePathEmpty:"工作区路径不能为空",brandName:"Bodhi",subTitleUser:"提示词",chatMessagesAria:"聊天消息",aiRespondingAria:"AI 正在回复",noExportableMessages:"没有可导出的消息",noActiveChat:"没有活跃的对话",selectAtLeastOneMessage:"请至少选择一条消息"},statusRail:{idle:"就绪",thinking:"思考中…",runningTools:"正在调用工具…",waitingAnswer:"等待您的回答",runningChildren:"正在运行子代理…",completed:"已完成",error:"错误",childrenTooltip:"{{running}} 个子代理运行中"},systemPrompt:{preparing:"系统提示词正在准备中..."},home:{running:"运行中",justNow:"刚刚",minutesAgo:"{{count}}分钟前",hoursAgo:"{{count}}小时前",daysAgo:"{{count}}天前"}},settings:{page:{back:"返回",title:"系统设置",tabs:{config:"配置",prompts:"提示词",mermaid:"Mermaid",skills:"技能",workflows:"工作流",mcp:"MCP",modelLimits:"模型限制",metrics:"指标",schedules:"调度",sessions:"会话",app:"应用",provider:"提供商",hooks:"Hooks",permissions:"权限",masking:"脱敏",envVars:"环境变量",clusters:"集群",notifications:"通知"},groups:{ai:"AI",toolsAndExtensions:"工具与扩展",securityAndPrivacy:"安全",deployment:"部署",monitoring:"监控",system:"系统"}},notifications:{deleteAllSuccess:"已删除所有会话(置顶除外)",deleteEmptySuccess:"已删除空会话(置顶除外)",localStorageCleared:"本地存储已清空",resetSuccessReloading:"应用重置成功,正在重新加载...",resetFailed:"重置应用失败",promptEnhancementSaved:"系统提示增强已保存"},notificationsTab:{title:"桌面通知",description:"当应用在后台运行且需要用户操作时,接收系统级通知。",enabled:"启用桌面通知",events:"在以下情况通知:",onClarification:"智能体需要澄清",onToolApproval:"工具执行需要批准",onContextPressure:"上下文窗口即将耗尽",onSubAgentComplete:"后台任务完成",onBackgroundTaskComplete:"后台命令执行完成",onRunComplete:"运行成功完成",onRunFailed:"运行失败",loadError:"加载通知偏好设置失败",saveError:"保存通知偏好设置失败",desktopOnly:"桌面通知仅在 Bodhi 桌面应用中可用。",osNote:"可能还需要系统通知权限,可在系统设置中管理。",channels:{title:"通知渠道",description:"配置后端如何投递通知(桌面通知、ntfy、Bark),保存后对所有设备生效。",retry:"重试",save:"保存渠道设置",saving:"保存中…",saved:"已保存",test:"发送测试通知",testing:"发送中…",testNone:"当前没有启用任何渠道",testAttempted:"已尝试:{{channels}}",desktop:{title:"桌面通知",auto:"自动(独立运行时开启,Bodhi 内嵌时关闭)",on:"开启",off:"关闭"},ntfy:{title:"ntfy",enable:"启用 ntfy",baseUrl:"Base URL",topic:"Topic",topicPlaceholder:"my-bamboo-topic",token:"Token(可选,自托管实例)",tokenPlaceholderConfigured:"已配置,留空保持不变",tokenPlaceholderEmpty:"公共 ntfy.sh 主题无需填写"},bark:{title:"Bark",enable:"启用 Bark",baseUrl:"Base URL",deviceKey:"Device Key",deviceKeyPlaceholderConfigured:"已配置,留空保持不变",deviceKeyPlaceholderEmpty:"Bark iOS 应用中的设备密钥"}}},appTab:{switchOn:"开",switchOff:"关",darkMode:"深色模式",vdiSafeMode:"图形兼容模式",vdiSafeModeDesc:"禁用模糊和玻璃效果,这些效果在某些虚拟桌面、远程或图形受限的环境中可能导致下拉菜单和悬浮层异常。",vdiSafeModeEnabled:"已启用图形兼容模式",vdiSafeModeDisabled:"已关闭图形兼容模式",darkModeDark:"深色",darkModeLight:"浅色",language:"语言",languageEnglish:"English",languageChinese:"简体中文",languageTraditionalChinese:"繁體中文",languageFrench:"Français",languageJapanese:"日本語",languageHindi:"हिन्दी",deleteAllTitle:"删除所有会话",deleteAllDescription:"确认删除?将删除所有会话(置顶除外)。",deleteAllButton:"删除所有会话",deleteEmptyTitle:"删除空会话",deleteEmptyDescription:"确认删除?将删除没有消息内容的会话(置顶除外)。",deleteEmptyButton:"删除空会话",clearLocalStorageTitle:"清空本地存储",clearLocalStorageDescription:"确认清空?将删除所有本地存储数据并重置应用。",clearLocalStorageButton:"清空本地存储",confirmDeleteAll:"确认,全部删除",confirmDeleteEmpty:"确认,删除空会话",confirmClear:"确认,清空",cancel:"取消",dangerZone:"危险操作",dangerDescription:"以下操作不可撤销,所有数据将被永久删除。",resetApplicationTitle:"重置应用",resetApplicationIntro:"确认执行以下操作:",resetStepDeleteAllSessions:"删除所有会话(包括置顶)",resetStepClearStorage:"清空所有本地存储数据",resetStepResetConfig:"将 config.json 重置为默认值",resetStepSetupFlow:"下次启动时触发初始化流程",resetStepReplayGuide:"重播功能引导",resetStepReload:"重新加载应用",resetConfirm:"确认,重置全部",resetButton:"重置应用(清空全部数据)",runningVersion:"运行版本",runningVersionDesc:"当前运行的 Lotus 前端版本。"},configTab:{tabs:{general:"常规",tools:"工具"},loadConfigFailed:"加载配置失败",invalidConfig:"配置无效",saveConfigSuccess:"配置保存成功",saveConfigFailed:"保存配置失败",toolsLoadFailed:"加载可用工具失败",toolsReloadSuccess:"工具列表已刷新",toolsSaveSuccess:"工具设置保存成功",toolsSaveFailed:"保存工具设置失败",backendSaved:"后端地址已保存",backendResetDefault:"后端地址已重置为默认值",backendUrlEmpty:"后端地址不能为空",backendUrlInvalidProtocol:"后端地址必须以 http:// 或 https:// 开头",backendUrlInvalidUrl:"后端地址不是有效的 URL",backendUrlMustEndWithV1:'后端地址必须以 "/v1" 结尾',providerMovedTitle:"Provider 配置已迁移",providerMovedDescription:"GitHub Copilot 和其他 Provider 配置已迁移到 Provider Settings 标签页,请前往那里进行配置。",backendApiBaseUrlTitle:"后端 API 基础地址",backendApiPlaceholder:"http://127.0.0.1:9562/v1",backendApiHint:"必须包含 /v1 路径",accessPasswordTitle:"访问密码",accessPassword:{helperNotEnabled:"未设置访问密码。设置后,远程访问需要先输入密码,本地 loopback 访问可直接绕过。",helperLocalBypass:"当前是本地访问,可直接修改访问密码,无需输入当前密码。",helperRemote:"当前是远程访问。修改访问密码前,必须先输入当前密码。",loadStatusFailed:"加载访问状态失败",updated:"访问密码已更新",enabled:"访问密码已设置",updateFailed:"更新访问密码失败",statusEnabled:"访问密码已启用",statusDisabled:"访问密码未启用",currentPasswordLabel:"当前密码",newPasswordLabel:"新密码",setPasswordLabel:"设置密码",confirmPasswordLabel:"确认密码",updateAction:"更新访问密码",enableAction:"启用访问密码",validation:{currentPasswordRequired:"请输入当前密码",newPasswordRequired:"请输入新密码",confirmPasswordRequired:"请再次输入新密码",minLength:"密码长度至少 4 位",passwordMismatch:"两次输入的密码不一致"}},resetToDefault:"恢复默认",save:"保存",language:"语言",languageEnglish:"English",languageChinese:"简体中文",languageTraditionalChinese:"繁體中文",languageFrench:"Français",languageJapanese:"日本語",languageHindi:"हिन्दी",toolsTitle:"工具可用性",toolsDescription:"控制每个工具是否可以发送给 AI 模型。关闭后,该工具不会出现在模型可用工具列表中。",subagentsTitle:"子代理 (Sub-agents)",subagentsDescription:"主代理派生的子代理均以独立的操作系统 Actor 进程运行:崩溃隔离、真并行、可独立取消。",subagentMaxConcurrent:"最大并发 Actor 数",subagentMaxConcurrentHint:"同时运行的 actor 进程上限,超出的派生请求排队等待。留空使用默认值(8)。",memoryTitle:"Memory 与 Auto Dream",memoryDescription:"管理 Bamboo 的记忆层:会话记忆用于当前工作连续性,长期记忆用于沉淀 durable knowledge,而 Auto Dream 负责在后台更新 Dream Notebook 并提取长期记忆候选项。",autoDreamEnabled:"启用 Auto Dream",autoDreamEnabledHint:"在后台自动维护 Dream Notebook,并提取长期记忆候选项。",memoryModelMovedTitle:"记忆模型已迁移到 Provider Settings",memoryModelMovedDescription:"记忆背景模型现在统一在 Provider Settings 的 Model Preferences 中配置,这里保留 Auto Dream 作为系统级开关。",backgroundModel:"后台记忆模型",backgroundModelPlaceholder:"留空则使用当前 Provider 的 fast model",backgroundModelHint:"可选的专用 memory summarization / reflection 模型。若留空,Bamboo 会回退到当前 Provider 的 fast model。",toolsEmpty:"当前没有可用工具。",reloadTools:"刷新工具列表",loadBambooConfigFailed:"加载 Bamboo 配置失败",bambooConfigSaved:"Bamboo 配置已保存",saveBambooConfigFailed:"保存 Bamboo 配置失败"},networkCard:{title:"网络设置",guideTip:"如果您在公司代理后面,可以在此配置 HTTP/HTTPS 代理和凭据。",httpProxy:"HTTP 代理",httpsProxy:"HTTPS 代理",proxyPlaceholder:"http://proxy.example.com:8080",proxyAuthTitle:"代理认证",proxyConfiguredForUser:"已为用户 {{username}} 配置认证",clearCredentials:"清除凭据",username:"用户名",password:"密码",apply:"应用",credentialsStorageNote:"代理凭据会加密存储在 ~/.bamboo/config.json",reload:"重新加载",save:"保存"},modelMappingCard:{loadProviderFailed:"加载 Provider 配置失败",loadMappingsFailed:"加载现有映射失败",loadModelsFailed:"加载模型失败",loadModelsHint:"加载模型失败,请检查 Provider 配置。",mappingSaved:"模型映射已保存",mappingSaveFailed:"保存模型映射失败",enterModelName:"请输入模型名称",customMappingSaved:"自定义模型映射已保存",customMappingSaveFailed:"保存自定义模型映射失败",collapseTitle:"Anthropic 模型映射",description:"配置当 Claude CLI 请求特定模型时,应该使用的 {{provider}} 模型。",loadModelsErrorTitle:"加载模型失败",retry:"重试",loadingModels:"模型加载中...",modelTypeOpus:"Opus",modelTypeOpusDescription:'匹配包含 "opus" 的模型',modelTypeSonnet:"Sonnet",modelTypeSonnetDescription:'匹配包含 "sonnet" 的模型',modelTypeHaiku:"Haiku",modelTypeHaikuDescription:'匹配包含 "haiku" 的模型',selectModelPlaceholder:"选择 {{label}} 模型",customModelOption:"自定义模型...",mappedModelNotFound:'映射模型 "{{model}}" 不在当前 Provider 的可用模型列表中',refreshModels:"刷新模型",currentProvider:"当前 Provider",loadingProvider:"加载中...",availableModels:"可用模型数量",cached:"(缓存)",storedIn:"存储位置",customModalTitle:"输入自定义模型名称",customModalDescription:"为 {{modelType}} 输入自定义模型名称",customModalPlaceholder:"例如:gpt-4-turbo-preview",customModalNote:"注意:请确认该模型名称对当前 Provider 有效。",save:"保存",cancel:"取消"},modelTab:{selectModelTitle:"选择模型",loadingModels:"正在加载模型...",selectModelPlaceholder:"请选择模型",backendApiBaseUrlTitle:"后端 API 基础地址",resetToDefault:"恢复默认",save:"保存",backendApiHint:"必须是包含 /v1 的完整基础地址(例如 {{example}})。"},mermaidTab:{title:"Mermaid 图表设置",description:"自定义 Mermaid 图在聊天中的渲染方式",themeCardTitle:"主题",themeLabel:"Mermaid 主题",themeTooltip:"选择内置 Mermaid 主题。Default 和 Neutral 会根据应用主题自动切换明暗。",themeOptions:{default:"Default(自动明/暗)",neutral:"Neutral(自动明/暗)",dark:"Dark",forest:"Forest(绿色调)",base:"Base(极简)"},themeDescriptionsTitle:"主题说明:",themeDescriptions:{default:"Default:经典 Mermaid 风格,自动适配明/暗主题",neutral:"Neutral:灰度风格,自动适配明/暗主题",dark:"Dark:始终使用暗色主题",forest:"Forest:绿色配色,适合技术图表",base:"Base:最小化样式,适合自定义主题"},globalCardTitle:"全局设置",fontSizeLabel:"字体大小",fontSizeTooltip:"图表文本的基础字号(像素)",defaultZoomLabel:"默认缩放",defaultZoomTooltip:"图表初始缩放比例(1.0 = 100%)",responsiveWidthLabel:"自适应宽度",responsiveWidthTooltip:"开启后图表会自适应容器宽度;关闭后使用固定宽度。",switchAuto:"自动",switchFixed:"固定",flowchartCardTitle:"流程图设置",flowchartNodeSpacingLabel:"节点间距",flowchartNodeSpacingTooltip:"节点之间的水平间距",flowchartRankSpacingLabel:"层级间距",flowchartRankSpacingTooltip:"层与层之间的垂直间距",flowchartCurveTypeLabel:"连线类型",flowchartCurveTypeTooltip:"连接线使用的曲线类型",flowchartCurveOptions:{basis:"平滑(Basis)",linear:"线性",cardinal:"Cardinal"},sequenceCardTitle:"时序图设置",sequenceActorMarginLabel:"参与者间距",sequenceActorMarginTooltip:"参与者之间的间距",sequenceMessageMarginLabel:"消息间距",sequenceMessageMarginTooltip:"消息之间的间距",sequenceActorWidthLabel:"参与者宽度",sequenceActorWidthTooltip:"每个参与者框的宽度",sequenceActorHeightLabel:"参与者高度",sequenceActorHeightTooltip:"每个参与者框的高度",ganttCardTitle:"甘特图设置",ganttBarHeightLabel:"任务条高度",ganttBarHeightTooltip:"每个任务条的高度",ganttTopPaddingLabel:"顶部留白",ganttTopPaddingTooltip:"图表顶部的留白间距",resetToDefaults:"恢复默认",previewTitle:"预览",previewDescription:"修改会立即生效。可新建或查看图表以查看效果。"},modelLimits:{title:"Token 预算模型限制",descriptionPrefix:"为特定模型覆盖 token 预算;未覆盖的模型使用全局默认值。",descriptionSuffix:"保存后全局生效,由后端解析器使用。",defaultsTitle:"你用过的模型",defaultsDescription:"你在对话中选择并使用过的模型会自动出现在这里。未自定义前都使用全局默认值。",globalDefault:"全局默认:{{context}} 上下文 / {{output}} 输出 token。",emptyState:"暂无模型。你在对话中选择并使用过的模型会自动出现在这里。",loadFailed:"加载模型限制设置失败",saveSuccess:"模型限制已保存",saveFailed:"保存模型限制设置失败",resetSuccess:"已重置——所有模型现在都使用全局默认值",resetFailed:"重置模型限制设置失败",badge:{default:"默认 · 未修改",defaultTooltip:"正在使用全局默认值。未修改的行会自动跟随后续默认值更新。",customized:"已自定义"},columns:{model:"模型",contextWindow:"上下文窗口",maxOutput:"最大输出",safetyMargin:"安全边距",status:"状态",actions:"操作"},placeholders:{model:"例如 gpt-4o",optional:"可选"},actions:{customize:"自定义",revert:"恢复默认",remove:"删除",addModel:"新增模型",save:"保存",resetToDefaults:"全部恢复默认",reload:"重新加载"},validation:{modelPatternEmpty:"模型模式不能为空。",duplicateModelPattern:"模型模式重复:{{pattern}}",contextWindowMin:"{{pattern}} 的上下文窗口最小为 1000。",maxOutputMin:"{{pattern}} 的最大输出最小为 1。",maxOutputExceedsContext:"{{pattern}} 的最大输出必须小于或等于上下文窗口。",safetyMarginNegative:"{{pattern}} 的安全边距不能为负数。",safetyMarginTooLarge:"{{pattern}} 的安全边距必须小于上下文窗口。"}},common:{loading:"加载中...",successful:"成功",failed:"失败"},systemPromptManager:{title:"系统提示词管理",addButton:"添加提示词",defaultPromptLocked:"默认系统提示词已锁定,无法编辑。",updateSuccess:"提示词更新成功",addSuccess:"提示词添加成功",saveError:"保存提示词失败,请重试。",deleteSuccess:"提示词删除成功",deleteError:"删除提示词失败,请重试。",deleteConfirm:"确认删除此提示词吗?",defaultTag:"默认(锁定)",editTitle:"编辑系统提示词",addTitle:"新增系统提示词",nameLabel:"提示词名称",nameRequired:"请输入提示词名称!",descriptionLabel:"提示词描述",descriptionRequired:"请输入提示词描述!",contentLabel:"提示词内容",contentRequired:"请输入提示词内容!"},envVars:{title:"环境变量",description:"这些变量会注入到 Bash 工具进程。密钥变量会在存储时加密。",fetchError:"加载环境变量失败",created:"变量已创建",updated:"变量已更新",saveError:"保存变量失败",deleted:"变量已删除",deleteError:"删除变量失败",addButton:"添加变量",noVars:"尚未配置环境变量",addTitle:"添加环境变量",editTitle:"编辑变量",save:"保存",cancel:"取消",name:"名称",nameRequired:"变量名不能为空",nameInvalid:"必须以字母或下划线开头,后续仅可包含字母、数字或下划线",value:"值",valueRequired:"新建变量时必须填写值",valueEditHint:"留空则保留现有值",valuePlaceholder:"输入值",valuePlaceholderEdit:"输入新值或留空",secret:"密钥",secretHint:"密钥变量会加密存储,并在界面中脱敏显示",descriptionField:"说明",descriptionPlaceholder:"可选说明",type:"类型",plain:"普通",descriptionCol:"说明",actions:"操作",deleteConfirm:"确认删除该变量?",yes:"是",no:"否",notSet:"(未设置)",empty:"(空)"},promptsTab:{title:"系统提示增强",mermaidEnhancement:"Mermaid 增强",taskListRules:"共享任务规则",copilotConclusionWithOptionsBeforeFinish:"Copilot 结束前 conclusion_with_options",switchOn:"开",switchOff:"关",enhancementPlaceholder:"为每次系统提示追加全局增强文本。",saveEnhancement:"保存增强",description:"该文本会先追加,然后再拼接已启用的系统增强,最后再发送请求。"},hooksTab:{title:"图像 Hooks",enableImagePreflight:"启用图像预检 Hook",modeLabel:"模式",description:"Placeholder 模式会把图像改写为文本摘要(可能影响依赖真实图像数据的工具)。OCR 目前仅支持 Windows。",loadFailed:"加载 Hooks 设置失败",updateFailed:"更新 Hooks 失败",modeUpdateFailed:"更新 Hook 模式失败",enabled:"已启用图像 Hooks",disabled:"已禁用图像 Hooks",modeUpdated:"图像 Hook 模式已设置为:{{mode}}",mode:{placeholder:"占位符",error:"报错",ocr:"OCR(Windows)",vision:"视觉描述(LLM)"}},permissionsTab:{title:"强制确认命令",description:"匹配这些规则的工具调用会始终请求你确认——即使会话开启了「绕过权限」。内置的高危 shell 命令检测(代码注入、写入敏感路径)始终生效;这里用于补充删除、推送等破坏性命令。语法:Tool(pattern),例如 Bash(rm -rf *)、Bash(git push *)、Write(/etc/**)。",placeholder:"例如 Bash(rm -rf *)",add:"添加规则",remove:"删除规则",examples:"快速添加:",empty:"暂无强制确认规则。内置高危命令检测仍然生效。",duplicate:"该规则已存在。",loadFailed:"加载权限规则失败",saveSuccess:"权限规则已保存",saveFailed:"保存权限规则失败"},keywordMaskingTab:{title:"关键词脱敏",addKeyword:"添加关键词",description:"配置发送到 Copilot API 前需要脱敏的关键词。可使用精确匹配或正则匹配,匹配内容会被替换为 [MASKED]。",empty:"暂无关键词脱敏规则",cancel:"取消",patternPlaceholder:"输入要匹配的模式",examples:"示例",exactMatch:"精确匹配",regexPattern:"正则模式",enabled:"启用",disabled:"禁用",sampleText:"示例文本",sampleTextPlaceholder:"输入示例文本",maskedPreview:"脱敏预览",emptyPattern:"(空)",loadFailed:"加载关键词脱敏配置失败",saveFailed:"保存配置失败",saveSuccess:"关键词脱敏配置已保存",validationFailedPrefix:"校验失败",patternRequired:"匹配模式不能为空",invalidRegexPattern:"无效的正则表达式模式",example:{literalToken:"脱敏字面量 token",githubTokens:"脱敏 GitHub token",awsKeys:"脱敏 AWS Key",emails:"脱敏邮箱地址"}},schedulesTab:{loadFailed:"加载调度失败",loadSessionsFailed:"加载调度会话失败",createFailed:"创建调度失败",updateFailed:"更新调度失败",deleteFailed:"删除调度失败",runNowFailed:"立即执行失败",taskMessageRequired:"启用自动执行时必须填写任务消息",created:"调度已创建",updated:"调度已更新",deleted:"调度已删除",enqueuedRun:"已加入执行队列",loading:"加载中...",yes:"是",no:"否",optional:"(可选)",defaultName:"我的调度",createTitle:"创建调度",listTitle:"调度列表",scheduleSessionsTitle:"调度会话",scheduleRunsTitle:"调度运行历史",noSessionsYet:"暂无会话。",noRunsYet:"暂无运行记录。",loadRunsFailed:"加载调度运行记录失败",editTitle:"编辑调度",nonIntervalReadOnly:"仅间隔触发器支持快速间隔编辑。",columns:{name:"名称",status:"状态",activity:"活动",autoExecute:"自动执行",model:"模型",enabled:"启用",intervalSeconds:"间隔(秒)",nextRun:"下次运行",lastRun:"最近运行",actions:"操作"},triggerTypes:{interval:"间隔",daily:"每天",weekly:"每周",monthly:"每月",cron:"Cron"},misfirePolicyOptions:{runOnce:"执行一次",skip:"跳过",catchUpAll:"补执行全部",catchUpWindow:"补执行窗口"},overlapPolicyOptions:{queueOne:"排队一个",skip:"跳过重叠运行",allow:"允许重叠"},form:{name:"名称",triggerType:"触发类型",intervalSeconds:"间隔秒数",dailyHour:"小时",dailyMinute:"分钟",weeklyWeekdays:"工作日",monthlyDays:"月份天数",monthlyDaysPlaceholder:"例如 1, 15, 28",cronExpr:"Cron 表达式",cronExprPlaceholder:"例如 0 9 * * 1-5",timezone:"时区",timezonePlaceholder:"例如 Asia/Shanghai",startAt:"开始时间",endAt:"结束时间",datetimePlaceholder:"RFC3339 格式,例如 2026-04-05T09:00:00Z",misfirePolicy:"错过策略",overlapPolicy:"重叠策略",catchUpWindowMaxRuns:"补执行最大运行次数",catchUpWindowMaxLatenessSeconds:"补执行最大延迟(秒)",enabled:"启用",taskMessage:"任务消息",taskMessagePlaceholder:"(可选)要执行的任务",model:"模型",modelPlaceholder:"(可选)例如 gpt-4o-mini",modelRequiredIfAuto:"启用自动执行时必填",autoExecute:"自动执行",systemPrompt:"系统提示词",workspacePath:"工作区路径",enhancePrompt:"增强提示"},validation:{nameRequired:"名称不能为空",triggerRequired:"触发配置不能为空",intervalRequired:"间隔不能为空",weekdaysRequired:"至少选择一个工作日",monthDaysRequired:"至少选择一个月份天数",invalidMonthDays:"月份天数必须是 1-31 之间的逗号分隔值",cronRequired:"Cron 表达式不能为空"},actions:{create:"创建",refresh:"刷新",edit:"编辑",runNow:"立即执行",sessions:"会话",runs:"运行记录",delete:"删除",open:"打开",save:"保存"},runHistory:{columns:{status:"状态",scheduledFor:"计划时间",startedAt:"开始时间",completedAt:"完成时间",session:"会话",duration:"耗时",outcome:"结果"}},weekdays:{mon:"周一",tue:"周二",wed:"周三",thu:"周四",fri:"周五",sat:"周六",sun:"周日"},triggerLabels:{interval:"{{type}} · {{seconds}}s",daily:"{{type}} · {{time}}",weekly:"{{type}} · {{weekdays}}",monthly:"{{type}} · {{days}}",cron:"{{type}} · {{expr}}"},statusLabels:{running:"运行中",queued:"排队中",failing:"失败中",disabled:"已禁用",healthy:"正常",idle:"空闲"},statusDetails:{active:"{{count}} 个活跃",pending:"{{count}} 个等待",consecutiveFailures:"连续 {{count}} 次失败",lastRunSucceeded:"上次运行成功"},activityLabels:{queued:"排队: {{count}}",running:"运行: {{count}}",ok:"成功: {{count}}",fail:"失败: {{count}}"}},sessionsTab:{currentSessionTitle:"当前会话",id:"ID",kind:"类型",clearMessages:"清空消息",clearMessagesTitle:"清空会话消息",clearMessagesContent:"将清空当前会话的消息/附件,但保留会话条目。",clear:"清空",cancel:"取消",sessionCleared:"会话已清空",noActiveSession:"当前没有活跃会话。",bulkCleanupTitle:"批量清理",keepPinned:"保留置顶",deleteAll:"删除全部",deleteAllTitle:"删除所有会话",deleteAllKeepPinned:"删除所有会话(保留置顶)。",deleteAllIncludePinned:"删除所有会话(包含置顶)。",deleteEmpty:"删除空会话",deleteEmptyTitle:"删除空会话",deleteEmptyKeepPinned:"删除空会话(保留置顶)。",deleteEmptyIncludePinned:"删除空会话(包含置顶)。",deleteChildren:"删除子会话",deleteChildrenTitle:"删除子会话",deleteChildrenKeepPinned:"删除所有子会话(保留置顶)。",deleteChildrenIncludePinned:"删除所有子会话(包含置顶)。",delete:"删除",cleanupComplete:"清理完成",devResetTitle:"开发重置",devResetDescription:"会话存储绿地重置(删除 sessions/ 并重置 sessions.json)。",devResetAction:"开发重置会话",devResetConfirmTitle:"重置会话存储(开发)",devResetConfirmContent:"将删除所有会话(包含置顶/子会话)并重置会话索引。刷新后会创建一个新的空会话。",reset:"重置",devResetDone:"会话存储已重置"},workflowsTab:{title:"工作流",description:"工作流会以 Markdown 文件存储在 `~/.bamboo/workflows`。可在聊天中使用 `/name` 插入工作流。",loadFailed:"加载工作流失败",loadContentFailed:"加载工作流内容失败",invalidName:"工作流名称不合法",nameAlreadyExists:"同名工作流已存在",saved:"工作流已保存",saveFailed:"保存工作流失败",deleted:"工作流已删除",deleteFailed:"删除工作流失败",refresh:"刷新",newWorkflow:"新建工作流",save:"保存",empty:"暂无工作流",namePlaceholder:"工作流名称",contentPlaceholder:`# 工作流标题
|
|
11
11
|
|
|
12
|
-
在这里描述工作流步骤。`},providerTab:{title:"LLM 提供商配置",description:"配置你偏好的 LLM 提供商。点击“保存并应用配置”后会保存并生效。",currentProvider:"当前提供商",activeProvider:"当前激活的 LLM 提供商",selectProviderRequired:"请选择提供商",saveAndApply:"保存并应用配置",loadConfigFailed:"加载提供商配置失败",checkStatusFailed:"检查状态失败",startCopilotAuthFailed:"启动 Copilot 认证失败",copilotAuthSuccess:"Copilot 认证成功!",providerReloaded:"提供商已使用新认证重新加载。",completeAuthFailed:"完成认证失败,请重试。",userCodeCopied:"用户代码已复制到剪贴板!",copyCodeFailedPrefix:"复制失败,请手动复制:",logoutSuccess:"已退出 Copilot",logoutFailed:"退出 Copilot 失败",unknownError:"未知错误",invalidConfig:"配置无效",invalidConfigPrefix:"配置无效",invalidRequestOverridesJson:"{{provider}} 的 request_overrides JSON 无效:{{error}}",copilotAuth:"GitHub Copilot 认证",authStatus:"状态:",authenticated:"已认证",notAuthenticated:"未认证",unknown:"未知",refreshStatus:"刷新",copilotAuthHelp:"Copilot 需要 OAuth 认证。点击下方按钮开始设备码流程。",authenticateCopilot:"认证 Copilot",fetchModelsCopilotFailed:"获取模型失败,请先完成 Copilot 认证后重试。",fetchModelsFailed:"获取模型失败,请检查 API Key 与 Base URL。",noModelsReturned:"未返回模型,请先完成 Copilot 认证后再获取。",foundModels:"已找到 {{count}} 个可用模型",fetchModelsErrorPrefix:"获取模型失败",saveConfigSuccess:"配置保存成功",saveConfigFailed:"保存配置失败",saveConfigErrorPrefix:"保存配置失败",applyConfigSuccess:"配置应用成功,新对话将使用最新配置。",applyConfigFailed:"应用配置失败",applyConfigErrorPrefix:"应用配置失败",modelUpdated:"模型更新成功",updateModelFailed:"更新模型失败",updateModelErrorPrefix:"更新模型失败",fetchingModels:"正在获取模型...",refreshModelsFrom:"从 {{source}} 刷新可用模型",fetchModelsFrom:"从 {{source}} 获取可用模型",saveModelChangeFailed:"保存模型变更失败",fetchModelsFailedShort:"获取模型失败",retry:"重试",openaiConfigTitle:"OpenAI 配置",openaiConfigDescription:"输入 OpenAI API Key 以使用 GPT 模型。你也可以指定自定义 Base URL。",openaiApiKey:"OpenAI API Key",openaiApiKeyRequired:"请输入 OpenAI API Key",openaiApiKeyPlaceholder:"sk-...",baseUrlOptional:"Base URL(可选)",openaiBaseUrlPlaceholder:"https://api.openai.com/v1",openaiBaseUrlHelp:"留空将使用默认 OpenAI 接口地址;如有需要请包含完整路径(例如 /v1)。",defaultModel:"默认模型",modelPreferences:"模型偏好",fastModel:"快速模型(可选)",fastModelHelp:"用于标题生成、Mermaid 修复、摘要等轻量任务的低成本/快速模型。未设置时使用默认模型。",taskSummaryModel:"任务总结模型(可选)",taskSummaryModelHelp:"用于任务型总结与对话压缩的专用模型。未设置时依次回退到记忆背景模型、快速模型、默认模型。",memoryBackgroundModel:"记忆背景模型(可选)",memoryBackgroundModelHelp:"用于记忆重排、回召后台任务与 Auto Dream 的专用模型。未设置时回退到快速模型。",subAgentModel:"Sub Agent 模型(可选)",subAgentModelHelp:"新建 Sub Agent 时默认使用的模型。未设置时使用快速模型,再回退到默认模型。",visionModel:"视觉模型(可选)",visionModelHelp:"用于图片理解的视觉模型。当 hooks.image_fallback.mode 设为 'vision' 时,此模型会将图片描述为文本,让纯文本模型也能理解图片内容。未设置时使用默认模型。",sameAsDefault:"与默认模型相同",selectModelRequired:"请选择模型",selectModel:"选择模型",responsesOnlyModelsOptional:"仅 Responses 模型(可选)",responsesOnlyModelsPlaceholder:'例如 "gpt-5.3-codex", "gpt-5*"',responsesOnlyHelp1:"部分模型仅支持 OpenAI Responses API(不支持 chat/completions)。可在此添加模型 ID 强制 Bamboo 使用",responsesOnlyHelp2:"支持精确匹配(如 gpt-5.3-codex)和后缀 * 的前缀匹配(如 gpt-5*)。",anthropicConfigTitle:"Anthropic 配置",anthropicConfigDescription:"输入 Anthropic API Key 以使用 Claude 模型。",anthropicApiKey:"Anthropic API Key",anthropicApiKeyRequired:"请输入 Anthropic API Key",anthropicApiKeyPlaceholder:"sk-ant-...",anthropicBaseUrlPlaceholder:"https://api.anthropic.com/v1",anthropicBaseUrlHelp:"留空将使用默认 Anthropic 接口地址;如有需要请包含完整路径(例如 /v1)。",maxTokensOptional:"最大 Tokens(可选)",maxTokensHelp:"生成时允许的最大 token 数",maxTokensPlaceholder:"4096",geminiConfigTitle:"Google Gemini 配置",geminiConfigDescription:"输入 Google AI API Key 以使用 Gemini 模型。",geminiApiKey:"Gemini API Key",geminiApiKeyRequired:"请输入 Gemini API Key",geminiApiKeyPlaceholder:"AIza...",geminiBaseUrlPlaceholder:"https://generativelanguage.googleapis.com/v1beta",geminiBaseUrlHelp:"留空将使用默认 Google AI 接口地址;必要时可填写完整路径。",copilotConfigTitle:"GitHub Copilot 配置",copilotConfigDescription:"GitHub Copilot 默认使用 OAuth 认证,无需 API Key。或者,您可以提供个人访问令牌 (PAT) 进行直接 API 访问。",copilotApiKey:"个人访问令牌 (可选)",copilotApiKeyHelp:"GitHub 个人访问令牌,用于 API 访问(替代 OAuth 设备流)",copilotApiKeyPlaceholder:"ghp_... 或 github_pat_...",authStatusTitle:"认证状态",logoutCopilot:"退出 Copilot",headlessAuth:"无头认证",headlessAuthHelp:"在控制台输出登录链接,而不是自动打开浏览器",noModelsLoaded:"尚未加载模型,点击“从 backend 获取可用模型”。",authFirstThenFetch:"请先完成 Copilot 认证,再获取模型。",copilotUsageTitle:"使用 GitHub Copilot:",copilotUsageStep1:"确保你已开通有效的 GitHub Copilot 订阅",copilotUsageStep2:"点击“认证 Copilot”启动设备码流程",copilotUsageStep3:"按终端提示完成认证",copilotAuthModalTitle:"Copilot 认证",cancel:"取消",completedAuthorization:"我已完成授权",browserOpened:"浏览器已自动打开",authStep1:"浏览器中应已打开 GitHub 页面",authStep2:"复制下方代码并粘贴到 GitHub 页面",authStep3:"在 GitHub 点击“Continue”完成授权",visitUrl:"1. 打开该 URL:",enterCode:"2. 输入此代码:",copied:"已复制!",copyCode:"复制代码",afterContinueHint:"在 GitHub 点击 Continue 后,请点击下方“我已完成授权”。",providerNames:{openai:"OpenAI",anthropic:"Anthropic",gemini:"Gemini",copilot:"Copilot"},providerModelRef:"提供商模型目录",providerModelRefHelp:"使用后端提供的模型目录进行模型选择。启用后,模型选择器将显示提供商目录中的可用模型,而非手动配置的模型。",catalogModeInfo:"模型来自提供商目录。",fetchAllModels:"获取所有模型",fetchingAllModels:"正在获取模型...",fetchModelsSuccess:"成功获取 {{count}} 个提供商的模型",fetchModelsPartialSuccess:"已获取 {{success}}/{{total}} 个提供商的模型",providerNotConfigured:"未配置",capabilityVision:"视觉",capabilityTools:"工具",capabilityReasoning:"推理",refreshCatalog:"刷新目录",noCatalogModels:"未发现模型,点击“获取所有模型”加载。",reasoningEffortDefault:"默认",reasoningEffortOptional:"推理强度(可选)",reasoningEffortHelp:"通过此提供商发送请求的默认推理强度。",activeProviderReasoningEffort:"当前提供商推理强度",reasoningEffortUpdated:"推理强度已更新",updateReasoningEffortErrorPrefix:"更新推理强度失败",updateReasoningEffortFailed:"更新推理强度失败",advancedRequestOverrides:"高级请求覆盖 (JSON)",advancedRequestOverridesHelp:"自定义提供商请求头/请求体补丁规则。",envVarInjection:"环境变量注入:",bodhiApiKey:"Bodhi API 密钥",bodhiBaseUrl:"基础 URL",targetProvider:"目标提供商",bodhiBaseUrlExtra:"Bodhi 服务端端点地址",targetProviderExtra:"通过 Bodhi 路由到的上游提供商",apiKeyRequired:"请输入 API 密钥",apiKeyKeepPlaceholder:"已配置,留空保持不变",bodhiApiKeyPlaceholder:"bhi_sk_...",bodhiBaseUrlPlaceholder:"http://localhost:8080",targetProviderPlaceholder:"openai"},mcpTab:{status:{connecting:"连接中",ready:"就绪",degraded:"降级",stopped:"已停止",error:"错误"},statusGuideTitle:"状态说明:",statusHelp:{connecting:"服务器正在启动或重连中",ready:"服务器已连接,工具可正常使用",degraded:"服务器部分可用,部分工具可能失败",stopped:"服务器未运行",error:"服务器启动失败或运行时发生错误"},statusLastError:"最近错误:{{error}}",serverDeleted:"MCP 服务器已删除",deleteServerFailed:"删除 MCP 服务器失败",connectedTo:"已连接到 {{name}}",connectServerFailed:"连接 MCP 服务器失败",disconnected:"已断开 {{name}}",disconnectServerFailed:"断开 MCP 服务器失败",toolsRefreshedFor:"{{name}} 的工具已刷新",refreshToolsFailed:"刷新工具失败",statusRefreshed:"MCP 状态已刷新",refreshStatusFailed:"刷新 MCP 状态失败",noServerForEditing:"没有可编辑的服务器",savedServer:"已保存 {{name}}",addedServer:"已添加 {{name}}",saveServerFailed:"保存 MCP 服务器失败",copiedConfig:"MCP 配置已复制到剪贴板",clipboardUnavailable:"剪贴板不可用,已在弹窗中显示导出内容。",invalidJsonPrefix:"JSON 无效",unknownError:"未知错误",jsonMustBeObject:"JSON 必须是对象",missingMcpServers:'缺少 mcpServers。请粘贴完整 Claude Desktop 风格配置:{ "mcpServers": { ... } }',importSummary:"已导入 {{count}} 个服务器(新增 {{added}},更新 {{updated}},删除 {{removed}})。启动失败 {{failed}} 个。",importStartFailures:"部分服务器未成功启动,配置已保存,请在服务器列表查看错误。",importFailed:"导入 MCP 服务器失败",overviewTitle:"MCP 概览",overviewDescription:"配置外部 MCP 服务器并查看已注册的工具别名。",totalServers:"服务器总数:{{count}}",totalTools:"工具总数:{{count}}",serversTitle:"MCP 服务器",addServer:"添加服务器",refreshAll:"全部刷新",export:"导出",import:"导入",importModalTitle:"导入 MCP 服务器",importHint:"粘贴 Claude Desktop 风格配置片段,例如:",importModeMerge:"合并(Upsert)",importModeReplace:"替换(删除其余)",replaceWarning:"替换模式会删除不在导入 mcpServers 中的现有 MCP 服务器。"},mcpServerTable:{columns:{name:"名称",transportType:"传输类型",status:"状态",toolCount:"工具数",actions:"操作"},transportOptions:{sse:"SSE",stdio:"Stdio"},deleteTitle:"删除 MCP 服务器",deleteDescription:"确认删除服务器“{{name}}”?",empty:"尚未配置 MCP 服务器",actions:{edit:"编辑",delete:"删除",disconnect:"断开",connect:"连接",refreshTools:"刷新工具"}},mcpToolList:{title:"MCP 工具",selectServerHint:"请选择一个服务器以查看其 MCP 工具",empty:"该服务器没有可用工具",noDescription:"暂无描述",aliasMapping:"别名映射",parametersSchema:"参数 Schema"},mcpServerForm:{jsonMustBeObject:"JSON 必须是对象",detectedBulkConfig:"检测到 mcpServers(批量配置)。批量导入请使用 MCP 标签页中的“导入”按钮,或在这里粘贴单个服务器配置。",missingIdField:"缺少或无效的 id 字段",missingTransportField:"缺少或无效的 transport 字段",missingTransportInfo:"缺少传输信息。应包含 transport(Bodhi 格式)或 command/url(主流 MCP 格式)。",invalidJson:"JSON 无效:{{message}}",unknownError:"未知错误",editTitle:"编辑 MCP 服务器",addTitle:"添加 MCP 服务器",save:"保存",modeForm:"表单",modeJson:"JSON",jsonError:"JSON 错误",serverId:"服务器 ID",serverIdRequired:"服务器 ID 不能为空",serverIdPatternError:"仅支持字母、数字、下划线和连字符",displayName:"显示名称",enabled:"启用",enabledHelp:"禁用的服务器会保留在配置中,但不会自动启动。",transportType:"传输类型",transportTypeRequired:"传输类型不能为空",transportOptions:{stdio:"Stdio",sse:"SSE"},command:"命令",commandRequired:"命令不能为空",arguments:"参数",argumentsPlaceholder:"输入参数后按 Enter 添加",envVars:"环境变量",addEnv:"添加环境变量",keyRequired:"键不能为空",sseUrl:"SSE URL",sseUrlRequired:"SSE URL 不能为空",validUrlRequired:"请输入有效 URL",headers:"请求头",addHeader:"添加请求头",headerNameRequired:"请求头名称不能为空"},metricsCards:{totalSessions:"会话总数",chatTokens:"聊天 Tokens",totalToolCalls:"工具调用总数",tokensSaved:"节约 Tokens",toolContextSavedTokens:"工具上下文节约 Tokens",compressionEvents:"压缩次数",avgSessionDuration:"平均会话时长"},forwardMetricsCards:{totalForwardRequests:"Forward 请求总数",successRate:"成功率",forwardTokens:"Forward Tokens",avgResponseTime:"平均响应时间"},unifiedMetricsCards:{totalRequests:"请求总数",totalTokens:"Tokens 总数",successRate:"成功率",avgResponseTime:"平均响应时间",chatSessions:"聊天会话",chatTokens:"聊天 Tokens",toolCalls:"工具调用",avgSessionDuration:"平均会话时长",tokensSaved:"节约 Tokens",compressionEvents:"压缩次数",totalMemories:"记忆总数",staleCandidates:"陈旧候选项",memoryProjects:"记忆项目数",lastReindex:"上次重建索引",forwardRequests:"Forward 请求",forwardTokens:"Forward Tokens",successful:"成功",failed:"失败"},metricsTable:{session:{columns:{session:"会话",model:"模型",status:"状态",started:"开始时间",duration:"耗时",tokens:"Tokens",toolCalls:"工具调用",messages:"消息数",action:"操作"},view:"查看"},forward:{columns:{id:"ID",endpoint:"端点",model:"模型",type:"类型",status:"状态",tokens:"Tokens",duration:"耗时",started:"开始时间",error:"错误"},typeStream:"流式",typeSync:"同步",totalRequests:"{{total}} 条请求",empty:"当前范围内暂无 forward 请求记录"}},metricsDashboard:{roundColumns:{round:"轮次",status:"状态",duration:"耗时",tokens:"Tokens",toolCalls:"工具调用"},compactStats:{combinedTokens:"合并 Tokens",chatTokens:"聊天 Tokens",forwardTokens:"Forward Tokens",avgTokensPerSession:"平均 Tokens / 会话",savedTokens:"节约 Tokens",toolContextSavedTokens:"工具上下文节约 Tokens",nonToolCompressionSavedTokens:"非工具压缩节约 Tokens",savedTokenRatio:"节约 / 聊天 Tokens",toolSavedShare:"工具节约占比",promptCachedToolOutputs:"Prompt 缓存工具输出数",compressionEvents:"压缩事件数",estimatedTimeSaved:"预估节省时长",estimatedEfficiencyLift:"预估效率提升",estimatedSpeedMultiplier:"预估速度倍率",estimatedSavedWorkdays:"预估节省工作日",avgRoundsPerSession:"平均轮次 / 会话",toolCallsPerSession:"工具调用 / 会话",activeSessionRate:"活跃会话占比",avgTokensPerForward:"平均 Tokens / Forward",forwardErrorRate:"Forward 错误率",streamingRatio:"流式占比",p95ForwardLatency:"P95 Forward 延迟",modelCoverage:"模型覆盖数",endpointCoverage:"端点覆盖数"},multiplierSuffix:"x",filtersTitle:"筛选",refresh:"刷新",startDate:"开始日期",endDate:"结束日期",model:"模型",daysOption:"{{value}} 天",granularity:{daily:"按天",weekly:"按周",monthly:"按月"},dashboardTitle:"仪表盘",tabs:{overview:"概览",analysis:"分析",records:"记录",chat:"聊天",skillsAndMcp:"技能 & MCP",forward:"Forward",memory:"记忆"},derivedMetricsTitle:"衍生指标(紧凑)",derivedMetricsSubtitle:"更多维度,同时保持页面紧凑",overviewSections:{scaleTitle:"规模与活跃度",scaleSubtitle:"集中查看 Chat、Forward、技能与记忆的总体使用规模。",efficiencyTitle:"压缩收益与效率优势",efficiencySubtitle:"重点展示上下文压缩,尤其是工具密集型工作流带来的真实节约。"},efficiencyHint:"这些指标优先使用真实运行统计:总节约 Tokens、工具上下文压缩节约、非工具压缩节约、压缩事件数,以及会话 / Forward 的平均负载与质量指标。",toolUsageTitle:"工具使用频次",noToolUsage:"当前范围内没有工具调用记录。",calls:"调用次数",activityHeatmapTitle:"每日活跃热力图",noActivity:"当前范围内没有活跃数据。",sessionsCount:"{{count}} 个会话",tokensAmount:"{{value}} tokens",sessionsTabLabel:"会话({{count}})",chatSessionsLabel:"聊天会话({{count}})",sessionsHint:"点击会话可查看完整轮次详情",forwardTabLabel:"Forward 请求({{count}})",detailedMetricsTitle:"详细指标",sessionMetricsTitle:"会话指标",loadingSessionDetails:"正在加载会话详情...",sessionDetail:{sessionId:"会话 ID",model:"模型",status:"状态",duration:"耗时",messages:"消息数",totalTokens:"总 Tokens",toolCalls:"工具调用"},noDetail:"暂无详情。",skillsAndMcp:{cards:{skillLoadCalls:"技能加载",uniqueSkills:"独立技能",mcpCalls:"MCP 调用",uniqueMcpServers:"MCP 服务器",uniqueMcpTools:"MCP 工具",coreToolCalls:"核心工具调用"},mix:{coreTools:"核心工具",skillLoads:"技能加载",mcpCalls:"MCP 调用"},meta:{uniqueTools:"{{count}} 个工具"},usageMixTitle:"使用构成",usageMixSubtitle:"在同一视图中对比核心工具、技能加载和 MCP 调用。",noUsageMix:"当前范围内暂无使用数据。",topSkillsTitle:"热门技能",topSkillsSubtitle:"统计匹配会话中的 load_skill 调用。",noSkills:"当前范围内未加载任何技能。",topMcpServersTitle:"热门 MCP 服务器",topMcpServersSubtitle:"服务器级别的 MCP 调用分布。",noMcpServers:"当前范围内无 MCP 活动记录。",topMcpToolsTitle:"热门 MCP 工具",topMcpToolsSubtitle:"调用频次最高的 MCP 工具别名。",noMcpTools:"当前范围内未调用任何 MCP 工具。",topCoreToolsTitle:"热门核心工具",topCoreToolsSubtitle:"标准化后的内置及服务器工具使用排名。",noCoreTools:"当前范围内未调用任何核心工具。"},forward:{performanceTitle:"Forward 性能",performance:{p95Latency:"P95 延迟",errorRate:"错误率",streamingRatio:"流式占比",endpointCoverage:"端点覆盖数"}},memory:{breakdownTitle:"记忆分布",byType:"按类型",byStatus:"按状态",byScope:"按范围",lastDream:"上次 Dream",lastReindex:"上次重建索引"}},charts:{tokenUsageOverTime:"Token 使用趋势",unifiedTokenUsageOverTime:"Token 使用趋势(Chat + Forward)",memoryTrendTitle:"记忆趋势",noTokenUsage:"暂无 token 使用数据",noMemoryTrend:"暂无记忆趋势数据",tokenUsageDescription:"按日期/周期展示 Prompt、Completion 与总 Tokens。",unifiedTokenUsageDescription:"按时间展示 Chat 与 Forward 的合并 token 使用。",memoryTrendDescription:"展示记忆新增、更新以及累计总量的时间变化。",total:"总计",prompt:"Prompt",completion:"Completion",chat:"Chat",forward:"Forward",totalMemories:"记忆总量",createdMemories:"新增记忆",updatedMemories:"更新记忆",modelDistribution:"模型分布",noModelMetrics:"暂无模型指标数据",modelDistributionDescription:"按模型展示总 token 消耗占比。",endpointDistribution:"端点分布",noForwardMetrics:"当前范围内暂无 forward 指标数据。"}},components:{markdown:{codeCopiedSuccess:"代码已复制到剪贴板",copyFailed:"复制失败",copyCodeAriaLabel:"复制代码"},jsonSchema:{field:"字段",type:"类型",required:"必填",yes:"是",no:"否",default:"默认值",description:"描述",noProperties:"架构中无属性"},workflowResult:{userWorkflow:"用户工作流",waitingForResult:"等待工作流结果...",executionFailed:"工作流执行失败",retryWorkflow:"重试工作流",copyParameters:"复制参数",copyResult:"复制结果",expandResult:"展开结果",collapseResult:"收起结果"},toolResult:{waiting:"等待中",waitingForResult:"等待结果...",executionFailed:"工具执行失败",copyResult:"复制结果",checkpoint:"检查点",checkpointNone:"无",diffTruncated:"差异内容过长,已截断显示",structuredToolResultHint:"工具结果 · {{tool}}",memory:{action:{inspect:"检查",rebuild:"重建"},totalMemories:"{{count}} 条记忆",staleCandidates:"候选陈旧项:{{count}}",coverage:"覆盖情况",viewsLabel:"视图:",indexesLabel:"索引:",stateFilesLabel:"状态文件:",lastReindexLabel:"上次重建索引:",lastDreamLabel:"上次梦境整理:",viewFiles:"视图文件",indexFiles:"索引文件",stateFiles:"状态文件",topicPaths:"主题路径",recentMemories:"最近记忆"}},toolCall:{liveOutput:"实时输出",keyParameters:"关键参数",fullParameters:"完整参数",copyParameters:"复制参数"},toolSteps:{title:"工具运行",running:"运行中…",runningInBackground:"后台运行中…",backgroundCompleted:"已完成",backgroundKilled:"已终止",backgroundFailed:"失败",viewFullOutput:"查看完整输出",details:"详情",preview:"预览",parameters:"参数",result:"结果",noResult:"暂无结果",intent:"意图",keyParameters:"关键参数",statusError:"错误",statusFinish:"完成",statusProcess:"执行中",statusWait:"等待"},plan:{executionPlan:"执行计划",goal:"目标",steps:"步骤",stepTitle:"步骤 {{number}}",reason:"原因",estimated:"预计",tools:"工具",prerequisites:"前置条件",potentialRisks:"潜在风险({{count}})",totalEstimatedTime:"总预计时长",feedbackPlaceholder:"告诉智能体你希望如何调整...",sendFeedback:"发送反馈",refinePlan:"优化计划",executePlan:"执行计划"},question:{agentQuestion:"智能体提问",context:"上下文",chooseOption:"请选择一个选项",recommended:"推荐",customAnswerHint:"没有合适选项?可输入自定义回答。",customAnswerPlaceholder:"输入你的自定义回答...",submitAnswer:"提交回答"},questionDialog:{selectOptionWarning:"提交前请先选择一个选项。",responseSubmitted:"回答已提交",responseSubmittedContinue:"回答已提交,AI 将继续处理",submitFailed:"提交回答失败",noModelConfigured:"未配置模型",customAnswerTip:"自定义回答",otherTypeBelow:"其他(在下方输入)",confirm:"确认"},skillManager:{title:"技能",refresh:"刷新",skillsRefreshed:"技能已刷新",lastUpdated:"上次更新:{{value}}",justNow:"刚刚",secondsAgo:"{{count}} 秒前",minutesAgo:"{{count}} 分钟前",searchPlaceholder:"搜索技能",readOnlyHint:"技能文件本身仍是只读的,但你可以控制它们是否参与 prompt 使用。",disabledHint:"这里会显示全部技能。被禁用的技能不会进入系统提示中的 skill context,且运行时会被禁止 load_skill。",disabledTag:"已禁用",switchEnabled:"开",switchDisabled:"关",skillStateSaved:"技能状态已保存",saveFailed:"保存技能状态失败",noSkillsFound:"未找到技能",noMatch:"没有匹配的技能",loadFailed:"加载技能失败",getFailed:"获取技能失败"},skillSelector:{placeholder:"选择技能",disabledSkillsHint:"有 {{count}} 个先前选中的技能现已被全局禁用,并已从选择中移除。"},imageGrid:{preview:"预览",ocr:"OCR"},todoList:{title:"任务列表",evaluating:"评估中",pin:"固定",unpin:"取消固定",llmEvaluation:"LLM 评估",tools:"个工具",dependsOn:"依赖:{{deps}}",dependencies:"项依赖",status:{pending:"待处理",inProgress:"进行中",completed:"已完成",blocked:"阻塞",skipped:"已跳过",failed:"失败"},listStatus:{active:"进行中",completed:"已完成",abandoned:"已放弃"},percentComplete:"{{percent}}% 已完成",progressLabel:"{{completed}} / {{total}} 个任务已完成",currentLabel:"当前:{{description}}"},tokenUsage:{title:"Token 使用",contextWindow:"上下文窗口",contextPrepared:"已准备上下文",promptCacheTitle:"Prompt 侧节省",providerResult:"Provider 返回结果",summary:"汇总",system:"系统",messages:"消息",tokens:"tokens",usedPercent:"已使用 {{value}}%",cachedToolOutputs:"已压缩工具输出:{{count}}",promptSaved:"节省的 Prompt tokens",cacheRead:"Provider 缓存命中",thinking:"思考 tokens",promptSavedBadge:"节省 {{value}}",cacheReadBadge:"缓存 {{value}}",thinkingBadge:"思考 {{value}}",truncatedBadge:"截断 {{count}} 段"},approval:{workflow:"工作流",executionRequest:"执行请求",aiWantsExecute:"AI 想执行以下操作",childTitle:"子代理需要审批",childQuestion:"一个子代理想执行需要你审批的工具。",approve:"批准",deny:"拒绝",toolName:"工具",permission:"权限",target:"目标",childGone:"子代理已不再等待,该请求已关闭。",deliverFailed:"无法发送你的决定,请重试。"},toolSession:{title:"工具会话",running:"运行中",done:"完成",error:"错误",completedOnly:"已完成 {{completed}} 项",completedWithErrors:"已完成 {{completed}} 项(含错误)",completedProgress:"已完成 {{completed}} / {{total}}",noPersistedMessage:"无持久化输出",deleteMessage:"删除工具会话"},mermaid:{loadingDiagram:"正在加载图表...",diagramError:"Mermaid 图表错误",errorTitlePrefix:"错误",checkConsoleHint:"请检查 Mermaid 语法,或打开控制台查看详情。",fixMermaid:"修复 Mermaid",renderingDiagram:"正在渲染图表...",exportSvg:"导出 SVG",exportFailed:"导出图表失败",downloadChartAriaLabel:"下载图表"}},validation:{workspaceRequired:"请输入工作区路径",invalidPath:"无效路径"},error:{saveWorkspaceFailed:"保存工作区路径失败",readFolderFailed:"无法读取文件夹",copyPromptFailed:"复制提示词内容失败"},success:{promptCopied:"已复制「{{name}}」提示词"}}},De=Object.freeze(Object.defineProperty({__proto__:null,zhCnTranslation:xe},Symbol.toStringTag,{value:"Module"}));var Ee=l((e,t)=>{const s=e.append("rect");if(s.attr("x",t.x),s.attr("y",t.y),s.attr("fill",t.fill),s.attr("stroke",t.stroke),s.attr("width",t.width),s.attr("height",t.height),t.name&&s.attr("name",t.name),t.rx&&s.attr("rx",t.rx),t.ry&&s.attr("ry",t.ry),t.attrs!==void 0)for(const i in t.attrs)s.attr(i,t.attrs[i]);return t.class&&s.attr("class",t.class),s},"drawRect"),_e=l((e,t)=>{const s={x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:"rect"};Ee(e,s).lower()},"drawBackgroundRect"),Je=l((e,t)=>{const s=t.text.replace($," "),i=e.append("text");i.attr("x",t.x),i.attr("y",t.y),i.attr("class","legend"),i.style("text-anchor",t.anchor),t.class&&i.attr("class",t.class);const o=i.append("tspan");return o.attr("x",t.x+t.textMargin*2),o.text(s),i},"drawText"),Ye=l((e,t,s,i)=>{const o=e.append("image");o.attr("x",t),o.attr("y",s);const a=G.sanitizeUrl(i);o.attr("xlink:href",a)},"drawImage"),Ze=l((e,t,s,i)=>{const o=e.append("use");o.attr("x",t),o.attr("y",s);const a=G.sanitizeUrl(i);o.attr("xlink:href",`#${a}`)},"drawEmbeddedImage"),Qe=l(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),$e=l(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj"),Xe=l(()=>{let e=h(".mermaidTooltip");return e.empty()&&(e=h("body").append("div").attr("class","mermaidTooltip").style("opacity",0).style("position","absolute").style("text-align","center").style("max-width","200px").style("padding","2px").style("font-size","12px").style("background","#ffffde").style("border","1px solid #333").style("border-radius","2px").style("pointer-events","none").style("z-index","100")),e},"createTooltip"),et=l((e,t)=>{let s;return t==="sandbox"&&(s=h("#i"+e)),(t==="sandbox"?h(s.nodes()[0].contentDocument.body):h("body")).select(`[id="${e}"]`)},"getDiagramElement"),tt=l((e,t,s,i)=>{e.attr("class",s);const{width:o,height:a,x:n,y:u}=Le(e,t);X(e,a,o,i);const c=Ie(n,u,o,a,t);e.attr("viewBox",c),ee.debug(`viewBox configured: ${c} with padding: ${t}`)},"setupViewPortForSVG"),Le=l((e,t)=>{var i;const s=((i=e.node())==null?void 0:i.getBBox())||{width:0,height:0,x:0,y:0};return{width:s.width+t*2,height:s.height+t*2,x:s.x,y:s.y}},"calculateDimensionsWithPadding"),Ie=l((e,t,s,i,o)=>`${e-o} ${t-o} ${s} ${i}`,"createViewBox");const qe=e=>{switch(e){case"ssh":return r.jsx(le,{});case"docker":return r.jsx(ne,{});default:return r.jsx(re,{})}},ot=({placement:e,compact:t,className:s})=>{const{t:i}=z();if(!e||!e.host)return null;const{kind:o,host:a}=e,n=o!=="local";return r.jsx(ie,{title:i("chat.machine.tooltip",{kind:o,host:a,defaultValue:"Runs on {{kind}} · {{host}}"}),children:r.jsxs(ae,{icon:qe(o),bordered:!1,color:n?"blue":void 0,className:s,children:[!t&&r.jsx("span",{style:{opacity:.65,marginRight:4},children:i("chat.machine.label",{defaultValue:"Machine"})}),`${o} · ${a}`]})})},k="bodhi_onboarding_complete",Oe=()=>localStorage.getItem(k)==="true",He=()=>localStorage.setItem(k,"true"),st=()=>localStorage.removeItem(k),Ue=["new-session","task-templates","model-picker","sidebar","open-settings"],Be=()=>{const e={};for(const t of Ue)e[t]=document.querySelector(`[data-tour-id="${t}"]`);return e},Ne=({disabled:e=!1})=>{const{t}=z(),[s,i]=v.useState(!1),[o,a]=v.useState(null);v.useEffect(()=>{if(e||Oe())return;const c=setTimeout(()=>{const f=Be();a(f),i(!0)},800);return()=>clearTimeout(c)},[e]);const n=v.useMemo(()=>[{title:t("onboarding.welcome.title"),description:t("onboarding.welcome.description"),target:null},{title:t("onboarding.newSession.title"),description:t("onboarding.newSession.description"),target:(o==null?void 0:o["new-session"])??void 0},{title:t("onboarding.taskTemplates.title"),description:t("onboarding.taskTemplates.description"),target:(o==null?void 0:o["task-templates"])??void 0},{title:t("onboarding.modelPicker.title"),description:t("onboarding.modelPicker.description"),target:(o==null?void 0:o["model-picker"])??void 0},{title:t("onboarding.sidebar.title"),description:t("onboarding.sidebar.description"),target:(o==null?void 0:o.sidebar)??void 0},{title:t("onboarding.settings.title"),description:t("onboarding.settings.description"),target:(o==null?void 0:o["open-settings"])??void 0}],[t,o]),u=()=>{He(),i(!1)};return r.jsx(de,{open:s,onClose:u,steps:n})},it=Object.freeze(Object.defineProperty({__proto__:null,FeatureGuide:Ne},Symbol.toStringTag,{value:"Module"}));export{he as A,it as F,ot as M,Qe as a,Je as b,Ve as c,_e as d,Ee as e,Xe as f,et as g,$e as h,Ze as i,Ye as j,Ke as k,st as l,ve as r,tt as s};
|
|
12
|
+
在这里描述工作流步骤。`},providerTab:{title:"LLM 提供商配置",description:"配置你偏好的 LLM 提供商。点击“保存并应用配置”后会保存并生效。",currentProvider:"当前提供商",activeProvider:"当前激活的 LLM 提供商",selectProviderRequired:"请选择提供商",saveAndApply:"保存并应用配置",loadConfigFailed:"加载提供商配置失败",checkStatusFailed:"检查状态失败",startCopilotAuthFailed:"启动 Copilot 认证失败",copilotAuthSuccess:"Copilot 认证成功!",providerReloaded:"提供商已使用新认证重新加载。",completeAuthFailed:"完成认证失败,请重试。",userCodeCopied:"用户代码已复制到剪贴板!",copyCodeFailedPrefix:"复制失败,请手动复制:",logoutSuccess:"已退出 Copilot",logoutFailed:"退出 Copilot 失败",unknownError:"未知错误",invalidConfig:"配置无效",invalidConfigPrefix:"配置无效",invalidRequestOverridesJson:"{{provider}} 的 request_overrides JSON 无效:{{error}}",copilotAuth:"GitHub Copilot 认证",authStatus:"状态:",authenticated:"已认证",notAuthenticated:"未认证",unknown:"未知",refreshStatus:"刷新",copilotAuthHelp:"Copilot 需要 OAuth 认证。点击下方按钮开始设备码流程。",authenticateCopilot:"认证 Copilot",fetchModelsCopilotFailed:"获取模型失败,请先完成 Copilot 认证后重试。",fetchModelsFailed:"获取模型失败,请检查 API Key 与 Base URL。",noModelsReturned:"未返回模型,请先完成 Copilot 认证后再获取。",foundModels:"已找到 {{count}} 个可用模型",fetchModelsErrorPrefix:"获取模型失败",saveConfigSuccess:"配置保存成功",saveConfigFailed:"保存配置失败",saveConfigErrorPrefix:"保存配置失败",applyConfigSuccess:"配置应用成功,新对话将使用最新配置。",applyConfigFailed:"应用配置失败",applyConfigErrorPrefix:"应用配置失败",modelUpdated:"模型更新成功",updateModelFailed:"更新模型失败",updateModelErrorPrefix:"更新模型失败",fetchingModels:"正在获取模型...",refreshModelsFrom:"从 {{source}} 刷新可用模型",fetchModelsFrom:"从 {{source}} 获取可用模型",saveModelChangeFailed:"保存模型变更失败",fetchModelsFailedShort:"获取模型失败",retry:"重试",openaiConfigTitle:"OpenAI 配置",openaiConfigDescription:"输入 OpenAI API Key 以使用 GPT 模型。你也可以指定自定义 Base URL。",openaiApiKey:"OpenAI API Key",openaiApiKeyRequired:"请输入 OpenAI API Key",openaiApiKeyPlaceholder:"sk-...",baseUrlOptional:"Base URL(可选)",openaiBaseUrlPlaceholder:"https://api.openai.com/v1",openaiBaseUrlHelp:"留空将使用默认 OpenAI 接口地址;如有需要请包含完整路径(例如 /v1)。",defaultModel:"默认模型",modelPreferences:"模型偏好",fastModel:"快速模型(可选)",fastModelHelp:"用于标题生成、Mermaid 修复、摘要等轻量任务的低成本/快速模型。未设置时使用默认模型。",taskSummaryModel:"任务总结模型(可选)",taskSummaryModelHelp:"用于任务型总结与对话压缩的专用模型。未设置时依次回退到记忆背景模型、快速模型、默认模型。",memoryBackgroundModel:"记忆背景模型(可选)",memoryBackgroundModelHelp:"用于记忆重排、回召后台任务与 Auto Dream 的专用模型。未设置时回退到快速模型。",subAgentModel:"Sub Agent 模型(可选)",subAgentModelHelp:"新建 Sub Agent 时默认使用的模型。未设置时使用快速模型,再回退到默认模型。",visionModel:"视觉模型(可选)",visionModelHelp:"用于图片理解的视觉模型。当 hooks.image_fallback.mode 设为 'vision' 时,此模型会将图片描述为文本,让纯文本模型也能理解图片内容。未设置时使用默认模型。",sameAsDefault:"与默认模型相同",selectModelRequired:"请选择模型",selectModel:"选择模型",responsesOnlyModelsOptional:"仅 Responses 模型(可选)",responsesOnlyModelsPlaceholder:'例如 "gpt-5.3-codex", "gpt-5*"',responsesOnlyHelp1:"部分模型仅支持 OpenAI Responses API(不支持 chat/completions)。可在此添加模型 ID 强制 Bamboo 使用",responsesOnlyHelp2:"支持精确匹配(如 gpt-5.3-codex)和后缀 * 的前缀匹配(如 gpt-5*)。",anthropicConfigTitle:"Anthropic 配置",anthropicConfigDescription:"输入 Anthropic API Key 以使用 Claude 模型。",anthropicApiKey:"Anthropic API Key",anthropicApiKeyRequired:"请输入 Anthropic API Key",anthropicApiKeyPlaceholder:"sk-ant-...",anthropicBaseUrlPlaceholder:"https://api.anthropic.com/v1",anthropicBaseUrlHelp:"留空将使用默认 Anthropic 接口地址;如有需要请包含完整路径(例如 /v1)。",maxTokensOptional:"最大 Tokens(可选)",maxTokensHelp:"生成时允许的最大 token 数",maxTokensPlaceholder:"4096",geminiConfigTitle:"Google Gemini 配置",geminiConfigDescription:"输入 Google AI API Key 以使用 Gemini 模型。",geminiApiKey:"Gemini API Key",geminiApiKeyRequired:"请输入 Gemini API Key",geminiApiKeyPlaceholder:"AIza...",geminiBaseUrlPlaceholder:"https://generativelanguage.googleapis.com/v1beta",geminiBaseUrlHelp:"留空将使用默认 Google AI 接口地址;必要时可填写完整路径。",copilotConfigTitle:"GitHub Copilot 配置",copilotConfigDescription:"GitHub Copilot 默认使用 OAuth 认证,无需 API Key。或者,您可以提供个人访问令牌 (PAT) 进行直接 API 访问。",copilotApiKey:"个人访问令牌 (可选)",copilotApiKeyHelp:"GitHub 个人访问令牌,用于 API 访问(替代 OAuth 设备流)",copilotApiKeyPlaceholder:"ghp_... 或 github_pat_...",authStatusTitle:"认证状态",logoutCopilot:"退出 Copilot",headlessAuth:"无头认证",headlessAuthHelp:"在控制台输出登录链接,而不是自动打开浏览器",noModelsLoaded:"尚未加载模型,点击“从 backend 获取可用模型”。",authFirstThenFetch:"请先完成 Copilot 认证,再获取模型。",copilotUsageTitle:"使用 GitHub Copilot:",copilotUsageStep1:"确保你已开通有效的 GitHub Copilot 订阅",copilotUsageStep2:"点击“认证 Copilot”启动设备码流程",copilotUsageStep3:"按终端提示完成认证",copilotAuthModalTitle:"Copilot 认证",cancel:"取消",completedAuthorization:"我已完成授权",browserOpened:"浏览器已自动打开",authStep1:"浏览器中应已打开 GitHub 页面",authStep2:"复制下方代码并粘贴到 GitHub 页面",authStep3:"在 GitHub 点击“Continue”完成授权",visitUrl:"1. 打开该 URL:",enterCode:"2. 输入此代码:",copied:"已复制!",copyCode:"复制代码",afterContinueHint:"在 GitHub 点击 Continue 后,请点击下方“我已完成授权”。",providerNames:{openai:"OpenAI",anthropic:"Anthropic",gemini:"Gemini",copilot:"Copilot"},providerModelRef:"提供商模型目录",providerModelRefHelp:"使用后端提供的模型目录进行模型选择。启用后,模型选择器将显示提供商目录中的可用模型,而非手动配置的模型。",catalogModeInfo:"模型来自提供商目录。",fetchAllModels:"获取所有模型",fetchingAllModels:"正在获取模型...",fetchModelsSuccess:"成功获取 {{count}} 个提供商的模型",fetchModelsPartialSuccess:"已获取 {{success}}/{{total}} 个提供商的模型",providerNotConfigured:"未配置",capabilityVision:"视觉",capabilityTools:"工具",capabilityReasoning:"推理",refreshCatalog:"刷新目录",noCatalogModels:"未发现模型,点击“获取所有模型”加载。",reasoningEffortDefault:"默认",reasoningEffortOptional:"推理强度(可选)",reasoningEffortHelp:"通过此提供商发送请求的默认推理强度。",activeProviderReasoningEffort:"当前提供商推理强度",reasoningEffortUpdated:"推理强度已更新",updateReasoningEffortErrorPrefix:"更新推理强度失败",updateReasoningEffortFailed:"更新推理强度失败",advancedRequestOverrides:"高级请求覆盖 (JSON)",advancedRequestOverridesHelp:"自定义提供商请求头/请求体补丁规则。",envVarInjection:"环境变量注入:",bodhiApiKey:"Bodhi API 密钥",bodhiBaseUrl:"基础 URL",targetProvider:"目标提供商",bodhiBaseUrlExtra:"Bodhi 服务端端点地址",targetProviderExtra:"通过 Bodhi 路由到的上游提供商",apiKeyRequired:"请输入 API 密钥",apiKeyKeepPlaceholder:"已配置,留空保持不变",bodhiApiKeyPlaceholder:"bhi_sk_...",bodhiBaseUrlPlaceholder:"http://localhost:8080",targetProviderPlaceholder:"openai"},mcpTab:{status:{connecting:"连接中",ready:"就绪",degraded:"降级",stopped:"已停止",error:"错误"},statusGuideTitle:"状态说明:",statusHelp:{connecting:"服务器正在启动或重连中",ready:"服务器已连接,工具可正常使用",degraded:"服务器部分可用,部分工具可能失败",stopped:"服务器未运行",error:"服务器启动失败或运行时发生错误"},statusLastError:"最近错误:{{error}}",serverDeleted:"MCP 服务器已删除",deleteServerFailed:"删除 MCP 服务器失败",connectedTo:"已连接到 {{name}}",connectServerFailed:"连接 MCP 服务器失败",disconnected:"已断开 {{name}}",disconnectServerFailed:"断开 MCP 服务器失败",toolsRefreshedFor:"{{name}} 的工具已刷新",refreshToolsFailed:"刷新工具失败",statusRefreshed:"MCP 状态已刷新",refreshStatusFailed:"刷新 MCP 状态失败",noServerForEditing:"没有可编辑的服务器",savedServer:"已保存 {{name}}",addedServer:"已添加 {{name}}",saveServerFailed:"保存 MCP 服务器失败",copiedConfig:"MCP 配置已复制到剪贴板",clipboardUnavailable:"剪贴板不可用,已在弹窗中显示导出内容。",invalidJsonPrefix:"JSON 无效",unknownError:"未知错误",jsonMustBeObject:"JSON 必须是对象",missingMcpServers:'缺少 mcpServers。请粘贴完整 Claude Desktop 风格配置:{ "mcpServers": { ... } }',importSummary:"已导入 {{count}} 个服务器(新增 {{added}},更新 {{updated}},删除 {{removed}})。启动失败 {{failed}} 个。",importStartFailures:"部分服务器未成功启动,配置已保存,请在服务器列表查看错误。",importFailed:"导入 MCP 服务器失败",overviewTitle:"MCP 概览",overviewDescription:"配置外部 MCP 服务器并查看已注册的工具别名。",totalServers:"服务器总数:{{count}}",totalTools:"工具总数:{{count}}",serversTitle:"MCP 服务器",addServer:"添加服务器",refreshAll:"全部刷新",export:"导出",import:"导入",importModalTitle:"导入 MCP 服务器",importHint:"粘贴 Claude Desktop 风格配置片段,例如:",importModeMerge:"合并(Upsert)",importModeReplace:"替换(删除其余)",replaceWarning:"替换模式会删除不在导入 mcpServers 中的现有 MCP 服务器。"},mcpServerTable:{columns:{name:"名称",transportType:"传输类型",status:"状态",toolCount:"工具数",actions:"操作"},transportOptions:{sse:"SSE",stdio:"Stdio"},deleteTitle:"删除 MCP 服务器",deleteDescription:"确认删除服务器“{{name}}”?",empty:"尚未配置 MCP 服务器",actions:{edit:"编辑",delete:"删除",disconnect:"断开",connect:"连接",refreshTools:"刷新工具"}},mcpToolList:{title:"MCP 工具",selectServerHint:"请选择一个服务器以查看其 MCP 工具",empty:"该服务器没有可用工具",noDescription:"暂无描述",aliasMapping:"别名映射",parametersSchema:"参数 Schema"},mcpServerForm:{jsonMustBeObject:"JSON 必须是对象",detectedBulkConfig:"检测到 mcpServers(批量配置)。批量导入请使用 MCP 标签页中的“导入”按钮,或在这里粘贴单个服务器配置。",missingIdField:"缺少或无效的 id 字段",missingTransportField:"缺少或无效的 transport 字段",missingTransportInfo:"缺少传输信息。应包含 transport(Bodhi 格式)或 command/url(主流 MCP 格式)。",invalidJson:"JSON 无效:{{message}}",unknownError:"未知错误",editTitle:"编辑 MCP 服务器",addTitle:"添加 MCP 服务器",save:"保存",modeForm:"表单",modeJson:"JSON",jsonError:"JSON 错误",serverId:"服务器 ID",serverIdRequired:"服务器 ID 不能为空",serverIdPatternError:"仅支持字母、数字、下划线和连字符",displayName:"显示名称",enabled:"启用",enabledHelp:"禁用的服务器会保留在配置中,但不会自动启动。",transportType:"传输类型",transportTypeRequired:"传输类型不能为空",transportOptions:{stdio:"Stdio",sse:"SSE"},command:"命令",commandRequired:"命令不能为空",arguments:"参数",argumentsPlaceholder:"输入参数后按 Enter 添加",envVars:"环境变量",addEnv:"添加环境变量",keyRequired:"键不能为空",sseUrl:"SSE URL",sseUrlRequired:"SSE URL 不能为空",validUrlRequired:"请输入有效 URL",headers:"请求头",addHeader:"添加请求头",headerNameRequired:"请求头名称不能为空"},metricsCards:{totalSessions:"会话总数",chatTokens:"聊天 Tokens",totalToolCalls:"工具调用总数",tokensSaved:"节约 Tokens",toolContextSavedTokens:"工具上下文节约 Tokens",compressionEvents:"压缩次数",avgSessionDuration:"平均会话时长"},forwardMetricsCards:{totalForwardRequests:"Forward 请求总数",successRate:"成功率",forwardTokens:"Forward Tokens",avgResponseTime:"平均响应时间"},unifiedMetricsCards:{totalRequests:"请求总数",totalTokens:"Tokens 总数",successRate:"成功率",avgResponseTime:"平均响应时间",chatSessions:"聊天会话",chatTokens:"聊天 Tokens",toolCalls:"工具调用",avgSessionDuration:"平均会话时长",tokensSaved:"节约 Tokens",compressionEvents:"压缩次数",totalMemories:"记忆总数",staleCandidates:"陈旧候选项",memoryProjects:"记忆项目数",lastReindex:"上次重建索引",forwardRequests:"Forward 请求",forwardTokens:"Forward Tokens",successful:"成功",failed:"失败"},metricsTable:{session:{columns:{session:"会话",model:"模型",status:"状态",started:"开始时间",duration:"耗时",tokens:"Tokens",toolCalls:"工具调用",messages:"消息数",action:"操作"},view:"查看"},forward:{columns:{id:"ID",endpoint:"端点",model:"模型",type:"类型",status:"状态",tokens:"Tokens",duration:"耗时",started:"开始时间",error:"错误"},typeStream:"流式",typeSync:"同步",totalRequests:"{{total}} 条请求",empty:"当前范围内暂无 forward 请求记录"}},metricsDashboard:{roundColumns:{round:"轮次",status:"状态",duration:"耗时",tokens:"Tokens",toolCalls:"工具调用"},compactStats:{combinedTokens:"合并 Tokens",chatTokens:"聊天 Tokens",forwardTokens:"Forward Tokens",avgTokensPerSession:"平均 Tokens / 会话",savedTokens:"节约 Tokens",toolContextSavedTokens:"工具上下文节约 Tokens",nonToolCompressionSavedTokens:"非工具压缩节约 Tokens",savedTokenRatio:"节约 / 聊天 Tokens",toolSavedShare:"工具节约占比",promptCachedToolOutputs:"Prompt 缓存工具输出数",compressionEvents:"压缩事件数",estimatedTimeSaved:"预估节省时长",estimatedEfficiencyLift:"预估效率提升",estimatedSpeedMultiplier:"预估速度倍率",estimatedSavedWorkdays:"预估节省工作日",avgRoundsPerSession:"平均轮次 / 会话",toolCallsPerSession:"工具调用 / 会话",activeSessionRate:"活跃会话占比",avgTokensPerForward:"平均 Tokens / Forward",forwardErrorRate:"Forward 错误率",streamingRatio:"流式占比",p95ForwardLatency:"P95 Forward 延迟",modelCoverage:"模型覆盖数",endpointCoverage:"端点覆盖数"},multiplierSuffix:"x",filtersTitle:"筛选",refresh:"刷新",startDate:"开始日期",endDate:"结束日期",model:"模型",daysOption:"{{value}} 天",granularity:{daily:"按天",weekly:"按周",monthly:"按月"},dashboardTitle:"仪表盘",tabs:{overview:"概览",analysis:"分析",records:"记录",chat:"聊天",skillsAndMcp:"技能 & MCP",forward:"Forward",memory:"记忆"},derivedMetricsTitle:"衍生指标(紧凑)",derivedMetricsSubtitle:"更多维度,同时保持页面紧凑",overviewSections:{scaleTitle:"规模与活跃度",scaleSubtitle:"集中查看 Chat、Forward、技能与记忆的总体使用规模。",efficiencyTitle:"压缩收益与效率优势",efficiencySubtitle:"重点展示上下文压缩,尤其是工具密集型工作流带来的真实节约。"},efficiencyHint:"这些指标优先使用真实运行统计:总节约 Tokens、工具上下文压缩节约、非工具压缩节约、压缩事件数,以及会话 / Forward 的平均负载与质量指标。",toolUsageTitle:"工具使用频次",noToolUsage:"当前范围内没有工具调用记录。",calls:"调用次数",activityHeatmapTitle:"每日活跃热力图",noActivity:"当前范围内没有活跃数据。",sessionsCount:"{{count}} 个会话",tokensAmount:"{{value}} tokens",sessionsTabLabel:"会话({{count}})",chatSessionsLabel:"聊天会话({{count}})",sessionsHint:"点击会话可查看完整轮次详情",forwardTabLabel:"Forward 请求({{count}})",detailedMetricsTitle:"详细指标",sessionMetricsTitle:"会话指标",loadingSessionDetails:"正在加载会话详情...",sessionDetail:{sessionId:"会话 ID",model:"模型",status:"状态",duration:"耗时",messages:"消息数",totalTokens:"总 Tokens",toolCalls:"工具调用"},noDetail:"暂无详情。",skillsAndMcp:{cards:{skillLoadCalls:"技能加载",uniqueSkills:"独立技能",mcpCalls:"MCP 调用",uniqueMcpServers:"MCP 服务器",uniqueMcpTools:"MCP 工具",coreToolCalls:"核心工具调用"},mix:{coreTools:"核心工具",skillLoads:"技能加载",mcpCalls:"MCP 调用"},meta:{uniqueTools:"{{count}} 个工具"},usageMixTitle:"使用构成",usageMixSubtitle:"在同一视图中对比核心工具、技能加载和 MCP 调用。",noUsageMix:"当前范围内暂无使用数据。",topSkillsTitle:"热门技能",topSkillsSubtitle:"统计匹配会话中的 load_skill 调用。",noSkills:"当前范围内未加载任何技能。",topMcpServersTitle:"热门 MCP 服务器",topMcpServersSubtitle:"服务器级别的 MCP 调用分布。",noMcpServers:"当前范围内无 MCP 活动记录。",topMcpToolsTitle:"热门 MCP 工具",topMcpToolsSubtitle:"调用频次最高的 MCP 工具别名。",noMcpTools:"当前范围内未调用任何 MCP 工具。",topCoreToolsTitle:"热门核心工具",topCoreToolsSubtitle:"标准化后的内置及服务器工具使用排名。",noCoreTools:"当前范围内未调用任何核心工具。"},forward:{performanceTitle:"Forward 性能",performance:{p95Latency:"P95 延迟",errorRate:"错误率",streamingRatio:"流式占比",endpointCoverage:"端点覆盖数"}},memory:{breakdownTitle:"记忆分布",byType:"按类型",byStatus:"按状态",byScope:"按范围",lastDream:"上次 Dream",lastReindex:"上次重建索引"}},charts:{tokenUsageOverTime:"Token 使用趋势",unifiedTokenUsageOverTime:"Token 使用趋势(Chat + Forward)",memoryTrendTitle:"记忆趋势",noTokenUsage:"暂无 token 使用数据",noMemoryTrend:"暂无记忆趋势数据",tokenUsageDescription:"按日期/周期展示 Prompt、Completion 与总 Tokens。",unifiedTokenUsageDescription:"按时间展示 Chat 与 Forward 的合并 token 使用。",memoryTrendDescription:"展示记忆新增、更新以及累计总量的时间变化。",total:"总计",prompt:"Prompt",completion:"Completion",chat:"Chat",forward:"Forward",totalMemories:"记忆总量",createdMemories:"新增记忆",updatedMemories:"更新记忆",modelDistribution:"模型分布",noModelMetrics:"暂无模型指标数据",modelDistributionDescription:"按模型展示总 token 消耗占比。",endpointDistribution:"端点分布",noForwardMetrics:"当前范围内暂无 forward 指标数据。"}},components:{markdown:{codeCopiedSuccess:"代码已复制到剪贴板",copyFailed:"复制失败",copyCodeAriaLabel:"复制代码"},jsonSchema:{field:"字段",type:"类型",required:"必填",yes:"是",no:"否",default:"默认值",description:"描述",noProperties:"架构中无属性"},workflowResult:{userWorkflow:"用户工作流",waitingForResult:"等待工作流结果...",executionFailed:"工作流执行失败",retryWorkflow:"重试工作流",copyParameters:"复制参数",copyResult:"复制结果",expandResult:"展开结果",collapseResult:"收起结果"},toolResult:{waiting:"等待中",waitingForResult:"等待结果...",executionFailed:"工具执行失败",copyResult:"复制结果",checkpoint:"检查点",checkpointNone:"无",diffTruncated:"差异内容过长,已截断显示",structuredToolResultHint:"工具结果 · {{tool}}",memory:{action:{inspect:"检查",rebuild:"重建"},totalMemories:"{{count}} 条记忆",staleCandidates:"候选陈旧项:{{count}}",coverage:"覆盖情况",viewsLabel:"视图:",indexesLabel:"索引:",stateFilesLabel:"状态文件:",lastReindexLabel:"上次重建索引:",lastDreamLabel:"上次梦境整理:",viewFiles:"视图文件",indexFiles:"索引文件",stateFiles:"状态文件",topicPaths:"主题路径",recentMemories:"最近记忆"}},toolCall:{liveOutput:"实时输出",keyParameters:"关键参数",fullParameters:"完整参数",copyParameters:"复制参数"},toolSteps:{title:"工具运行",running:"运行中…",runningInBackground:"后台运行中…",backgroundCompleted:"已完成",backgroundKilled:"已终止",backgroundFailed:"失败",viewFullOutput:"查看完整输出",details:"详情",preview:"预览",parameters:"参数",result:"结果",noResult:"暂无结果",intent:"意图",keyParameters:"关键参数",statusError:"错误",statusFinish:"完成",statusProcess:"执行中",statusWait:"等待"},plan:{executionPlan:"执行计划",goal:"目标",steps:"步骤",stepTitle:"步骤 {{number}}",reason:"原因",estimated:"预计",tools:"工具",prerequisites:"前置条件",potentialRisks:"潜在风险({{count}})",totalEstimatedTime:"总预计时长",feedbackPlaceholder:"告诉智能体你希望如何调整...",sendFeedback:"发送反馈",refinePlan:"优化计划",executePlan:"执行计划"},question:{agentQuestion:"智能体提问",context:"上下文",chooseOption:"请选择一个选项",recommended:"推荐",customAnswerHint:"没有合适选项?可输入自定义回答。",customAnswerPlaceholder:"输入你的自定义回答...",submitAnswer:"提交回答"},questionDialog:{selectOptionWarning:"提交前请先选择一个选项。",responseSubmitted:"回答已提交",responseSubmittedContinue:"回答已提交,AI 将继续处理",submitFailed:"提交回答失败",noModelConfigured:"未配置模型",customAnswerTip:"自定义回答",otherTypeBelow:"其他(在下方输入)",confirm:"确认"},skillManager:{title:"技能",refresh:"刷新",skillsRefreshed:"技能已刷新",lastUpdated:"上次更新:{{value}}",justNow:"刚刚",secondsAgo:"{{count}} 秒前",minutesAgo:"{{count}} 分钟前",searchPlaceholder:"搜索技能",readOnlyHint:"技能文件本身仍是只读的,但你可以控制它们是否参与 prompt 使用。",disabledHint:"这里会显示全部技能。被禁用的技能不会进入系统提示中的 skill context,且运行时会被禁止 load_skill。",disabledTag:"已禁用",switchEnabled:"开",switchDisabled:"关",skillStateSaved:"技能状态已保存",saveFailed:"保存技能状态失败",noSkillsFound:"未找到技能",noMatch:"没有匹配的技能",loadFailed:"加载技能失败",getFailed:"获取技能失败"},skillSelector:{placeholder:"选择技能",disabledSkillsHint:"有 {{count}} 个先前选中的技能现已被全局禁用,并已从选择中移除。"},imageGrid:{preview:"预览",ocr:"OCR"},todoList:{title:"任务列表",evaluating:"评估中",pin:"固定",unpin:"取消固定",llmEvaluation:"LLM 评估",tools:"个工具",dependsOn:"依赖:{{deps}}",dependencies:"项依赖",status:{pending:"待处理",inProgress:"进行中",completed:"已完成",blocked:"阻塞",skipped:"已跳过",failed:"失败"},listStatus:{active:"进行中",completed:"已完成",abandoned:"已放弃"},percentComplete:"{{percent}}% 已完成",progressLabel:"{{completed}} / {{total}} 个任务已完成",currentLabel:"当前:{{description}}"},tokenUsage:{title:"Token 使用",contextWindow:"上下文窗口",contextPrepared:"已准备上下文",promptCacheTitle:"Prompt 侧节省",providerResult:"Provider 返回结果",summary:"汇总",system:"系统",messages:"消息",tokens:"tokens",usedPercent:"已使用 {{value}}%",cachedToolOutputs:"已压缩工具输出:{{count}}",promptSaved:"节省的 Prompt tokens",cacheRead:"Provider 缓存命中",thinking:"思考 tokens",promptSavedBadge:"节省 {{value}}",cacheReadBadge:"缓存 {{value}}",thinkingBadge:"思考 {{value}}",truncatedBadge:"截断 {{count}} 段"},approval:{workflow:"工作流",executionRequest:"执行请求",aiWantsExecute:"AI 想执行以下操作",childTitle:"子代理需要审批",childQuestion:"一个子代理想执行需要你审批的工具。",approve:"批准",deny:"拒绝",toolName:"工具",permission:"权限",target:"目标",childGone:"子代理已不再等待,该请求已关闭。",deliverFailed:"无法发送你的决定,请重试。"},toolSession:{title:"工具会话",running:"运行中",done:"完成",error:"错误",completedOnly:"已完成 {{completed}} 项",completedWithErrors:"已完成 {{completed}} 项(含错误)",completedProgress:"已完成 {{completed}} / {{total}}",noPersistedMessage:"无持久化输出",deleteMessage:"删除工具会话"},mermaid:{loadingDiagram:"正在加载图表...",diagramError:"Mermaid 图表错误",errorTitlePrefix:"错误",checkConsoleHint:"请检查 Mermaid 语法,或打开控制台查看详情。",fixMermaid:"修复 Mermaid",renderingDiagram:"正在渲染图表...",exportSvg:"导出 SVG",exportFailed:"导出图表失败",downloadChartAriaLabel:"下载图表"}},validation:{workspaceRequired:"请输入工作区路径",invalidPath:"无效路径"},error:{saveWorkspaceFailed:"保存工作区路径失败",readFolderFailed:"无法读取文件夹",copyPromptFailed:"复制提示词内容失败"},success:{promptCopied:"已复制「{{name}}」提示词"}}},Ee=Object.freeze(Object.defineProperty({__proto__:null,zhCnTranslation:xe},Symbol.toStringTag,{value:"Module"}));var De=l((e,t)=>{const s=e.append("rect");if(s.attr("x",t.x),s.attr("y",t.y),s.attr("fill",t.fill),s.attr("stroke",t.stroke),s.attr("width",t.width),s.attr("height",t.height),t.name&&s.attr("name",t.name),t.rx&&s.attr("rx",t.rx),t.ry&&s.attr("ry",t.ry),t.attrs!==void 0)for(const i in t.attrs)s.attr(i,t.attrs[i]);return t.class&&s.attr("class",t.class),s},"drawRect"),_e=l((e,t)=>{const s={x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:"rect"};De(e,s).lower()},"drawBackgroundRect"),Je=l((e,t)=>{const s=t.text.replace($," "),i=e.append("text");i.attr("x",t.x),i.attr("y",t.y),i.attr("class","legend"),i.style("text-anchor",t.anchor),t.class&&i.attr("class",t.class);const o=i.append("tspan");return o.attr("x",t.x+t.textMargin*2),o.text(s),i},"drawText"),Ye=l((e,t,s,i)=>{const o=e.append("image");o.attr("x",t),o.attr("y",s);const a=G.sanitizeUrl(i);o.attr("xlink:href",a)},"drawImage"),Ze=l((e,t,s,i)=>{const o=e.append("use");o.attr("x",t),o.attr("y",s);const a=G.sanitizeUrl(i);o.attr("xlink:href",`#${a}`)},"drawEmbeddedImage"),Qe=l(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),$e=l(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj"),Xe=l(()=>{let e=h(".mermaidTooltip");return e.empty()&&(e=h("body").append("div").attr("class","mermaidTooltip").style("opacity",0).style("position","absolute").style("text-align","center").style("max-width","200px").style("padding","2px").style("font-size","12px").style("background","#ffffde").style("border","1px solid #333").style("border-radius","2px").style("pointer-events","none").style("z-index","100")),e},"createTooltip"),et=l((e,t)=>{let s;return t==="sandbox"&&(s=h("#i"+e)),(t==="sandbox"?h(s.nodes()[0].contentDocument.body):h("body")).select(`[id="${e}"]`)},"getDiagramElement"),tt=l((e,t,s,i)=>{e.attr("class",s);const{width:o,height:a,x:n,y:u}=Le(e,t);X(e,a,o,i);const c=Ie(n,u,o,a,t);e.attr("viewBox",c),ee.debug(`viewBox configured: ${c} with padding: ${t}`)},"setupViewPortForSVG"),Le=l((e,t)=>{var i;const s=((i=e.node())==null?void 0:i.getBBox())||{width:0,height:0,x:0,y:0};return{width:s.width+t*2,height:s.height+t*2,x:s.x,y:s.y}},"calculateDimensionsWithPadding"),Ie=l((e,t,s,i,o)=>`${e-o} ${t-o} ${s} ${i}`,"createViewBox");const qe=e=>{switch(e){case"ssh":return r.jsx(le,{});case"docker":return r.jsx(ne,{});default:return r.jsx(re,{})}},ot=({placement:e,compact:t,className:s})=>{const{t:i}=z();if(!e||!e.host)return null;const{kind:o,host:a}=e,n=o!=="local";return r.jsx(ie,{title:i("chat.machine.tooltip",{kind:o,host:a,defaultValue:"Runs on {{kind}} · {{host}}"}),children:r.jsxs(ae,{icon:qe(o),bordered:!1,color:n?"blue":void 0,className:s,children:[!t&&r.jsx("span",{style:{opacity:.65,marginRight:4},children:i("chat.machine.label",{defaultValue:"Machine"})}),`${o} · ${a}`]})})},C="bodhi_onboarding_complete",Oe=()=>localStorage.getItem(C)==="true",Ue=()=>localStorage.setItem(C,"true"),st=()=>localStorage.removeItem(C),He=["new-session","task-templates","model-picker","sidebar","open-settings"],Be=()=>{const e={};for(const t of He)e[t]=document.querySelector(`[data-tour-id="${t}"]`);return e},Ne=({disabled:e=!1})=>{const{t}=z(),[s,i]=v.useState(!1),[o,a]=v.useState(null);v.useEffect(()=>{if(e||Oe())return;const c=setTimeout(()=>{const f=Be();a(f),i(!0)},800);return()=>clearTimeout(c)},[e]);const n=v.useMemo(()=>[{title:t("onboarding.welcome.title"),description:t("onboarding.welcome.description"),target:null},{title:t("onboarding.newSession.title"),description:t("onboarding.newSession.description"),target:(o==null?void 0:o["new-session"])??void 0},{title:t("onboarding.taskTemplates.title"),description:t("onboarding.taskTemplates.description"),target:(o==null?void 0:o["task-templates"])??void 0},{title:t("onboarding.modelPicker.title"),description:t("onboarding.modelPicker.description"),target:(o==null?void 0:o["model-picker"])??void 0},{title:t("onboarding.sidebar.title"),description:t("onboarding.sidebar.description"),target:(o==null?void 0:o.sidebar)??void 0},{title:t("onboarding.settings.title"),description:t("onboarding.settings.description"),target:(o==null?void 0:o["open-settings"])??void 0}],[t,o]),u=()=>{Ue(),i(!1)};return r.jsx(de,{open:s,onClose:u,steps:n})},it=Object.freeze(Object.defineProperty({__proto__:null,FeatureGuide:Ne},Symbol.toStringTag,{value:"Module"}));export{he as A,it as F,ot as M,Qe as a,Je as b,Ke as c,_e as d,De as e,Xe as f,et as g,$e as h,Ze as i,Ye as j,Ve as k,st as l,ve as r,tt as s};
|