@x-otto/tui 0.0.1-alpha.6-debug → 0.0.1-alpha.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/compat.js CHANGED
@@ -1,3 +1,3 @@
1
- import{n as e}from"./i18n-BREWHEWk.js";var t=class{commands=new Map;register(e){if(this.commands.has(e.name))throw Error(`Command "/${e.name}" is already registered`);this.commands.set(e.name,e)}get(e){return this.commands.get(e)}find(e){let t=this.commands.get(e);if(t)return t;for(let t of this.commands.values())if(t.aliases?.includes(e))return t}list(){return[...this.commands.values()]}names(){return[...this.commands.keys()]}has(e){return this.commands.has(e)}unregister(e){return this.commands.delete(e)}};function n(){let n=new t;return n.register({name:`help`,description:e.t(`cmdDesc.help`),aliases:[`h`,`?`],type:`action`,source:`builtin`,execute:()=>({kind:`help`})}),n.register({name:`exit`,description:e.t(`cmdDesc.exit`),aliases:[`quit`,`q`],type:`action`,source:`builtin`,execute:e=>{let t=e?.trim()??``;return t===`--restart`||t===`-r`?{kind:`exit`,restart:!0}:{kind:`exit`}}}),n.register({name:`clear`,description:e.t(`cmdDesc.clear`),type:`action`,source:`builtin`,execute:()=>({kind:`clear`})}),n.register({name:`abort`,description:e.t(`cmdDesc.abort`),type:`action`,source:`builtin`,execute:()=>({kind:`abort`})}),n.register({name:`copy`,description:e.t(`cmdDesc.copy`),type:`action`,source:`builtin`,execute:()=>({kind:`copy`})}),n.register({name:`model`,description:e.t(`cmdDesc.model`),aliases:[`m`],type:`action`,source:`builtin`,execute:(t,n)=>{if(!n.models||n.models.length===0)return e.t(`model.noRegistry`);if(t&&n.onModelChange){let r=n.models.find(e=>e.id===t||e.name===t);return r?{kind:`model`,modelId:r.id}:e.t(`model.notFound`,{name:t})}let r=new Map;for(let e of n.models){let t=r.get(e.provider)??[];t.push(e),r.set(e.provider,t)}let i=[``];for(let[e,t]of r){i.push(` ${e}:`);for(let e of t){let t=e.id===n.currentModel?` *`:` `;i.push(` ${t} ${e.id} — ${e.name}`)}}return i.push(``,e.t(`model.listFooter`)),i.join(`
1
+ import{n as e}from"./i18n-C2MZcG8O.js";var t=class{commands=new Map;register(e){if(this.commands.has(e.name))throw Error(`Command "/${e.name}" is already registered`);this.commands.set(e.name,e)}get(e){return this.commands.get(e)}find(e){let t=this.commands.get(e);if(t)return t;for(let t of this.commands.values())if(t.aliases?.includes(e))return t}list(){return[...this.commands.values()]}names(){return[...this.commands.keys()]}has(e){return this.commands.has(e)}unregister(e){return this.commands.delete(e)}};function n(){let n=new t;return n.register({name:`help`,description:e.t(`cmdDesc.help`),aliases:[`h`,`?`],type:`action`,source:`builtin`,execute:()=>({kind:`help`})}),n.register({name:`exit`,description:e.t(`cmdDesc.exit`),aliases:[`quit`,`q`],type:`action`,source:`builtin`,execute:e=>{let t=e?.trim()??``;return t===`--restart`||t===`-r`?{kind:`exit`,restart:!0}:{kind:`exit`}}}),n.register({name:`clear`,description:e.t(`cmdDesc.clear`),type:`action`,source:`builtin`,execute:()=>({kind:`clear`})}),n.register({name:`abort`,description:e.t(`cmdDesc.abort`),type:`action`,source:`builtin`,execute:()=>({kind:`abort`})}),n.register({name:`copy`,description:e.t(`cmdDesc.copy`),type:`action`,source:`builtin`,execute:()=>({kind:`copy`})}),n.register({name:`model`,description:e.t(`cmdDesc.model`),aliases:[`m`],type:`action`,source:`builtin`,execute:(t,n)=>{if(!n.models||n.models.length===0)return e.t(`model.noRegistry`);if(t&&n.onModelChange){let r=n.models.find(e=>e.id===t||e.name===t);return r?{kind:`model`,modelId:r.id}:e.t(`model.notFound`,{name:t})}let r=new Map;for(let e of n.models){let t=r.get(e.provider)??[];t.push(e),r.set(e.provider,t)}let i=[``];for(let[e,t]of r){i.push(` ${e}:`);for(let e of t){let t=e.id===n.currentModel?` *`:` `;i.push(` ${t} ${e.id} — ${e.name}`)}}return i.push(``,e.t(`model.listFooter`)),i.join(`
2
2
  `)}}),n.register({name:`status`,description:e.t(`cmdDesc.status`),type:`action`,source:`builtin`,execute:()=>({kind:`status`})}),n}function r(e,t,n){return Promise.resolve({command:`help`,args:``})}export{t as CommandRegistry,n as createBuiltinCommands,r as showCommandPalette};
3
3
  //# sourceMappingURL=compat.js.map
@@ -4,7 +4,7 @@ Use the bash tool via the agent for privileged operations.`,noModelConfigured:`N
4
4
  Type /upgrade --force to install and restart now.`,titleMemoryPressure:`Memory pressure`,memoryPressureRestartNow:`Restart now`,memoryPressureRemindLater:`Remind me later`,titleAutoCompact:`Auto-compact`,autoCompactFailed:`Automatic context compaction failed: {{msg}}`,titleFleetBudget:`Process fleet`,fleetBudgetExceeded:"{{processCount}} otto processes using {{totalRssMb}}MB total - over budget. Run `otto ps` to inspect and sweep orphans.",restartChainDeep:`This session has been restarted {{generation}} times - each restart leaves a chaperone process in the chain. Exit fully and reopen the terminal to release them.`,memoryPressureSuppress:`Don't ask again this session`,memoryPressureResumeAbortedMessage:`Memory pressure is still high after restart — auto-resume was skipped. Your unfinished message is preserved in history; resend it manually when ready.`,memoryPressureResumeFailedMessage:`Auto-resume failed after restart. Please resend your message manually.`,titleStaleBuild:`New build detected`,staleBuildMessage:`You are running build {{current}}, but build {{latest}} is already available on disk. Consider /exit to restart and pick up the latest fixes.`,titleContextPressure:`Context usage`,contextPressureApproaching:`Context usage at {{pct}}%, approaching the auto-prune threshold`,contextPressureNearing:`Context usage at {{pct}}%, within the auto-prune range`,contextPressureCritical:`Context usage at {{pct}}%, auto-compaction imminent`,titleError:`Error`,resumeNotFound:`Session "{{id}}" not found — started a new session.`,modelsRefreshed:`Models refreshed: {{summary}} (/model to view, ✓ = available)`,modelsRefreshedEmpty:`Model refresh: no providers to pull from (using cache/built-in)`,titleSetupRequired:`Setup required`,titleSetupReady:`Ready`,setupReadyMessage:`Model ready — just type a message to start!`,modelNotSupported:`This model may not be supported by your account. Type /model to pick one marked ✓ (available), or /model refresh.`,rateLimitedRetriesExhausted:`The current model hit a server-side rate limit (not an account quota exhaustion) and automatic retries were exhausted. Retry shortly, or type /model to switch to another available model.`,requestFailed:`Request failed: {{msg}}`,resumeContinueLabel:`Continue this session:`,titleEffort:`Effort`,selectEffortTitle:`Select reasoning effort`,selectLanguageTitle:`Language`,titlePreference:`Preferences`,preferenceUsage:`Usage: /preference [general|lang|theme]`,prefOptionLang:`Language`,prefOptionTheme:`Theme`,prefOptionGeneral:`General`,prefDescGeneral:`General behavior, notifications & personalization`,prefDescLang:`Interface display language`,prefDescTheme:`Color appearance (dark / light / system)`,selectGeneralTitle:`General`,genNickname:`Nickname`,genNicknameDesc:`Name shown in sessions & notifications`,genNicknameInputTitle:`Enter nickname`,genNicknamePlaceholder:`Your name…`,genCompletionNotice:`Completion notice`,genCompletionNoticeDesc:`Notify when a task completes`,genSound:`Sound`,genSoundDesc:`Play a sound with notifications`,genUpdateCheck:`Update check`,genUpdateCheckDesc:`Check for updates on startup (notify only)`,toggleOn:`On`,toggleOff:`Off`,genSaved:`Saved`,genSkillLoop:`Skill Loop`,genSkillLoopMissing:`Not installed`,genSkillLoopMissingHint:`Install plugin-skill-inductor to enable`,genSkillLoopEntryDesc:`Auto-extract reusable skills from conversations`,genSkillLoopOn:`On`,genSkillLoopOff:`Off`,genSkillLoopThresholdTitle:`Trigger Threshold`,genSkillLoopThresholdDesc:`Number of messages before skill extraction triggers`,genSkillLoopThreshold:`Threshold`,genSkillLoopThr4:`4 messages (aggressive)`,genSkillLoopThr4Desc:`Triggers after very few messages; for heavy use`,genSkillLoopThr6:`6 messages (default)`,genSkillLoopThr6Desc:`Balanced trigger frequency and quality`,genSkillLoopThr12:`12 messages (conservative)`,genSkillLoopThr12Desc:`Triggers after longer conversations; more stable`,genSkillLoopThr20:`20 messages (very conservative)`,genSkillLoopThr20Desc:`Triggers only in long conversations`,genSkillLoopCooldownTitle:`Cooldown`,genSkillLoopCooldownDesc:`Days before skill extraction can trigger again`,genSkillLoopCooldown:`Cooldown`,genSkillLoopCd3:`3 days`,genSkillLoopCd14:`14 days (default)`,genSkillLoopCd30:`30 days`,genSkillLoopCd365:`365 days`,genSkillLoopCdDays:`{{n}} days`,genSkillLoopStatus:`Skill Loop Status`,genSkillLoopStatusDesc:`View extraction history and skill candidates`,skillLoopOnOff:`On/Off`,skillLoopPanelTitle:`Skill Loop`,skillLoopStatusTitle:`Skill Loop Status`,skillLoopStatusNotInstalled:`Plugin not installed`,skillLoopStatusSuccess:`Successful extractions`,skillLoopStatusPending:`Pending`,skillLoopStatusCandidates:`Skill candidates`,skillLoopStatusCooling:`Cooling down`,skillLoopStatusCount:`count`,skillLoopStatusEpisodes:`episodes`,skillLoopStatusTimes:`times`,skillLoopStatusGroupRecent:`Recent`,skillLoopStatusGroupPending:`Pending`,compatTrusted:`Trusted`,langDescZh:`Simplified Chinese interface`,langDescEn:`English interface`,langDescAuto:`Follow system environment (LANG)`,themeDescDark:`Dark palette, best for low light`,themeDescLight:`Light palette, best for bright light`,themeDescSystem:`Follow terminal / system appearance`,themeUsage:`Unknown theme. Available: dark|light|system. Run /preference theme (no args) to also pick color presets.`,themeDarkPresetOption:`Dark preset`,themeDarkPresetDesc:`Color preset used for dark appearance`,themeLightPresetOption:`Light preset`,themeLightPresetDesc:`Color preset used for light appearance`,themePresetTitleDark:`Dark preset`,themePresetTitleLight:`Light preset`,themePresetBuiltin:`Built-in`,themePresetFromExtension:`From {{id}}`,themePresetReset:`Reset to default`,themePresetResetDesc:`Use the built-in preset for this appearance`,themePresetSaved:`Theme preset saved: {{label}}`,selectCancelled:`Cancelled`,titleCompat:`Trust`,titlePermissions:`Permissions`,titleUpgrade:`Upgrade`,titleCommands:`Commands`,effortUnknown:`Unknown: {{arg}}. Available: {{levels}}`,compatTrusting:`Trusted this project’s .claude executable config — hot-reloading…`,compatReloadFailed:`Reload failed: {{err}}`,compatUntrusted:`Trust revoked (.claude executable surfaces skipped from next startup)`,compatNone:`This project has no .claude executable config (.mcp.json / .claude/commands).`,compatTrustedLabel:`trusted`,compatUntrustedLabel:`untrusted — these surfaces are skipped; type /compat trust to enable`,compatConfigGated:`.otto/config.json high-risk keys ignored ({{keys}}) — type /compat trust to enable`,compatConfigActive:`.otto/config.json high-risk keys active ({{keys}}) — trusted`,listSep:`, `,permsCleared:`Cleared the always-allow list — future actions will prompt again`,upgradeChecking:`Checking for updates… (current v{{current}})`,upgradeNoNetwork:`Cannot reach the npm registry — check your network and retry.`,upgradeLatest:`Already on the latest version v{{current}}`,upgrading:`Upgrading…`,upgradeFailed:`Upgrade failed: {{err}}`,unknownError:`unknown error`,permsSessionLabel:`This session’s always-allow:`,permsProjectLabel:`Project-level always-allow:`,permsClearHint:`Clear this session: /permissions clear`,permsManageHint:`Manage project-level: /permissions add bash(git status) · /permissions remove <entry>`,permsInvalidEntry:`Invalid entry "{{entry}}" — use a tool name like "read" or "bash(git status)" (empty parens "bash()" not allowed)`,permsAdded:`Added to project always-allow: {{entry}}`,permsRemoved:`Removed from project always-allow: {{entry}}`,permsNotFound:`Not in the project always-allow list: {{entry}}`,permsEmpty:`(empty)`,helpGroupSession:`Session`,helpGroupModel:`Model & auth`,helpGroupAgent:`Agent management`,helpGroupDebug:`Debug & diagnostics`,helpGroupUi:`Interface`,helpGroupOther:`Other`,helpPrefixes:`Prefixes`,helpPrefixShell:`Run as shell command`,helpPrefixFile:`Read file into context`,titleJob:`Job`,titleReverted:`Reverted`,titleDelegated:`Delegated`,titlePlugin:`Plugin`,titleExtension:`Extension`,extCategoryLabel:`{{category}}`,extAppliesNextTurn:`applies next turn`,extListTitle:`Extensions — {{enabled}}/{{total}} enabled`,extListEmptyTitle:`Extensions — none available`,extListEmptyOption:`No pluggable extensions (add MCP servers / skills / agents / plugins)`,extDiscoverHint:`More plugins available in registries`,extDiscoverButton:`Discover`,jobUsage:`Usage: /job <what to do> — delegate a background agent job (worktree-isolated, full tools). /delegates for progress, /job revert <id> to undo.`,jobReverted:`Job {{id}} reverted: {{msg}}`,jobRevertFailed:`✗ Revert of job {{id}} incomplete ({{status}}): {{msg}}{{conflicts}}`,jobConflictFiles:`
5
5
  Conflicting files:
6
6
  {{joinedPaths}}`,delegated:`{{title}}
7
- See progress in the /delegates pane`,delegateFailed:`Delegation failed: {{err}}`,extEnableLabel:`Enable`,extDisableLabel:`Disable`,extReconnectLabel:`↻ Reconnect`,extReloadLabel:`Reload`,extMcpTitle:`{{name}} — status {{status}} · pick an action · Esc to close`,extItemTitle:`{{name}} — pick an action · Esc to close`,extPluginGroupTitle:`Plugin Info`,extPluginLabelDesc:`Description`,extPluginLabelScope:`Scope`,extPluginLabelTrust:`Trust`,extPluginLabelSurfaces:`Contributes`,extPluginLabelContributions:`Axes`,extPluginLabelStatus:`Status`,extSkillGroupOverview:`Overview`,extSkillLabelDesc:`Description`,extSkillLabelStatus:`Status`,extSkillLabelSource:`Source`,extSkillGroupTrigger:`Trigger`,extSkillLabelTriggerMode:`Mode`,extSkillLabelPriority:`Priority`,extSkillGroupDependencies:`Dependencies`,extSkillLabelDependencies:`Depends on`,extSkillGroupTags:`Tags`,extSkillLabelTags:`Tags`,extSkillGroupError:`Error`,extSkillNoDependencies:`No dependencies`,extSkillNoTags:`No tags`,extSkillTriggerAuto:`Auto (matched by description)`,extSkillTriggerManual:`Manual (explicit call only)`,extViewFullTextLabel:`View full text`,extSkillFullTextTitle:`{{name}} — SKILL.md body`,extSkillNoBody:`(no body content)`,extAgentGroupOverview:`Overview`,extAgentLabelDesc:`Description`,extAgentLabelStatus:`Status`,extAgentGroupCapabilities:`Task & Capabilities`,extAgentLabelTaskTypes:`Task types`,extAgentLabelCapabilities:`Capabilities`,extAgentGroupTools:`Tool permissions`,extAgentLabelDefaultTools:`Default tool allowlist`,extAgentLabelDisallowedTools:`Disallowed tool denylist`,extAgentGroupExecution:`Execution config`,extAgentLabelPromptMode:`Prompt injection mode`,extAgentLabelModelTier:`Preferred model tier`,extAgentLabelAllowSubagents:`Allow sub-agent delegation`,extAgentNoTaskTypes:`not declared`,extAgentNoCapabilities:`not declared`,extAgentAllTools:`inherits all (unrestricted)`,extAgentNoDisallowedTools:`none`,extAgentFullTextTitle:`{{name}} — system prompt template`,extPluginTrustLabel:`Trust executable surfaces`,extPluginUntrustLabel:`Revoke trust`,extPluginOpenPanelLabel:`{{title}}`,extPluginTrusted:`trusted`,extPluginUntrusted:`untrusted (project — executable surfaces gated)`,extPluginNoSurface:`no executable surface (always trusted)`,extPluginCapabilityPending:`trusted · high-risk capabilities pending ({{caps}})`,extToggleFailed:`Toggle failed: {{err}}`,extToggleReloadFailed:`{{verb}} {{name}}, but reloading capabilities failed: {{err}} (state saved, retry reload)`,extReconnectUnavailable:`Cannot reconnect {{id}} (not configured or MCP not ready)`,extReconnected:`Reconnected {{id}}`,extReconnectFailed:`Reconnect {{id}} failed: {{err}}`,extLogSectionTitle:`Recent logs`,extNoLogs:`No logs yet`,extRefreshHint:`r refresh`,errorRetryPluginSource:`From plugin: {{pluginId}}`,pluginNotFound:`Plugin "{{id}}" not found (under <.otto>/plugins/)`,pluginTrusting:`Trusted plugin {{id}}’s executable surfaces — hot-reloading…`,pluginUntrusted:`Revoked trust for {{id}} (its executable surfaces skipped from next discovery)`,pluginTrustConfirmTitle:`Trust plugin "{{id}}"?`,pluginTrustConfirmIntro:`Trusting enables its executable surface — this runs code:`,pluginSurfaceMcp:`.mcp.json — launches MCP server binaries`,pluginSurfaceCommands:`commands/ — !cmd expands to a shell command`,pluginSurfaceScripts:`postinstall/setup — runs shell on install/first load`,pluginSurfacePanels:`panels — runs in-process code in the TUI`,pluginSurfaceSkills:`skills/ — injects prompt content the model may follow`,pluginSurfaceAgents:`agents/ — injects an agent profile (inherits all tools by default)`,pluginCapabilityIntro:`This plugin requests the following high-risk capabilities:`,pluginCapabilityProvider:`provider — registers an LLM provider, handling your credentials and request traffic`,pluginCapabilityTools:`tools — registers tools callable by agents`,pluginCapabilityTuiRenderer:`tui.renderer — runs custom rendering code inside the TUI process`,pluginCapabilityNetwork:`network — makes arbitrary network requests`,pluginCapabilityWireProtocol:`wire-protocol — intercepts all provider requests/responses, including credentials`,pluginCapabilityA2uiComponent:`a2ui.component — runs custom rendering code inside the TUI process`,pluginCapabilityPanelBackend:`panel.backend — panel can drive backend actions with side effects`,pluginCapabilityInputResolver:`input.resolver — expands @ references at submit time, injecting content into the prompt`,pluginCapabilityA2uiRenderer:`a2ui.renderer — runs custom code to render messages across TUI and web-ui`,pluginTrustConfirmHint:`Only trust plugins whose source you have reviewed.`,pluginTrustConfirmAction:`Trust`,scopeGlobal:`global`,scopeProject:`project`,scopeRepository:`repository`,commonCancel:`Cancel`,commonClose:`Close`,unknownLabel:`(unknown)`,titleInstall:`Install`,titleDryRun:`Dry-run`,titleUninstall:`Uninstall`,installUsage:`Usage: /install [--global] [--here] [--force] [--dry-run] [--as plugin|skill|mcp] <source>
7
+ See progress in the /delegates pane`,delegateFailed:`Delegation failed: {{err}}`,extEnableLabel:`Enable`,extDisableLabel:`Disable`,extReconnectLabel:`↻ Reconnect`,extReloadLabel:`Reload`,extMcpTitle:`{{name}} — status {{status}} · pick an action · Esc to close`,extItemTitle:`{{name}} — pick an action · Esc to close`,extPluginGroupTitle:`Plugin Info`,extPluginLabelDesc:`Description`,extPluginLabelScope:`Scope`,extPluginLabelTrust:`Trust`,extPluginLabelSurfaces:`Contributes`,extPluginLabelContributions:`Axes`,extPluginLabelStatus:`Status`,extSkillGroupOverview:`Overview`,extSkillLabelDesc:`Description`,extSkillLabelStatus:`Status`,extSkillLabelSource:`Source`,extSkillManagedExternally:`Managed externally — edit/remove files under {{root}} directly (not tracked by otto's install engine)`,extSkillGroupTrigger:`Trigger`,extSkillLabelTriggerMode:`Mode`,extSkillLabelPriority:`Priority`,extSkillGroupDependencies:`Dependencies`,extSkillLabelDependencies:`Depends on`,extSkillGroupTags:`Tags`,extSkillLabelTags:`Tags`,extSkillGroupError:`Error`,extSkillNoDependencies:`No dependencies`,extSkillNoTags:`No tags`,extSkillTriggerAuto:`Auto (matched by description)`,extSkillTriggerManual:`Manual (explicit call only)`,extViewFullTextLabel:`View full text`,extSkillFullTextTitle:`{{name}} — SKILL.md body`,extSkillNoBody:`(no body content)`,extAgentGroupOverview:`Overview`,extAgentLabelDesc:`Description`,extAgentLabelStatus:`Status`,extAgentGroupCapabilities:`Task & Capabilities`,extAgentLabelTaskTypes:`Task types`,extAgentLabelCapabilities:`Capabilities`,extAgentGroupTools:`Tool permissions`,extAgentLabelDefaultTools:`Default tool allowlist`,extAgentLabelDisallowedTools:`Disallowed tool denylist`,extAgentGroupExecution:`Execution config`,extAgentLabelPromptMode:`Prompt injection mode`,extAgentLabelModelTier:`Preferred model tier`,extAgentLabelAllowSubagents:`Allow sub-agent delegation`,extAgentNoTaskTypes:`not declared`,extAgentNoCapabilities:`not declared`,extAgentAllTools:`inherits all (unrestricted)`,extAgentNoDisallowedTools:`none`,extAgentFullTextTitle:`{{name}} — system prompt template`,extPluginTrustLabel:`Trust executable surfaces`,extPluginUntrustLabel:`Revoke trust`,extPluginOpenPanelLabel:`{{title}}`,extPluginTrusted:`trusted`,extPluginUntrusted:`untrusted (project — executable surfaces gated)`,extPluginNoSurface:`no executable surface (always trusted)`,extPluginCapabilityPending:`trusted · high-risk capabilities pending ({{caps}})`,extToggleFailed:`Toggle failed: {{err}}`,extToggleReloadFailed:`{{verb}} {{name}}, but reloading capabilities failed: {{err}} (state saved, retry reload)`,extReconnectUnavailable:`Cannot reconnect {{id}} (not configured or MCP not ready)`,extReconnected:`Reconnected {{id}}`,extReconnectFailed:`Reconnect {{id}} failed: {{err}}`,extLogSectionTitle:`Recent logs`,extNoLogs:`No logs yet`,extRefreshHint:`r refresh`,errorRetryPluginSource:`From plugin: {{pluginId}}`,pluginNotFound:`Plugin "{{id}}" not found (under <.otto>/plugins/)`,pluginTrusting:`Trusted plugin {{id}}’s executable surfaces — hot-reloading…`,pluginUntrusted:`Revoked trust for {{id}} (its executable surfaces skipped from next discovery)`,pluginTrustConfirmTitle:`Trust plugin "{{id}}"?`,pluginTrustConfirmIntro:`Trusting enables its executable surface — this runs code:`,pluginSurfaceMcp:`.mcp.json — launches MCP server binaries`,pluginSurfaceCommands:`commands/ — !cmd expands to a shell command`,pluginSurfaceScripts:`postinstall/setup — runs shell on install/first load`,pluginSurfacePanels:`panels — runs in-process code in the TUI`,pluginSurfaceSkills:`skills/ — injects prompt content the model may follow`,pluginSurfaceAgents:`agents/ — injects an agent profile (inherits all tools by default)`,pluginCapabilityIntro:`This plugin requests the following high-risk capabilities:`,pluginCapabilityProvider:`provider — registers an LLM provider, handling your credentials and request traffic`,pluginCapabilityTools:`tools — registers tools callable by agents`,pluginCapabilityTuiRenderer:`tui.renderer — runs custom rendering code inside the TUI process`,pluginCapabilityNetwork:`network — makes arbitrary network requests`,pluginCapabilityWireProtocol:`wire-protocol — intercepts all provider requests/responses, including credentials`,pluginCapabilityA2uiComponent:`a2ui.component — runs custom rendering code inside the TUI process`,pluginCapabilityPanelBackend:`panel.backend — panel can drive backend actions with side effects`,pluginCapabilityInputResolver:`input.resolver — expands @ references at submit time, injecting content into the prompt`,pluginCapabilityA2uiRenderer:`a2ui.renderer — runs custom code to render messages across TUI and web-ui`,pluginTrustConfirmHint:`Only trust plugins whose source you have reviewed.`,pluginTrustConfirmAction:`Trust`,scopeGlobal:`global`,scopeProject:`project`,scopeRepository:`repository`,commonCancel:`Cancel`,commonClose:`Close`,unknownLabel:`(unknown)`,titleInstall:`Install`,titleDryRun:`Dry-run`,titleUninstall:`Uninstall`,installUsage:`Usage: /install [--global] [--here] [--force] [--dry-run] [--as plugin|skill|mcp] <source>
8
8
  source local .zip/.tar.gz path, HTTP URL, git address, or npm package name
9
9
  --global install to user-level ~/.otto/ (default: project-level .otto/)
10
10
  --here install to the current dir .otto/ (bypass workspace-root lookup; exclusive with --global)
@@ -42,7 +42,7 @@ A crash report has been recorded.`,stepNameProvider:`Provider`,stepNameLogin:`Lo
42
42
  输入 /upgrade --force 立即安装并重启。`,titleMemoryPressure:`内存压力`,memoryPressureRestartNow:`立即重启`,memoryPressureRemindLater:`稍后提醒`,titleAutoCompact:`自动压缩`,autoCompactFailed:`自动上下文压缩失败:{{msg}}`,titleFleetBudget:`进程群`,fleetBudgetExceeded:"本机 {{processCount}} 个 otto 进程合计占用 {{totalRssMb}}MB,已超预算。运行 `otto ps` 查看并清扫孤儿进程。",restartChainDeep:`本会话已重启 {{generation}} 次——每次重启会在进程链上留下一个陪跑进程。建议完整退出并重开终端,一次性释放整条链。`,memoryPressureSuppress:`本次会话不再提醒`,memoryPressureResumeAbortedMessage:`重启后内存压力依然过高——已跳过自动续跑。未完成的消息仍保留在历史记录中,可稍后手动重发。`,memoryPressureResumeFailedMessage:`重启后自动续跑失败,请手动重新发送消息。`,titleStaleBuild:`检测到新构建`,staleBuildMessage:`当前运行 build {{current}},磁盘已有更新的 build {{latest}},建议 /exit 重启以获取最新修复`,titleContextPressure:`上下文占用`,contextPressureApproaching:`上下文占用已达 {{pct}}%,接近自动裁剪线`,contextPressureNearing:`上下文占用 {{pct}}%,已进入自动裁剪区间`,contextPressureCritical:`上下文占用 {{pct}}%,即将触发自动压缩`,titleError:`错误`,resumeNotFound:`未找到会话 "{{id}}",已新建会话。`,modelsRefreshed:`已刷新模型:{{summary}}(/model 查看,✓ = 账号可用)`,modelsRefreshedEmpty:`模型刷新:暂无可拉取的 provider(仍用缓存/内置)`,titleSetupRequired:`需要配置`,titleSetupReady:`就绪`,setupReadyMessage:`模型已就绪 — 直接输入消息开始对话!`,modelNotSupported:`该模型可能不被当前账号支持。输入 /model 选一个带 ✓(账号可用)的模型,或 /model refresh 刷新列表。`,rateLimitedRetriesExhausted:`当前模型触发了服务端流量限制(并非账号配额耗尽),自动重试已达上限。可稍后重试,或输入 /model 切换到其他可用模型。`,requestFailed:`请求失败:{{msg}}`,resumeContinueLabel:`续上本会话:`,titleEffort:`投入`,selectEffortTitle:`选择推理投入级别`,selectLanguageTitle:`语言`,titlePreference:`偏好设置`,preferenceUsage:`用法:/preference [general|lang|theme]`,prefOptionLang:`语言`,prefOptionTheme:`主题`,prefOptionGeneral:`常规`,prefDescGeneral:`通用行为、通知与个性化设置`,prefDescLang:`界面显示语言`,prefDescTheme:`配色外观(深色 / 浅色 / 跟随系统)`,selectGeneralTitle:`常规`,genNickname:`昵称`,genNicknameDesc:`会话与通知中个性化显示的称呼`,genNicknameInputTitle:`输入昵称`,genNicknamePlaceholder:`你的称呼…`,genCompletionNotice:`完成通知`,genCompletionNoticeDesc:`任务完成时推送系统通知`,genSound:`提示音`,genSoundDesc:`通知伴随提示音`,genUpdateCheck:`启动检查更新`,genUpdateCheckDesc:`启动时后台检查新版本(仅提示不自动安装)`,toggleOn:`开启`,toggleOff:`关闭`,genSaved:`已保存`,genSkillLoop:`技能回路`,genSkillLoopMissing:`未安装`,genSkillLoopMissingHint:`安装 plugin-skill-inductor 后可用`,genSkillLoopEntryDesc:`自动从对话中归纳可复用技能`,genSkillLoopOn:`开启`,genSkillLoopOff:`关闭`,genSkillLoopThresholdTitle:`触发阈值`,genSkillLoopThresholdDesc:`对话消息数达到此值时触发归纳`,genSkillLoopThreshold:`阈值`,genSkillLoopThr4:`4 条(激进)`,genSkillLoopThr4Desc:`极少对话即触发,适合频繁使用`,genSkillLoopThr6:`6 条(默认)`,genSkillLoopThr6Desc:`平衡触发频率与归纳质量`,genSkillLoopThr12:`12 条(保守)`,genSkillLoopThr12Desc:`较长对话才触发,归纳更稳定`,genSkillLoopThr20:`20 条(极保守)`,genSkillLoopThr20Desc:`仅长对话触发`,genSkillLoopCooldownTitle:`静默期`,genSkillLoopCooldownDesc:`归纳后多少天内不再重复触发`,genSkillLoopCooldown:`静默`,genSkillLoopCd3:`3 天`,genSkillLoopCd14:`14 天(默认)`,genSkillLoopCd30:`30 天`,genSkillLoopCd365:`365 天`,genSkillLoopCdDays:`{{n}} 天`,genSkillLoopStatus:`技能回路状态`,genSkillLoopStatusDesc:`查看归纳历史与候选技能`,skillLoopOnOff:`开/关`,skillLoopPanelTitle:`技能回路`,skillLoopStatusTitle:`技能回路状态`,skillLoopStatusNotInstalled:`插件未安装`,skillLoopStatusSuccess:`成功归纳`,skillLoopStatusPending:`待处理`,skillLoopStatusCandidates:`候选技能`,skillLoopStatusCooling:`静默中`,skillLoopStatusCount:`次数`,skillLoopStatusEpisodes:`回合`,skillLoopStatusTimes:`次`,skillLoopStatusGroupRecent:`最近`,skillLoopStatusGroupPending:`待处理`,compatTrusted:`已信任`,langDescZh:`使用简体中文界面`,langDescEn:`使用英文界面`,langDescAuto:`跟随系统环境(LANG)自动选择`,themeDescDark:`深色配色,适合暗光环境`,themeDescLight:`浅色配色,适合明亮环境`,themeDescSystem:`跟随终端 / 系统外观自动切换`,themeUsage:`未知主题。可用:dark|light|system。运行 /preference theme(不带参数)可选择配色方案。`,themeDarkPresetOption:`深色配色方案`,themeDarkPresetDesc:`深色外观使用的配色方案`,themeLightPresetOption:`浅色配色方案`,themeLightPresetDesc:`浅色外观使用的配色方案`,themePresetTitleDark:`深色配色方案`,themePresetTitleLight:`浅色配色方案`,themePresetBuiltin:`内置`,themePresetFromExtension:`来自 {{id}}`,themePresetReset:`恢复默认`,themePresetResetDesc:`使用该外观的内置配色方案`,themePresetSaved:`主题配色方案已保存:{{label}}`,selectCancelled:`已取消`,titleCompat:`信任`,titlePermissions:`权限`,titleUpgrade:`升级`,titleCommands:`命令`,effortUnknown:`未知: {{arg}}。可用: {{levels}}`,compatTrusting:`已信任本项目的 .claude 可执行配置,热重载中…`,compatReloadFailed:`重载失败:{{err}}`,compatUntrusted:`已撤销信任(下次启动起跳过 .claude 可执行面)`,compatNone:`本项目无 .claude 可执行配置(.mcp.json / .claude/commands)。`,compatTrustedLabel:`已信任`,compatUntrustedLabel:`未信任 — 这些面当前被跳过;输入 /compat trust 启用`,compatConfigGated:`.otto/config.json 高危键已忽略({{keys}})— 输入 /compat trust 启用`,compatConfigActive:`.otto/config.json 高危键已生效({{keys}})— 已信任`,listSep:`、`,permsCleared:`已清空「始终允许」——后续操作将重新弹窗确认`,upgradeChecking:`检查新版本中… (当前 v{{current}})`,upgradeNoNetwork:`无法连接 npm registry,请检查网络后重试。`,upgradeLatest:`已是最新版本 v{{current}}`,upgrading:`升级中…`,upgradeFailed:`升级失败: {{err}}`,unknownError:`未知错误`,permsSessionLabel:`本会话「始终允许」:`,permsProjectLabel:`项目级「始终允许」:`,permsClearHint:`清除本会话:/permissions clear`,permsManageHint:`管理项目级:/permissions add bash(git status) · /permissions remove <条目>`,permsInvalidEntry:`条目「{{entry}}」格式非法——用工具名如「read」或「bash(git status)」(空括号「bash()」不允许)`,permsAdded:`已加入项目级「始终允许」:{{entry}}`,permsRemoved:`已从项目级「始终允许」移除:{{entry}}`,permsNotFound:`不在项目级「始终允许」列表中:{{entry}}`,permsEmpty:`(空)`,helpGroupSession:`会话`,helpGroupModel:`模型与认证`,helpGroupAgent:`代理管理`,helpGroupDebug:`调试与诊断`,helpGroupUi:`界面`,helpGroupOther:`其它`,helpPrefixes:`前缀`,helpPrefixShell:`作为 shell 命令执行`,helpPrefixFile:`读取文件到上下文`,titleJob:`作业`,titleReverted:`已撤销`,titleDelegated:`已委派`,titlePlugin:`插件`,titleExtension:`扩展`,extCategoryLabel:`{{category}}`,extAppliesNextTurn:`下一轮生效`,extListTitle:`扩展 — 共 {{total}} 个,已启用 {{enabled}} 个`,extListEmptyTitle:`扩展 — 暂无可用`,extDiscoverHint:`可从 registry 搜索安装更多插件`,extDiscoverButton:`去发现`,extListEmptyOption:`暂无可插拔扩展(添加 MCP 服务器 / skills / agents / plugins)`,jobUsage:`用法:/job <要做的事> — 委派后台 agent 作业(worktree 隔离 + 全套工具)。/delegates 看进度,/job revert <id> 撤销。`,jobReverted:`作业 {{id}} 已撤销:{{msg}}`,jobRevertFailed:`✗ 撤销作业 {{id}} 未完成({{status}}):{{msg}}{{conflicts}}`,jobConflictFiles:`
43
43
  冲突文件:
44
44
  {{joinedPaths}}`,delegated:`{{title}}
45
- /delegates 面板查看进度`,delegateFailed:`委派失败:{{err}}`,extEnableLabel:`启用`,extDisableLabel:`禁用`,extReconnectLabel:`↻ 重新连接`,extReloadLabel:`重载`,extMcpTitle:`{{name}} — 状态 {{status}} · 选操作 · Esc 关`,extItemTitle:`{{name}} — 选操作 · Esc 关`,extPluginGroupTitle:`插件信息`,extPluginLabelDesc:`描述`,extPluginLabelScope:`作用域`,extPluginLabelTrust:`信任`,extPluginLabelSurfaces:`贡献面`,extPluginLabelContributions:`贡献轴`,extPluginLabelStatus:`状态`,extSkillGroupOverview:`概述`,extSkillLabelDesc:`描述`,extSkillLabelStatus:`状态`,extSkillLabelSource:`来源`,extSkillGroupTrigger:`触发方式`,extSkillLabelTriggerMode:`模式`,extSkillLabelPriority:`优先级`,extSkillGroupDependencies:`依赖`,extSkillLabelDependencies:`依赖 skill`,extSkillGroupTags:`标签`,extSkillLabelTags:`标签`,extSkillGroupError:`错误`,extSkillNoDependencies:`无依赖`,extSkillNoTags:`无标签`,extSkillTriggerAuto:`自动(按描述匹配)`,extSkillTriggerManual:`手动(显式调用)`,extViewFullTextLabel:`查看正文`,extSkillFullTextTitle:`{{name}} — SKILL.md 正文`,extSkillNoBody:`(无正文内容)`,extAgentGroupOverview:`概述`,extAgentLabelDesc:`描述`,extAgentLabelStatus:`状态`,extAgentGroupCapabilities:`任务与能力`,extAgentLabelTaskTypes:`任务类型`,extAgentLabelCapabilities:`能力标签`,extAgentGroupTools:`工具权限`,extAgentLabelDefaultTools:`默认工具白名单`,extAgentLabelDisallowedTools:`禁用工具黑名单`,extAgentGroupExecution:`执行配置`,extAgentLabelPromptMode:`提示词注入模式`,extAgentLabelModelTier:`偏好模型层级`,extAgentLabelAllowSubagents:`允许子代理委托`,extAgentNoTaskTypes:`未声明`,extAgentNoCapabilities:`未声明`,extAgentAllTools:`继承全部(未限制)`,extAgentNoDisallowedTools:`无`,extAgentFullTextTitle:`{{name}} — 系统提示词模板`,extPluginTrustLabel:`信任可执行面`,extPluginUntrustLabel:`撤销信任`,extPluginOpenPanelLabel:`{{title}}`,extPluginTrusted:`已信任`,extPluginUntrusted:`未信任(项目级——可执行面被门控)`,extPluginNoSurface:`无可执行面(永远受信任)`,extPluginCapabilityPending:`已信任 · 高危能力待授权({{caps}})`,extToggleFailed:`切换失败:{{err}}`,extToggleReloadFailed:`已{{verb}} {{name}},但刷新能力失败:{{err}}(状态已保存,可重试刷新)`,extReconnectUnavailable:`无法重连 {{id}}(未配置或 MCP 未就绪)`,extReconnected:`已重连 {{id}}`,extReconnectFailed:`重连 {{id}} 失败:{{err}}`,extLogSectionTitle:`最近日志`,extNoLogs:`暂无日志`,extRefreshHint:`r 刷新`,errorRetryPluginSource:`来自插件: {{pluginId}}`,pluginNotFound:`未找到插件 "{{id}}"(在 <.otto>/plugins/ 下)`,pluginTrusting:`已信任插件 {{id}} 的可执行面,热重载中…`,pluginUntrusted:`已撤销对 {{id}} 的信任(下次发现起跳过其可执行面)`,pluginTrustConfirmTitle:`信任插件 "{{id}}"?`,pluginTrustConfirmIntro:`信任将放行其可执行面——这会运行代码:`,pluginSurfaceMcp:`.mcp.json —— 启动 MCP server 二进制`,pluginSurfaceCommands:`commands/ —— !cmd 展开为 shell 命令`,pluginSurfaceScripts:`postinstall/setup —— 安装/首次加载时执行 shell`,pluginSurfacePanels:`panels —— 在 TUI 进程内运行代码`,pluginSurfaceSkills:`skills/ —— 注入模型可能照做的 prompt 内容`,pluginSurfaceAgents:`agents/ —— 注入 agent profile(默认继承全部工具)`,pluginCapabilityIntro:`该插件申请以下高危能力:`,pluginCapabilityProvider:`provider —— 注册 LLM provider,将处理你的凭据与请求流量`,pluginCapabilityTools:`tools —— 注册可被 agent 调用的工具`,pluginCapabilityTuiRenderer:`tui.renderer —— 在 TUI 进程内运行自定义渲染代码`,pluginCapabilityNetwork:`network —— 发起任意网络请求`,pluginCapabilityWireProtocol:`wire-protocol —— 截获全部 provider 请求/响应流量(含凭据)`,pluginCapabilityA2uiComponent:`a2ui.component —— 在 TUI 进程内运行自定义渲染组件代码`,pluginCapabilityPanelBackend:`panel.backend —— 面板可驱动有副作用的后端业务操作`,pluginCapabilityInputResolver:`input.resolver —— 在提交时展开 @ 引用,把内容注入 prompt`,pluginCapabilityA2uiRenderer:`a2ui.renderer —— 运行自定义代码,跨 TUI 与 web-ui 渲染消息`,pluginTrustConfirmHint:`仅信任你已审阅过源码的插件。`,pluginTrustConfirmAction:`信任`,scopeGlobal:`全局`,scopeProject:`项目`,scopeRepository:`仓库`,commonCancel:`取消`,commonClose:`关闭`,unknownLabel:`(未知)`,titleInstall:`安装`,titleDryRun:`预演`,titleUninstall:`卸载`,installUsage:`用法:/install [--global] [--here] [--force] [--dry-run] [--as plugin|skill|mcp] <source>
45
+ /delegates 面板查看进度`,delegateFailed:`委派失败:{{err}}`,extEnableLabel:`启用`,extDisableLabel:`禁用`,extReconnectLabel:`↻ 重新连接`,extReloadLabel:`重载`,extMcpTitle:`{{name}} — 状态 {{status}} · 选操作 · Esc 关`,extItemTitle:`{{name}} — 选操作 · Esc 关`,extPluginGroupTitle:`插件信息`,extPluginLabelDesc:`描述`,extPluginLabelScope:`作用域`,extPluginLabelTrust:`信任`,extPluginLabelSurfaces:`贡献面`,extPluginLabelContributions:`贡献轴`,extPluginLabelStatus:`状态`,extSkillGroupOverview:`概述`,extSkillLabelDesc:`描述`,extSkillLabelStatus:`状态`,extSkillLabelSource:`来源`,extSkillManagedExternally:`由外部管理 — 请直接编辑/删除 {{root}} 目录下的文件(不受 otto 安装引擎跟踪)`,extSkillGroupTrigger:`触发方式`,extSkillLabelTriggerMode:`模式`,extSkillLabelPriority:`优先级`,extSkillGroupDependencies:`依赖`,extSkillLabelDependencies:`依赖 skill`,extSkillGroupTags:`标签`,extSkillLabelTags:`标签`,extSkillGroupError:`错误`,extSkillNoDependencies:`无依赖`,extSkillNoTags:`无标签`,extSkillTriggerAuto:`自动(按描述匹配)`,extSkillTriggerManual:`手动(显式调用)`,extViewFullTextLabel:`查看正文`,extSkillFullTextTitle:`{{name}} — SKILL.md 正文`,extSkillNoBody:`(无正文内容)`,extAgentGroupOverview:`概述`,extAgentLabelDesc:`描述`,extAgentLabelStatus:`状态`,extAgentGroupCapabilities:`任务与能力`,extAgentLabelTaskTypes:`任务类型`,extAgentLabelCapabilities:`能力标签`,extAgentGroupTools:`工具权限`,extAgentLabelDefaultTools:`默认工具白名单`,extAgentLabelDisallowedTools:`禁用工具黑名单`,extAgentGroupExecution:`执行配置`,extAgentLabelPromptMode:`提示词注入模式`,extAgentLabelModelTier:`偏好模型层级`,extAgentLabelAllowSubagents:`允许子代理委托`,extAgentNoTaskTypes:`未声明`,extAgentNoCapabilities:`未声明`,extAgentAllTools:`继承全部(未限制)`,extAgentNoDisallowedTools:`无`,extAgentFullTextTitle:`{{name}} — 系统提示词模板`,extPluginTrustLabel:`信任可执行面`,extPluginUntrustLabel:`撤销信任`,extPluginOpenPanelLabel:`{{title}}`,extPluginTrusted:`已信任`,extPluginUntrusted:`未信任(项目级——可执行面被门控)`,extPluginNoSurface:`无可执行面(永远受信任)`,extPluginCapabilityPending:`已信任 · 高危能力待授权({{caps}})`,extToggleFailed:`切换失败:{{err}}`,extToggleReloadFailed:`已{{verb}} {{name}},但刷新能力失败:{{err}}(状态已保存,可重试刷新)`,extReconnectUnavailable:`无法重连 {{id}}(未配置或 MCP 未就绪)`,extReconnected:`已重连 {{id}}`,extReconnectFailed:`重连 {{id}} 失败:{{err}}`,extLogSectionTitle:`最近日志`,extNoLogs:`暂无日志`,extRefreshHint:`r 刷新`,errorRetryPluginSource:`来自插件: {{pluginId}}`,pluginNotFound:`未找到插件 "{{id}}"(在 <.otto>/plugins/ 下)`,pluginTrusting:`已信任插件 {{id}} 的可执行面,热重载中…`,pluginUntrusted:`已撤销对 {{id}} 的信任(下次发现起跳过其可执行面)`,pluginTrustConfirmTitle:`信任插件 "{{id}}"?`,pluginTrustConfirmIntro:`信任将放行其可执行面——这会运行代码:`,pluginSurfaceMcp:`.mcp.json —— 启动 MCP server 二进制`,pluginSurfaceCommands:`commands/ —— !cmd 展开为 shell 命令`,pluginSurfaceScripts:`postinstall/setup —— 安装/首次加载时执行 shell`,pluginSurfacePanels:`panels —— 在 TUI 进程内运行代码`,pluginSurfaceSkills:`skills/ —— 注入模型可能照做的 prompt 内容`,pluginSurfaceAgents:`agents/ —— 注入 agent profile(默认继承全部工具)`,pluginCapabilityIntro:`该插件申请以下高危能力:`,pluginCapabilityProvider:`provider —— 注册 LLM provider,将处理你的凭据与请求流量`,pluginCapabilityTools:`tools —— 注册可被 agent 调用的工具`,pluginCapabilityTuiRenderer:`tui.renderer —— 在 TUI 进程内运行自定义渲染代码`,pluginCapabilityNetwork:`network —— 发起任意网络请求`,pluginCapabilityWireProtocol:`wire-protocol —— 截获全部 provider 请求/响应流量(含凭据)`,pluginCapabilityA2uiComponent:`a2ui.component —— 在 TUI 进程内运行自定义渲染组件代码`,pluginCapabilityPanelBackend:`panel.backend —— 面板可驱动有副作用的后端业务操作`,pluginCapabilityInputResolver:`input.resolver —— 在提交时展开 @ 引用,把内容注入 prompt`,pluginCapabilityA2uiRenderer:`a2ui.renderer —— 运行自定义代码,跨 TUI 与 web-ui 渲染消息`,pluginTrustConfirmHint:`仅信任你已审阅过源码的插件。`,pluginTrustConfirmAction:`信任`,scopeGlobal:`全局`,scopeProject:`项目`,scopeRepository:`仓库`,commonCancel:`取消`,commonClose:`关闭`,unknownLabel:`(未知)`,titleInstall:`安装`,titleDryRun:`预演`,titleUninstall:`卸载`,installUsage:`用法:/install [--global] [--here] [--force] [--dry-run] [--as plugin|skill|mcp] <source>
46
46
  source 本地 .zip/.tar.gz 路径、HTTP URL、git 地址 或 npm 包名
47
47
  --global 安装到用户级 ~/.otto/(默认项目级 .otto/)
48
48
  --here 安装到当前目录 .otto/(绕过向上查找的工作区根;与 --global 互斥)
@@ -73,4 +73,4 @@ A crash report has been recorded.`,stepNameProvider:`Provider`,stepNameLogin:`Lo
73
73
  otto 将在此读取、编辑、执行文件。不确定就先查看此目录,或以只读方式打开。`,optTrust:`信任 — 完整访问(读 / 改 / 执行 + 应用其配置)`,optReadonly:`只读这一会话 — 安全查看,禁写 / 执行 / 联网`,optExit:`否,退出`},parent:{title:`检测到父级 workspace`,body:`当前目录 {{currentRoot}} 没有 workspace 身份,
74
74
  但上级目录 {{parentRoot}} 已有 workspace。`,optUseParent:`使用上级 workspace — 共享会话与记忆`,optCreateNew:`在当前目录创建新 workspace — 独立身份`,optExit:`退出`},notif:{title:`通知`,readDivider:`──── 已读 ────`},confirm:{reset:`确认重置`,replace:`确认替换`,abortConfirmTitle:`中止 Agent?`,abortConfirmMessage:`Agent 正在运行中。中止后当前回合将丢失,未完成的写入操作可能不完整。`,exitConfirmTitle:`终止并退出 otto?`,exitConfirmMessage:`Agent 正在运行中。退出将中止当前回合,未完成的写入操作可能不完整。`,exitRestartConfirmTitle:`终止并重启 otto?`},cache:{sessionLabel:`会话`,lastTurnLabel:`最近一轮`},recovery:{titleProvider:`尚未安装 AI provider`,hintProvider:`otto 需要一个 provider 才能连接模型。`,ctaProvider:`运行 /setup 安装`,titleAuth:`已安装 provider,尚未连接`,hintAuth:`登录或粘贴 API key 即可继续。`,ctaAuth:`运行 /setup 连接`,titleModel:`尚无可用模型`,hintModel:`凭据可能缺失或已过期。`,ctaModel:`运行 /setup 选择模型`},setup:{wizardApiKeyPlaceholder:`输入或粘贴密钥,按 Enter 确认`,title:`设置向导`,welcomeTitle:`欢迎使用 otto,你的 AI 伙伴`,welcomeGreeting:``,welcomeDescription:`本向导将通过 4 个步骤帮你完成初始设置:选择 AI 服务商、登录、选择模型,然后开始对话。`,welcomeDontShowAgain:`不再显示此向导`,welcomeStart:`开始`,welcomeCancel:`取消`,step1Subtitle:`otto 需要至少一个 AI provider 才能工作。选择一个安装——稍后可以通过 /extension 添加更多。`,step3Subtitle:`选择 provider 的认证方式。`,step4Subtitle:`选择一个模型开始对话。`,step5Done:`一切就绪!输入消息即可开始。`,installing:`安装中…`,installed:`已安装!`,installFailed:`安装失败:{{reason}}`,loginOAuth:`通过 OAuth 登录(推荐)`,loginApiKey:`粘贴 API key`,loggingIn:`登录中…`,loginFailed:`登录失败:{{reason}}`,exitTitle:`退出向导`,exitConfirm:`退出设置向导?进度将被保存 — 稍后可用 /setup 继续。`,errorTitle:`设置出错`,errorMessage:`设置步骤 {{step}} 失败:{{msg}}
75
75
  已记录崩溃报告。`,stepNameProvider:`LLM 服务商`,stepNameLogin:`登录`,stepNameModel:`模型`,stepNameStart:`开始`,actionInstall:`安装`,actionLogin:`登录`,installingProvider:`正在安装 {{provider}}…`,installedProvider:`已安装 {{provider}}`,installPendingCapabilities:`已安装,但部分能力尚未授权——请运行 /extension 授予,否则该 provider 不会提供任何模型。`,modelRecommendedTag:`推荐`,modelRecommendedHint:`已把推荐项排在最前——随时可用 /model 更换。`,modelUnusableUnauthenticated:`需要先登录`,modelUnusableOauthRisk:`订阅方案可能被限流`,authFailedNetwork:`无法连接授权服务,可能是网络或代理问题。`,authFailedRejected:`授权未完成。`,actionOpenProxySettings:`打开代理设置`,actionRetryAuth:`重新登录`,oauthWaiting:`等待浏览器中完成授权…`,actionOpenAgain:`重新打开授权页`,actionUseApiKeyInstead:`改用 API key`,apiKeyStorageNote:`保存在本机凭据文件中——不会写入当前项目,也不会进入聊天记录。`,installFailedRecovery:`{{provider}} 安装失败。选择下一步:`,actionRetryInstall:`重试安装`,actionChooseAnotherProvider:`换一个 provider`,capabilityGranted:`已授予能力:{{caps}}`,capabilityRevokeHint:`可随时在 /extension 中撤销。`},install:{title:`正在安装 {{source}}`,phaseResolving:`解析来源…`,phaseDetecting:`检测内容…`,phaseInstalling:`安装中…`,phaseRefreshing:`刷新能力…`,reloadingDetail:`正在刷新能力…`,done:`已安装`,summaryFailed:`安装失败`,summaryPartial:`部分安装成功`,nextStepForce:`提示:加 --force 可覆盖已存在的内容`,nextStepReload:`提示:执行 /reload 手动刷新能力`,failureOverflow:`(完整列表见下方消息)`,partialCounts:`{{ok}} 个成功,{{fail}} 个失败:`},proxy:{title:`Proxy`,groupConfig:`配置`,groupAbout:`说明`,fieldUrl:`代理地址`,fieldEnabled:`启用状态`,dialogSetUrl:`设置代理地址`,dialogEditUrl:`编辑代理地址`,urlPlaceholder:`http://127.0.0.1:7890`,urlEmpty:`尚未设置 — 例如 http://127.0.0.1:7890`,stateEnabled:`已启用`,stateDisabled:`已停用`,actionClear:`清除配置`,clearTitle:`清除代理配置`,clearMessage:`确认清除代理配置?({{url}})`,clearConfirm:`清除`,aboutScope:`作用于所有出站 HTTP:模型 API、登录、网页抓取、版本检查。`,aboutLoopback:`本机地址(localhost / 127.0.0.1)始终直连。`,aboutStorage:`配置存储在 {{path}}`,aboutCommand:`命令行等效:/proxy [<url>|on|off|status|clear]`,actionTest:`测试连接`,actionAdoptEnv:`采用系统代理 {{value}}(来自 {{source}})`,probeProbing:`测试中…`,probeOk:`代理可达 — {{latency}}ms({{target}})`,probeFailedProxy:`代理不可达 — {{reason}}`,probeFailedTarget:`代理正常,但目标不可达 — {{reason}}`,probeNoModel:`请先配置模型,再测试连接`,effectiveMismatch:`当前生效:{{effective}} — 需重启会话使变更生效`,effectiveNotApplied:`尚未生效 — 需重启会话使变更生效`,envDetectedToast:`检测到 {{source}}={{value}} — 运行 /proxy 可一键采用`},crashGap:{toastTitle:`检测到上次异常退出丢失了部分对话`,toastBody:`上次进程异常终止(如内存耗尽或被强制结束)时,约 {{lostTurns}} 个回合的消息未能保存,已无法恢复。较早的对话已完整保留。`},signalBar:{tabHint:`Tab 切换`,clipboard:`剪贴板`,clipboardFailed:`复制受限 — 按住 {{modifier}} 拖拽用终端原生复制`},clipboard:{paneTitle:`剪贴板`,viewerTitle:`剪贴板内容`,charsLabel:`{{count}} 个字符`,empty:`暂无复制内容`,openHint:`查看`},mouse:{toggleTitle:`鼠标`,enabledBody:`已开启 — 拖拽即选择并复制;按住 {{modifier}} 可用终端原生选择;滚轮可滚动`,disabledBody:`已关闭 — 恢复终端原生选择,滚轮失效(可用 Alt+↑/↓ 回看)`}}}};function r(r){return e.isInitialized?e.changeLanguage(r):e.use(t).init({lng:r,fallbackLng:`en`,resources:n,defaultNS:`translation`,interpolation:{escapeValue:!1},returnNull:!1,returnEmptyString:!1}),e}r(`en`);const i=e.t.bind(e);function a(){let e=process.env.LC_ALL||process.env.LC_MESSAGES||process.env.LANG||``;return/zh/i.test(e)?`zh`:`en`}export{i,e as n,r,a as t};
76
- //# sourceMappingURL=i18n-BREWHEWk.js.map
76
+ //# sourceMappingURL=i18n-C2MZcG8O.js.map