@bigduu/lotus 2026.7.5 → 2026.7.7
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/App-CH_iNVyb.js +247 -0
- package/dist/assets/{MetricsService-n7JZCzim.js → MetricsService-DpXFjto6.js} +1 -1
- package/dist/assets/{SubAgentsPanel-5XqraCGR.js → SubAgentsPanel-DkdkzHTa.js} +1 -1
- package/dist/assets/{architectureDiagram-3BPJPVTR-DJfflomM.js → architectureDiagram-3BPJPVTR-Pa9A_GeZ.js} +1 -1
- package/dist/assets/{blockDiagram-GPEHLZMM-2vX_ZAGo.js → blockDiagram-GPEHLZMM-BrTopsFG.js} +1 -1
- package/dist/assets/{c4Diagram-AAUBKEIU-B7thEc9a.js → c4Diagram-AAUBKEIU-DolJWmm5.js} +1 -1
- package/dist/assets/{chunk-2J33WTMH-CvUck7S3.js → chunk-2J33WTMH-DFRfsnwX.js} +1 -1
- package/dist/assets/{chunk-4BX2VUAB-DrC2RX9N.js → chunk-4BX2VUAB-BRHfAH23.js} +1 -1
- package/dist/assets/{chunk-55IACEB6-B8vPjcUq.js → chunk-55IACEB6-Dpi6fPZs.js} +1 -1
- package/dist/assets/{chunk-727SXJPM-DUFGgdeV.js → chunk-727SXJPM-Cd5XWlyk.js} +1 -1
- package/dist/assets/{chunk-AQP2D5EJ-BZfWdLR2.js → chunk-AQP2D5EJ-DGcXnZoj.js} +1 -1
- package/dist/assets/{chunk-FMBD7UC4-By6U7J47.js → chunk-FMBD7UC4-DhZ0prpG.js} +1 -1
- package/dist/assets/{chunk-ND2GUHAM-52jjxNUZ.js → chunk-ND2GUHAM-DL2nbZLb.js} +1 -1
- package/dist/assets/{chunk-QZHKN3VN-CWZp5y0e.js → chunk-QZHKN3VN-DalupEUz.js} +1 -1
- package/dist/assets/classDiagram-4FO5ZUOK-DG03s0su.js +1 -0
- package/dist/assets/classDiagram-v2-Q7XG4LA2-DG03s0su.js +1 -0
- package/dist/assets/{cose-bilkent-S5V4N54A-CuWTxcgu.js → cose-bilkent-S5V4N54A-CHX5fY5N.js} +1 -1
- package/dist/assets/{dagre-BM42HDAG-DgQzN56Z.js → dagre-BM42HDAG-B7351yll.js} +1 -1
- package/dist/assets/{diagram-2AECGRRQ-Dk7JOCT_.js → diagram-2AECGRRQ-DMEhSoRB.js} +1 -1
- package/dist/assets/{diagram-5GNKFQAL-_UQ-ZLtW.js → diagram-5GNKFQAL-_oUgeGBQ.js} +1 -1
- package/dist/assets/{diagram-KO2AKTUF-CsPsTuaD.js → diagram-KO2AKTUF-GdRQxJvE.js} +1 -1
- package/dist/assets/{diagram-LMA3HP47-Cm5hJBUN.js → diagram-LMA3HP47-CZNmi6mu.js} +1 -1
- package/dist/assets/{diagram-OG6HWLK6-DkJi6omc.js → diagram-OG6HWLK6-CvCKP0Ao.js} +1 -1
- package/dist/assets/en-US-BHmVs299.js +3 -0
- package/dist/assets/{erDiagram-TEJ5UH35-DIiLJ6d8.js → erDiagram-TEJ5UH35-DnB_LGjj.js} +1 -1
- package/dist/assets/{flowDiagram-I6XJVG4X-B5VZlhTO.js → flowDiagram-I6XJVG4X-Cr8MwrRD.js} +1 -1
- package/dist/assets/{ganttDiagram-6RSMTGT7-iP69h9Dx.js → ganttDiagram-6RSMTGT7-BuEAiskm.js} +1 -1
- package/dist/assets/{gitGraphDiagram-PVQCEYII-DORptyNs.js → gitGraphDiagram-PVQCEYII-DBy041Sw.js} +1 -1
- package/dist/assets/{index-C2lXwwec.js → index-B-I26ShO.js} +1 -1
- package/dist/assets/{index-CgxN6WVk.js → index-B4FC2zTb.js} +1 -1
- package/dist/assets/{index-BVeEb-_T.js → index-BKm-Y6g1.js} +1 -1
- package/dist/assets/{index-CcqNkfOX.js → index-BUO2Zcn6.js} +4 -4
- package/dist/assets/{index-D7W-fY58.js → index-BlKENLxs.js} +1 -1
- package/dist/assets/{index-iGIujJYI.js → index-CLzNVEbw.js} +1 -1
- package/dist/assets/{index-IYAs5nWD.js → index-CU7lQMqL.js} +1 -1
- package/dist/assets/{index-DfLu_Fws.js → index-Ccwc-6DE.js} +1 -1
- package/dist/assets/{index-WfwxrqQn.js → index-CpIxq-rS.js} +1 -1
- package/dist/assets/{index-DJ45I0tz.js → index-Cur8quEC.js} +1 -1
- package/dist/assets/{index-CizmqjOt.js → index-DKcVOIn3.js} +1 -1
- package/dist/assets/{index-BuSSw3OT.js → index-x60LEDTE.js} +1 -1
- package/dist/assets/{infoDiagram-5YYISTIA-MEQ1mVln.js → infoDiagram-5YYISTIA-Cig6E2Y-.js} +1 -1
- package/dist/assets/{ishikawaDiagram-YF4QCWOH-BV1-DeCU.js → ishikawaDiagram-YF4QCWOH-BaU9GirD.js} +1 -1
- package/dist/assets/{journeyDiagram-JHISSGLW-DXVhX4eb.js → journeyDiagram-JHISSGLW-Bu7AjxgD.js} +1 -1
- package/dist/assets/{kanban-definition-UN3LZRKU-B_YSsdVW.js → kanban-definition-UN3LZRKU-BxTBoFam.js} +1 -1
- package/dist/assets/{main-T1mJphDn.js → main-bnHa9vH1.js} +3 -3
- package/dist/assets/{mindmap-definition-RKZ34NQL-oPgxWkPd.js → mindmap-definition-RKZ34NQL-9STdRJ65.js} +1 -1
- package/dist/assets/{pieDiagram-4H26LBE5-CtziHV9f.js → pieDiagram-4H26LBE5-BhM8ytbm.js} +1 -1
- package/dist/assets/{quadrantDiagram-W4KKPZXB-Cza1M352.js → quadrantDiagram-W4KKPZXB-DlKlRsBQ.js} +1 -1
- package/dist/assets/{requirementDiagram-4Y6WPE33-B0Cqiex5.js → requirementDiagram-4Y6WPE33-Qm51Houd.js} +1 -1
- package/dist/assets/{sankeyDiagram-5OEKKPKP-DPE60urp.js → sankeyDiagram-5OEKKPKP-DPVIX2yw.js} +1 -1
- package/dist/assets/{sequenceDiagram-3UESZ5HK-0l6V2G45.js → sequenceDiagram-3UESZ5HK-xE5cm0Ad.js} +1 -1
- package/dist/assets/{stateDiagram-AJRCARHV-p_5fy5I6.js → stateDiagram-AJRCARHV-C9Mlf8x6.js} +1 -1
- package/dist/assets/{stateDiagram-v2-BHNVJYJU-DlhZcsSD.js → stateDiagram-v2-BHNVJYJU-CeWi3ly8.js} +1 -1
- package/dist/assets/{timeline-definition-PNZ67QCA-BRvHonY2.js → timeline-definition-PNZ67QCA-CVzX8KRM.js} +1 -1
- package/dist/assets/{vendor-charts-BvHdY7Yd.js → vendor-charts-DMoAsaKk.js} +1 -1
- package/dist/assets/{vendor-mermaid-CtSZdslt.js → vendor-mermaid-BWwfm-Vj.js} +3 -3
- package/dist/assets/{vendor-pdf-6QL6h6Hp.js → vendor-pdf-D6AjS6qD.js} +3 -3
- package/dist/assets/{vennDiagram-CIIHVFJN-DTntWJLd.js → vennDiagram-CIIHVFJN-BORIhifm.js} +1 -1
- package/dist/assets/{wardley-L42UT6IY-BCyrR1Oy.js → wardley-L42UT6IY-D3k90lJL.js} +1 -1
- package/dist/assets/{wardleyDiagram-YWT4CUSO-bPsWyS3E.js → wardleyDiagram-YWT4CUSO-iHR9JFh-.js} +1 -1
- package/dist/assets/{xychartDiagram-2RQKCTM6-BB9WpJK6.js → xychartDiagram-2RQKCTM6-iBAl4dM9.js} +1 -1
- package/dist/assets/zh-CN-CVIA9qJS.js +3 -0
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/dist/assets/App-DEH-6Kab.js +0 -247
- package/dist/assets/classDiagram-4FO5ZUOK-DJvFQZiU.js +0 -1
- package/dist/assets/classDiagram-v2-Q7XG4LA2-DJvFQZiU.js +0 -1
- package/dist/assets/en-US-Dk_lNS7j.js +0 -3
- package/dist/assets/zh-CN-CTNNt86t.js +0 -3
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-727SXJPM-DUFGgdeV.js";import{a8 as i}from"./vendor-mermaid-CtSZdslt.js";import"./chunk-FMBD7UC4-By6U7J47.js";import"./chunk-ND2GUHAM-52jjxNUZ.js";import"./chunk-55IACEB6-B8vPjcUq.js";import"./chunk-2J33WTMH-CvUck7S3.js";import"./vendor-antd-C-pjKgeW.js";import"./vendor-i18n-Dm-c3D_C.js";var f={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{f as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-727SXJPM-DUFGgdeV.js";import{a8 as i}from"./vendor-mermaid-CtSZdslt.js";import"./chunk-FMBD7UC4-By6U7J47.js";import"./chunk-ND2GUHAM-52jjxNUZ.js";import"./chunk-55IACEB6-B8vPjcUq.js";import"./chunk-2J33WTMH-CvUck7S3.js";import"./vendor-antd-C-pjKgeW.js";import"./vendor-i18n-Dm-c3D_C.js";var f={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{f as diagram};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
const e={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"},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
|
|
2
|
-
|
|
3
|
-
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",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…",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'}}};export{e as enUsTranslation};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
const e={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:"一个后台任务已完成"},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:`# 工作流标题
|
|
2
|
-
|
|
3
|
-
在这里描述工作流步骤。`},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 密钥",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:"运行中…",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}}」提示词"}}};export{e as zhCnTranslation};
|