{
	"cli.errors.bunVersion": "error: Bun runtime must be >= {minVersion} (found v{currentVersion}). Please update Bun: bun upgrade",
	"cli.errors.bunErrata": "error: Bun runtime errata detected (v{version}). Please update Bun: bun upgrade",

	"agents.errors.bothFlags": "Choose either --user or --project, not both.",
	"agents.status.bundledCount": "Bundled agents: {total}",
	"agents.status.targetDirectory": "Target directory: {dir}",
	"agents.warnings.skippedExisting": "Skipped existing: {count} (use --force to overwrite)",

	"config.errors.unknownCommand": "Unknown config command: {action}",
	"config.errors.invalidBoolean": "Invalid boolean value: {value}. Use true/false, yes/no, on/off, or 1/0",
	"config.errors.invalidNumber": "Invalid number: {value}",
	"config.errors.invalidEnumValue": "Invalid value: {value}. Valid values: {validValues}",
	"config.errors.invalidArrayJson": "Invalid array JSON: {value}",
	"config.errors.invalidRecordJson": "Invalid record JSON: {value}",
	"config.help.listKeys": "Run '{appName} config list' to see available keys",
	"config.errors.unknownSetting": "Unknown setting: {key}",
	"config.status.valueSet": "Set {path} = {value}",
	"config.status.valueReset": "Reset {path} to {value}",

	"file.errors.notFound": "Error: File not found: {path}",
	"file.warnings.tooLarge": "Warning: Skipping file contents (too large: {size}): {path}",
	"file.errors.readFailed": "Error: Could not read file {path}: {message}",

	"grep.errors.patternRequired": "Error: Pattern is required",
	"grep.results.totalMatches": "Total matches: {count}",
	"grep.results.filesWithMatches": "Files with matches: {count}",
	"grep.results.filesSearched": "Files searched: {count}",

	"read.errors.fileNotFound": "Error: File not found: {path}",

	"setup.errors.usage": "Usage: {appName} setup <component>",
	"setup.python.errors.notFound": "Python not found",
	"setup.python.help.installPython": "Install Python 3.8+ and ensure it's in your PATH",
	"setup.python.status.ready": "Python execution is ready",
	"setup.python.warnings.missingPackages": "Missing: {packages}",
	"setup.python.errors.noPackageManager": "No package manager found",
	"setup.python.help.installManagers": "Install uv (recommended) or pip:",
	"setup.python.errors.installationFailed": "Installation failed",
	"setup.python.help.manualInstall": "Try installing manually:",
	"setup.python.errors.setupIncomplete": "Setup incomplete",
	"setup.stt.status.ready": "Speech-to-text is ready",
	"setup.stt.errors.pythonNotFound": "Python not found",
	"setup.stt.status.installingWhisper": "Installing openai-whisper...",
	"setup.stt.errors.whisperFailed": "Failed to install openai-whisper",
	"setup.stt.help.manualWhisper": "Try manually: pip install openai-whisper",
	"setup.help.title": "setup - Install dependencies for optional features",
	"setup.help.pythonDescription": "Install Jupyter kernel dependencies for Python code execution",
	"setup.help.sttDescription": "Install speech-to-text dependencies (openai-whisper, recording tools)",
	"setup.litellm.errors.envNotSet": "Required environment variables not set:",
	"setup.litellm.errors.baseUrlHint": "LITELLM_BASE_URL — LiteLLM proxy URL (e.g. https://your-proxy.example.com)",
	"setup.litellm.errors.apiKeyHint": "LITELLM_API_KEY  — API key for the LiteLLM proxy",
	"setup.litellm.help.setEnvVars": "Set these in your shell profile (.zshrc, .bashrc) or a .env file.",
	"setup.litellm.status.generated": "LiteLLM configuration generated",
	"setup.litellm.errors.generationFailed": "Failed to generate LiteLLM configuration",

	"ssh.errors.hostRequired": "Error: Host name required",
	"ssh.errors.hostFlagRequired": "Error: --host is required",
	"ssh.errors.invalidPort": "Error: Port must be an integer between 1 and 65535",
	"ssh.status.hostAdded": "Added SSH host \"{name}\" to {scope} config",
	"ssh.status.hostRemoved": "Removed SSH host \"{name}\" from {scope} config",

	"ssh.controller.unknownSubcommand": "Unknown subcommand: {subcommand}. Type /ssh help for usage.",

	"ssh.add.usage": "Usage: /ssh add <name> --host <host> [--user <user>] [--port <port>] [--key <keyPath>] [--desc <description>] [--compat] [--scope project|user]",
	"ssh.add.missingHost": "Missing value for --host.",
	"ssh.add.missingUser": "Missing value for --user.",
	"ssh.add.missingPort": "Missing value for --port.",
	"ssh.add.invalidPort": "Invalid --port value. Must be an integer between 1 and 65535.",
	"ssh.add.missingKey": "Missing value for --key.",
	"ssh.add.missingDesc": "Missing value for --desc.",
	"ssh.add.invalidScope": "Invalid --scope value. Use project or user.",
	"ssh.add.unknownOption": "Unknown option: {option}",
	"ssh.add.nameRequired": "Host name required. Usage: /ssh add <name> --host <host> ...",
	"ssh.add.hostRequired": "--host is required. Usage: /ssh add <name> --host <host> ...",
	"ssh.add.failed": "Failed to add host: {message}",

	"ssh.list.noneConfigured": "No SSH hosts configured.",
	"ssh.list.title": "Configured SSH Hosts",
	"ssh.list.userLevel": "User level",
	"ssh.list.projectLevel": "Project level",
	"ssh.list.discovered": "Discovered",
	"ssh.list.readOnly": "read-only",
	"ssh.list.failed": "Failed to list hosts: {message}",

	"ssh.remove.invalidScope": "Invalid --scope value. Use project or user.",
	"ssh.remove.unknownOption": "Unknown option: {option}",
	"ssh.remove.nameRequired": "Host name required. Usage: /ssh remove <name> [--scope project|user]",
	"ssh.remove.notFound": "Host \"{name}\" not found in {scope} config.",
	"ssh.remove.failed": "Failed to remove host: {message}",

	"mode.plan.status.enabled": "Plan mode enabled. Plan file: {path}",
	"mode.plan.status.paused": "Plan mode paused.",
	"mode.plan.status.disabled": "Plan mode disabled.",
	"mode.plan.errors.noEditor": "No editor configured. Set $VISUAL or $EDITOR environment variable.",
	"mode.plan.errors.fileNotFound": "Plan file not found at {path}",
	"mode.plan.errors.editorOpenFailed": "Failed to open external editor: {message}",
	"mode.plan.status.updated": "Plan updated in external editor.",
	"mode.plan.errors.notActive": "Plan mode is not active.",

	"mode.stt.warnings.disabled": "Speech-to-text is disabled. Enable it in settings: stt.enabled",
	"mode.subagent.status.noActive": "No active subagent sessions",

	"ui.status.sessionCompacted": "Session compacted {times}",
	"ui.status.messageQueued": "Queued message for after compaction",
	"ui.errors.queuedMessageFailed": "Failed to send queued message: {message}",

	"shell.errors.ttyRequired": "Error: shell console requires an interactive TTY.",

	"search.errors.queryRequired": "Error: Query is required",

	"commands.settings.description": "Open settings menu",
	"commands.plan.description": "Toggle plan mode (agent plans before executing)",
	"commands.plan.inlineHint": "[prompt]",
	"commands.model.description": "Select model (opens selector UI)",
	"commands.fast.description": "Toggle fast mode (OpenAI service tier priority)",
	"commands.fast.sub.on.description": "Enable fast mode",
	"commands.fast.sub.off.description": "Disable fast mode",
	"commands.fast.sub.status.description": "Show fast mode status",
	"commands.fast.enabled": "Fast mode enabled.",
	"commands.fast.disabled": "Fast mode disabled.",
	"commands.fast.statusOn": "Fast mode is on.",
	"commands.fast.statusOff": "Fast mode is off.",
	"commands.fast.usage": "Usage: /fast [on|off|status]",
	"commands.export.description": "Export session to HTML file",
	"commands.export.inlineHint": "[path]",
	"commands.dump.description": "Copy session transcript to clipboard",
	"commands.share.description": "Share session as a secret GitHub gist",
	"commands.browser.description": "Toggle browser headless vs visible mode",
	"commands.browser.sub.headless.description": "Switch to headless mode",
	"commands.browser.sub.visible.description": "Switch to visible mode",
	"commands.browser.disabled": "Browser tool is disabled (enable in settings)",
	"commands.browser.usage": "Usage: /browser [headless|visible]",
	"commands.browser.modeHeadless": "Browser mode: headless",
	"commands.browser.modeVisible": "Browser mode: visible",
	"commands.browser.restartFailed": "Failed to restart browser: {message}",
	"commands.chrome.description": "Inspect or arrange the Chrome session xcsh drives for console automation",
	"commands.chrome.sub.status.description": "Show Chrome attach/launch status and the planned action",
	"commands.chrome.sub.relaunch.description": "Relaunch your real Chrome with a loopback debug port (consent granted)",
	"commands.copy.description": "Copy last agent message to clipboard",
	"commands.copy.sub.last.description": "Copy full last agent message",
	"commands.copy.sub.code.description": "Copy last code block",
	"commands.copy.sub.all.description": "Copy all code blocks from last message",
	"commands.copy.sub.cmd.description": "Copy last bash/python command",
	"commands.session.description": "Session management commands",
	"commands.session.sub.info.description": "Show session info and stats",
	"commands.session.sub.delete.description": "Delete current session and return to selector",
	"commands.jobs.description": "Show async background jobs status",
	"commands.usage.description": "Show provider usage and limits",
	"commands.changelog.description": "Show changelog entries",
	"commands.changelog.sub.full.description": "Show complete changelog",
	"commands.hotkeys.description": "Show all keyboard shortcuts",
	"commands.tools.description": "Show tools currently visible to the agent",
	"commands.extensions.description": "Open Extension Control Center dashboard",
	"commands.agents.description": "Open Agent Control Center dashboard",
	"commands.branch.description": "Create a new branch from a previous message",
	"commands.fork.description": "Create a new fork from a previous message",
	"commands.tree.description": "Navigate session tree (switch branches)",
	"commands.login.description": "Login with OAuth provider",
	"commands.login.inlineHint": "[provider|redirect URL]",
	"commands.login.alreadyInProgressFor": "OAuth login already in progress for {provider}. Paste the redirect URL with /login <url>.",
	"commands.login.alreadyInProgress": "OAuth login already in progress. Paste the redirect URL with /login <url>.",
	"commands.login.callbackReceived": "OAuth callback received; completing login…",
	"commands.login.noCallbackWaiting": "No OAuth login is waiting for a manual callback.",
	"commands.logout.description": "Logout from OAuth provider",
	"commands.mcp.description": "Manage MCP servers (add, list, remove, test)",
	"commands.mcp.sub.add.description": "Add a new MCP server",
	"commands.mcp.sub.list.description": "List all configured MCP servers",
	"commands.mcp.sub.remove.description": "Remove an MCP server",
	"commands.mcp.sub.test.description": "Test connection to a server",
	"commands.mcp.sub.reauth.description": "Reauthorize OAuth for a server",
	"commands.mcp.sub.unauth.description": "Remove OAuth auth from a server",
	"commands.mcp.sub.enable.description": "Enable an MCP server",
	"commands.mcp.sub.disable.description": "Disable an MCP server",
	"commands.mcp.sub.smitherySearch.description": "Search Smithery registry and deploy an MCP server",
	"commands.mcp.sub.smitheryLogin.description": "Login to Smithery and cache API key",
	"commands.mcp.sub.smitheryLogout.description": "Remove cached Smithery API key",
	"commands.mcp.sub.reconnect.description": "Reconnect to a specific MCP server",
	"commands.mcp.sub.reload.description": "Force reload MCP runtime tools",
	"commands.mcp.sub.resources.description": "List available resources from connected servers",
	"commands.mcp.sub.prompts.description": "List available prompts from connected servers",
	"commands.mcp.sub.notifications.description": "Show notification capabilities and subscriptions",
	"commands.mcp.sub.help.description": "Show help message",
	"commands.ssh.description": "Manage SSH hosts (add, list, remove)",
	"commands.ssh.sub.add.description": "Add an SSH host",
	"commands.ssh.sub.list.description": "List all configured SSH hosts",
	"commands.ssh.sub.remove.description": "Remove an SSH host",
	"commands.ssh.sub.help.description": "Show help message",
	"commands.new.description": "Start a new session",
	"commands.compact.description": "Manually compact the session context",
	"commands.compact.inlineHint": "[focus instructions]",
	"commands.handoff.description": "Hand off session context to a new session",
	"commands.handoff.inlineHint": "[focus instructions]",
	"commands.resume.description": "Resume a different session",
	"commands.btw.description": "Ask an ephemeral side question using the current session context",
	"commands.btw.inlineHint": "<question>",
	"commands.background.description": "Detach UI and continue running in background",
	"commands.debug.description": "Open debug tools selector",
	"commands.memory.description": "Inspect and operate memory maintenance",
	"commands.memory.sub.view.description": "Show current memory injection payload",
	"commands.memory.sub.clear.description": "Clear persisted memory data and artifacts",
	"commands.memory.sub.reset.description": "Alias for clear",
	"commands.memory.sub.enqueue.description": "Enqueue memory consolidation maintenance",
	"commands.memory.sub.rebuild.description": "Alias for enqueue",
	"commands.rename.description": "Rename the current session",
	"commands.rename.inlineHint": "<title>",
	"commands.rename.usage": "Usage: /rename <title>",
	"commands.move.description": "Move session to a different working directory",
	"commands.move.inlineHint": "<path>",
	"commands.move.usage": "Usage: /move <path>",
	"commands.exit.description": "Exit the application",
	"commands.plugin.description": "Manage plugins and marketplace sources",
	"commands.plugin.sub.marketplace.description": "Manage marketplace sources (add, remove, update, list)",
	"commands.plugin.sub.install.description": "Install a plugin",
	"commands.plugin.sub.uninstall.description": "Uninstall a plugin",
	"commands.plugin.sub.enable.description": "Enable a plugin",
	"commands.plugin.sub.disable.description": "Disable a plugin",
	"commands.plugin.sub.upgrade.description": "Upgrade plugins",
	"commands.plugin.sub.discover.description": "Browse available plugins",
	"commands.plugin.sub.list.description": "List all installed plugins",
	"commands.plugin.sub.validate.description": "Validate marketplace or plugin manifest",
	"commands.plugin.sub.setup.description": "Guided setup for recommended plugins",
	"commands.plugin.sub.help.description": "Show usage guide",
	"commands.plugin.marketplace.addUsage": "Usage: /plugin marketplace add <source>",
	"commands.plugin.marketplace.added": "Added marketplace: {name}",
	"commands.plugin.marketplace.removeUsage": "Usage: /plugin marketplace remove <name>",
	"commands.plugin.marketplace.removed": "Removed marketplace: {name}",
	"commands.plugin.marketplace.updated": "Updated marketplace: {name}",
	"commands.plugin.marketplace.updatedAll": "Updated {count} marketplace(s)",
	"commands.plugin.marketplace.noneConfiguredGetStarted": "No marketplaces configured.\n\nGet started:\n  /plugin marketplace add f5-sales-demo/marketplace",
	"commands.plugin.marketplace.listHint": "Use /plugin discover to browse plugins",
	"commands.plugin.marketplace.noneConfiguredTry": "No marketplaces configured. Try:\n  /plugin marketplace add f5-sales-demo/marketplace",
	"commands.plugin.marketplace.noPluginsAvailable": "No plugins available in configured marketplaces",
	"commands.plugin.installed": "Installed {name} from {marketplace}",
	"commands.plugin.uninstalled": "Uninstalled {pluginId}",
	"commands.plugin.enabled": "Enabled {pluginId}",
	"commands.plugin.disabled": "Disabled {pluginId}",
	"commands.plugin.upgraded": "Upgraded {pluginId} to {version}",
	"commands.plugin.allUpToDate": "All plugins are up to date",
	"commands.plugin.upgradedCount": "Upgraded {count} plugin(s):",
	"commands.plugin.npmPlugins": "npm plugins:",
	"commands.plugin.marketplacePlugins": "marketplace plugins:",
	"commands.plugin.noneInstalled": "No plugins installed",
	"commands.plugin.validate.marketplaceValid": "Marketplace \"{name}\" is valid ({count} plugin(s))",
	"commands.plugin.validate.pluginValid": "Plugin \"{name}\" manifest is valid",
	"commands.plugin.validate.notFound": "No .xcsh-plugin/marketplace.json or .xcsh-plugin/plugin.json found at {path}",
	"commands.plugin.setup.noRecommended": "No recommended plugins found in configured marketplaces",
	"commands.plugin.setup.allInstalled": "All recommended plugins are already installed",
	"commands.plugin.setup.title": "Recommended plugins setup:",
	"commands.plugin.setup.installCount": "Installed {installed}/{total} recommended plugin(s)",
	"commands.plugin.setup.skippedCount": "{count} skipped — fix issues above and run /plugin setup again (idempotent)",
	"commands.plugin.setup.installFailed": "install failed",
	"commands.plugin.setup.installed": "installed",
	"commands.plugin.setup.notAuthenticated": "not authenticated",
	"commands.plugin.setup.authenticatedAs": "authenticated as {user}",
	"commands.plugin.setup.ready": "ready",
	"commands.plugin.setup.pluginInstalled": "plugin installed",
	"commands.plugin.setup.pluginInstallFailed": "plugin install failed: {message}",
	"commands.plugin.setup.notFoundInMarketplace": "not found in any marketplace",
	"commands.plugin.help": "Plugin commands:\n  /plugin                                    Open plugin dashboard\n  /plugin marketplace add <source>           Add a marketplace (e.g. owner/repo)\n  /plugin marketplace remove <name>          Remove a marketplace\n  /plugin marketplace update [name]          Re-fetch catalog(s)\n  /plugin marketplace list                   List configured marketplaces\n  /plugin discover [marketplace]             Browse available plugins\n  /plugin install <name@marketplace>         Install a plugin\n  /plugin uninstall <name@marketplace>       Uninstall a plugin\n  /plugin enable <name@marketplace>          Enable a plugin\n  /plugin disable <name@marketplace>         Disable a plugin\n  /plugin upgrade [name@marketplace]         Upgrade plugin(s)\n  /plugin list                               List installed plugins\n  /plugin validate [path]                    Validate marketplace or plugin\n  /plugin setup                              Guided setup for recommended plugins\n\nQuick start:\n  /plugin marketplace add f5-sales-demo/marketplace\n  /plugin                                    (opens plugin dashboard)\n\nAliases: /marketplace, /plugins",
	"commands.plugin.marketplace.noneConfiguredBrowse": "No marketplaces configured.\n\nGet started:\n  /plugin marketplace add f5-sales-demo/marketplace\n\nThen browse plugins with /plugin or /plugin discover",
	"commands.plugin.marketplace.listHintAll": "Use /plugin discover to browse plugins, or /plugin help for all commands",
	"commands.plugin.error": "Plugin error: {message}",
	"commands.reloadPlugins.description": "Reload all plugins (skills, commands, hooks, tools, agents, MCP)",
	"commands.reloadPlugins.done": "Plugins reloaded.",
	"commands.force.description": "Force next turn to use a specific tool",
	"commands.force.inlineHint": "<tool-name> [prompt]",
	"commands.force.usage": "Usage: /force:<tool-name> [prompt]",
	"commands.force.set": "Next turn forced to use {toolName}.",
	"commands.quit.description": "Quit the application",
	"commands.context.description": "Manage F5 XC authentication contexts",
	"commands.context.sub.list.description": "List all contexts",
	"commands.context.sub.activate.description": "Switch to a named context",
	"commands.context.sub.validate.description": "Validate credentials for a context without activating",
	"commands.context.sub.show.description": "Show context details (masked)",
	"commands.context.sub.status.description": "Show current auth status",
	"commands.context.sub.create.description": "Create a new context",
	"commands.context.sub.delete.description": "Delete a context",
	"commands.context.sub.rename.description": "Rename a context",
	"commands.context.sub.export.description": "Export a context (or all contexts) as JSON",
	"commands.context.sub.import.description": "Import contexts from a file path or inline JSON",
	"commands.context.sub.namespace.description": "Switch namespace within active context",
	"commands.context.sub.env.description": "Manage environment variables",
	"commands.context.sub.set.description": "Set environment variable(s)",
	"commands.context.sub.unset.description": "Remove environment variable(s)",
	"commands.context.sub.wizard.description": "Guided interactive context setup",

	"welcome.modelProvider": "Model Provider",
	"welcome.plugins": "Plugins",
	"welcome.pluginSetupHint": "run: /plugin setup",
	"welcome.updateHint": "run: xcsh update",
	"welcome.newVersion": "new version",
	"welcome.connectionFailed": "— connection failed",
	"welcome.runLoginReconnect": "Run /login to reconnect",
	"welcome.noModelProvider": "No model provider configured",
	"welcome.runLoginConnect": "Run /login to connect",
	"login.wizard.urlPrompt": "Model Provider URL",
	"login.wizard.urlPlaceholder": "https://your-proxy.example.com",
	"login.wizard.apiKeyPrompt": "API Key",
	"login.wizard.apiKeyPlaceholder": "sk-...",
	"login.wizard.connecting": "Connecting to {url}…",
	"login.wizard.success": "Connected — {count} models available",
	"login.wizard.configSaved": "Configuration saved. You're ready to go!",
	"login.wizard.failed": "Connection failed — {error}",
	"login.wizard.retryHint": "Press Escape to skip, or enter a new value:",
	"gate.noProvider": "No LLM provider configured — run /login to connect one before sending a message.",
	"gate.noProviderBlock": "No LLM provider configured. Run /login to connect one, then retry. (/help and /model still work.)",

	"plugins.tabs.installed": "Installed",
	"plugins.tabs.recommended": "Recommended",
	"plugins.tabs.discover": "Discover",
	"plugins.tabs.updates": "Updates",
	"plugins.list.searchPlaceholder": "type to filter",
	"plugins.list.emptyDiscover": "No plugins available. Add a marketplace first.",
	"plugins.list.emptyRecommended": "All recommended plugins are installed.",
	"plugins.list.emptyUpdates": "All plugins are up to date.",
	"plugins.list.emptyInstalled": "No plugins installed.",
	"plugins.list.shadowed": "shadowed",
	"plugins.list.disabled": "disabled",
	"plugins.dashboard.title": "xcsh Plugin Center",
	"plugins.dashboard.helpRecommended": "↑/↓: navigate  Enter: install  A: install all  Tab: next tab  Ctrl+R: reload  Esc: close",
	"plugins.dashboard.helpDiscover": "↑/↓: navigate  Enter: install  Tab: next tab  Ctrl+R: reload  Esc: close",
	"plugins.dashboard.helpUpdates": "↑/↓: navigate  Enter: upgrade  Tab: next tab  Ctrl+R: reload  Esc: close",
	"plugins.dashboard.helpInstalled": "↑/↓: navigate  Space: toggle  Enter: uninstall  U: upgrade  Tab: next tab  Ctrl+R: reload  Esc: close",
	"plugins.dashboard.settingUp": "Setting up {name}... ({current}/{total})",
	"plugins.dashboard.installCount": "Installed {installed}/{total} recommended plugin(s)",
	"plugins.dashboard.allRecommendedInstalled": "All recommended plugins are already installed",
	"plugins.dashboard.failedCount": "{count} failed",
	"plugins.dashboard.authNeeded": "Auth needed: {items}",
	"plugins.dashboard.uninstalled": "Uninstalled {name}",
	"plugins.dashboard.uninstallFailed": "Uninstall failed: {message}",
	"plugins.dashboard.upgraded": "Upgraded {name}",
	"plugins.dashboard.upgradeFailed": "Upgrade failed: {message}",
	"plugins.dashboard.upgrading": "Upgrading {name}...",

	"controller.export.warnings.useDump": "Use /dump to copy the session to clipboard.",
	"controller.export.status.exported": "Session exported to: {path}",
	"controller.export.errors.failed": "Failed to export session: {message}",
	"controller.dump.errors.noMessages": "No messages to dump yet.",
	"controller.dump.status.copied": "Session copied to clipboard",
	"controller.dump.errors.failed": "Failed to copy session: {message}",
	"controller.debug.errors.noMessages": "No messages to dump yet.",
	"controller.debug.status.written": "Debug transcript written to:\n{path}",
	"controller.debug.errors.failed": "Failed to write debug transcript: {message}",
	"controller.copy.errors.unknownSub": "Unknown subcommand: {sub}. Use code, all, cmd, or last.",
	"controller.copy.errors.noMessages": "No agent messages to copy yet.",
	"controller.copy.status.lastMessage": "Copied last agent message to clipboard",
	"controller.copy.warnings.noCodeBlock": "No code block found in the last agent message.",
	"controller.copy.status.codeBlock": "Copied last code block to clipboard",
	"controller.copy.warnings.noCodeBlocks": "No code blocks found in the last agent message.",
	"controller.copy.status.codeBlocks": "Copied {count} code block(s) to clipboard",
	"controller.copy.status.bashCommand": "Copied last bash command to clipboard",
	"controller.copy.status.pythonCode": "Copied last python code to clipboard",
	"controller.copy.warnings.noCommand": "No bash or python command found in the conversation.",
	"controller.session.title": "Session Info",
	"controller.session.file": "File:",
	"controller.session.inMemory": "In-memory",
	"controller.session.id": "ID:",
	"controller.session.provider": "Provider",
	"controller.session.noModel": "No model selected",
	"controller.session.messages": "Messages",
	"controller.session.user": "User:",
	"controller.session.assistant": "Assistant:",
	"controller.session.toolCalls": "Tool Calls:",
	"controller.session.toolResults": "Tool Results:",
	"controller.session.total": "Total:",
	"controller.session.tokens": "Tokens",
	"controller.session.input": "Input:",
	"controller.session.output": "Output:",
	"controller.session.cacheRead": "Cache Read:",
	"controller.session.cacheWrite": "Cache Write:",
	"controller.session.cost": "Cost",
	"controller.session.premiumRequests": "Premium Requests:",
	"controller.session.pythonGateway": "Python Gateway",
	"controller.session.status": "Status:",
	"controller.session.gatewayActive": "Active (Global)",
	"controller.session.gatewayInactive": "Inactive",
	"controller.session.url": "URL:",
	"controller.session.pid": "PID:",
	"controller.session.python": "Python:",
	"controller.session.venv": "Venv:",
	"controller.session.uptime": "Uptime:",
	"controller.session.lspServers": "LSP Servers",
	"controller.session.mcpServers": "MCP Servers",
	"controller.session.noneConnected": "None connected",
	"controller.jobs.title": "Background Jobs",
	"controller.jobs.running": "Running:",
	"controller.jobs.noJobs": "No async jobs yet.",
	"controller.jobs.runningJobs": "Running Jobs",
	"controller.jobs.recentJobs": "Recent Jobs",
	"controller.jobs.unavailable": "Async background jobs are unavailable in this session.",
	"controller.usage.notConfigured": "Usage reporting is not configured for this session.",
	"controller.usage.fetchFailed": "Failed to fetch usage data: {message}",
	"controller.usage.noData": "No usage data available.",
	"controller.changelog.noEntries": "No changelog entries found.",
	"controller.changelog.fullTitle": "Full Changelog",
	"controller.changelog.recentTitle": "Recent Changes",
	"controller.hotkeys.title": "Keyboard Shortcuts",
	"controller.tools.title": "Available Tools",
	"controller.memory.title": "Memory Injection Payload",
	"controller.memory.empty": "Memory payload is empty (memories disabled or no memory summary found).",
	"controller.memory.cleared": "Memory data cleared and system prompt refreshed.",
	"controller.memory.clearFailed": "Memory clear failed: {message}",
	"controller.memory.enqueued": "Memory consolidation enqueued.",
	"controller.memory.enqueueFailed": "Memory enqueue failed: {message}",
	"controller.memory.usage": "Usage: /memory <view|clear|reset|enqueue|rebuild>",
	"controller.newSession": "New session started",
	"controller.fork.streaming": "Wait for the current response to finish or abort it before forking.",
	"controller.fork.failed": "Fork failed (session not persisted or cancelled)",
	"controller.fork.success": "Session forked to {path}",
	"controller.move.streaming": "Wait for the current response to finish or abort it before moving.",
	"controller.move.usage": "Usage: /move <path>",
	"controller.move.notDirectory": "Not a directory: {path}",
	"controller.move.notExists": "Directory does not exist: {path}",
	"controller.move.success": "Session moved to {path}",
	"controller.move.failed": "Move failed: {message}",
	"controller.rename.empty": "Session name cannot be empty.",
	"controller.rename.success": "Session renamed to \"{name}\".",
	"controller.rename.failed": "Rename failed: {message}",
	"controller.share.ghNotLoggedIn": "GitHub CLI is not logged in. Run 'gh auth login' first.",
	"controller.share.ghNotInstalled": "GitHub CLI (gh) is not installed. Install it from https://cli.github.com/",
	"controller.share.creatingGist": "Creating gist...",
	"controller.share.sharing": "Sharing...",
	"controller.share.cancelled": "Share cancelled",
	"controller.share.sessionShared": "Session shared",
	"controller.share.customFailed": "Custom share failed: {message}",
	"controller.share.gistFailed": "Failed to create gist: {message}",
	"controller.share.gistParseFailed": "Failed to parse gist ID from gh output",
	"controller.bash.failed": "Bash command failed: {message}",

	"hotkeys.navigation.title": "Navigation",
	"hotkeys.navigation.moveCursor": "Move cursor / browse history (Up when empty)",
	"hotkeys.navigation.moveByWord": "Move by word",
	"hotkeys.navigation.startOfLine": "Start of line",
	"hotkeys.navigation.endOfLine": "End of line",
	"hotkeys.editing.title": "Editing",
	"hotkeys.editing.sendMessage": "Send message",
	"hotkeys.editing.newLine": "New line",
	"hotkeys.editing.deleteWordBackwards": "Delete word backwards",
	"hotkeys.editing.deleteToStart": "Delete to start of line",
	"hotkeys.editing.deleteToEnd": "Delete to end of line",
	"hotkeys.editing.copyLine": "Copy current line",
	"hotkeys.editing.copyPrompt": "Copy whole prompt",
	"hotkeys.other.title": "Other",
	"hotkeys.other.pathCompletion": "Path completion / accept autocomplete",
	"hotkeys.other.cancelInterrupt": "Cancel autocomplete / interrupt active work",
	"hotkeys.other.clearExit": "Clear editor (first) / exit (second)",
	"hotkeys.other.exit": "Exit (when editor is empty)",
	"hotkeys.other.suspend": "Suspend to background",
	"hotkeys.other.cycleThinking": "Cycle thinking level",
	"hotkeys.other.cycleModelsForward": "Cycle role models (slow/default/smol)",
	"hotkeys.other.cycleModelsBackward": "Cycle role models (temporary)",
	"hotkeys.other.selectModelTemp": "Select model (temporary)",
	"hotkeys.other.selectModel": "Select model (set roles)",
	"hotkeys.other.togglePlan": "Toggle plan mode",
	"hotkeys.other.searchHistory": "Search prompt history",
	"hotkeys.other.toggleToolExpand": "Toggle tool output expansion",
	"hotkeys.other.toggleThinking": "Toggle thinking block visibility",
	"hotkeys.other.externalEditor": "Edit message in external editor",
	"hotkeys.other.pasteImage": "Paste image from clipboard",
	"hotkeys.other.toggleStt": "Toggle speech-to-text recording",
	"hotkeys.other.promptActions": "Open prompt actions",
	"hotkeys.other.slashCommands": "Slash commands",
	"hotkeys.other.runBash": "Run bash command",
	"hotkeys.other.runBashExcluded": "Run bash command (excluded from context)",
	"hotkeys.other.runPython": "Run Python in shared kernel",
	"hotkeys.other.runPythonExcluded": "Run Python (excluded from context)",

	"tools.emptyState": "No tools are currently visible to the agent.",
	"tools.noDescription": "No description provided.",
	"tools.tableHeaderTool": "Tool",
	"tools.tableHeaderDescription": "Description",

	"context.list.noneFound": "No F5 XC contexts found. Use /context create or ask me to help set one up.",
	"context.activate.usage": "Usage: /context activate <name>. Run `/context list` to see available contexts.",
	"context.activate.notFound": "Context '{name}' not found. Run /context list to see available contexts, or /context create {name} <url> <token> to create one.",
	"context.show.noActive": "No active context. Run `/context create <name>` to create one, or `/context activate <name>` if contexts exist.",
	"context.show.notFound": "Context '{name}' not found. Run `/context list` to see available contexts.",
	"context.validate.usage": "Missing context name. Usage: /context validate <name>. For the active context, use /context status.",
	"context.status.notConfigured": "Not configured. Use /context create or ask me to help set one up.",
	"context.create.usage": "Usage: /context create <name> <url> <token> [namespace]",
	"context.create.invalidName": "Context name must be alphanumeric with dashes/underscores, max 64 chars.",
	"context.create.invalidUrl": "API URL must be a valid HTTPS URL (e.g. https://tenant.console.ves.volterra.io)",
	"context.rename.usage": "Usage: /context rename <old> <new>",
	"context.export.usage": "Usage: /context export [name] [--include-token]",
	"context.import.usage": "Usage: /context import <path-or-json> [--overwrite]",
	"context.import.invalidJson": "Import source is not valid JSON: {message}",
	"context.import.fileNotFound": "Import file not found: {path}",
	"context.delete.usage": "Usage: /context delete <name> --confirm",
	"context.delete.cannotDeleteActive": "Cannot delete the active context. Run `/context activate <other>` to switch first.",
	"context.namespace.usage": "Usage: /context namespace <name>\nSwitches the active namespace without changing the context. Default is 'default'.",
	"context.env.unknownAction": "Unknown env action: {action}. Use /context env set|unset|list",
	"context.env.noActive": "No active context. Use /context activate <name> first.",
	"context.env.set.usage": "No KEY=VALUE pairs found. Usage: /context set KEY=VALUE [KEY2=VALUE2 ...]",
	"context.env.unset.usage": "No variable names found. Usage: /context unset KEY [KEY2 ...]",

	"mcp.errors.unknownSubcommand": "Unknown subcommand: {subcommand}. Type /mcp help for usage.",
	"mcp.errors.invalidScope": "Invalid --scope value. Use project or user.",
	"mcp.errors.unknownOption": "Unknown option: {option}",
	"mcp.errors.missingUrl": "Missing value for --url.",
	"mcp.errors.invalidTransport": "Invalid --transport value. Use http or sse.",
	"mcp.errors.missingToken": "Missing value for --token.",
	"mcp.errors.missingLimit": "Missing value for --limit.",
	"mcp.errors.invalidLimit": "Invalid --limit value. Use an integer between 1 and 100.",
	"mcp.errors.serverNotFound": "Server \"{name}\" not found.",
	"mcp.errors.serverNotFoundInScope": "Server \"{name}\" not found in {scope} config.",
	"mcp.errors.noManager": "No MCP manager available.",

	"mcp.action.enable": "enable",
	"mcp.action.disable": "disable",

	"mcp.add.nameRequired": "Server name required for quick add. Usage: /mcp add <name> ...",
	"mcp.add.urlOrCommand": "Use either --url or -- <command...>, not both.",
	"mcp.add.tokenRequiresUrl": "--token requires --url (HTTP/SSE transport).",

	"mcp.remove.usage": "Server name required. Usage: /mcp remove <name> [--scope project|user]",
	"mcp.remove.failed": "Failed to remove server: {message}",

	"mcp.test.usage": "Server name required. Usage: /mcp test <name>",
	"mcp.test.disabled": "Server \"{name}\" is disabled. Run /mcp enable {name} first.",
	"mcp.test.cancelled": "Cancelled MCP test for \"{name}\"",
	"mcp.test.failed": "Failed to connect to \"{name}\": {message}",

	"mcp.enable.usage": "Server name required. Usage: /mcp enable <name>",
	"mcp.disable.usage": "Server name required. Usage: /mcp disable <name>",
	"mcp.setEnabled.failed": "Failed to {action} server: {message}",

	"mcp.unauth.usage": "Server name required. Usage: /mcp unauth <name>",
	"mcp.unauth.failed": "Failed to clear auth: {message}",

	"mcp.reauth.usage": "Server name required. Usage: /mcp reauth <name>",
	"mcp.reauth.disabled": "Server \"{name}\" is disabled. Run /mcp enable {name} first.",
	"mcp.reauth.failed": "Failed to reauthorize server: {message}",

	"mcp.reload.failed": "Failed to reload MCP: {message}",

	"mcp.reconnect.usage": "Server name required. Usage: /mcp reconnect <name>",
	"mcp.reconnect.failed": "Failed to reconnect to \"{name}\". Check server status and logs.",
	"mcp.reconnect.failedWithError": "Failed to reconnect to \"{name}\": {message}",

	"mcp.smithery.searchUsage": "Keyword required. Usage: /mcp smithery-search <keyword> [--scope project|user] [--limit <1-100>] [--semantic]",
	"mcp.smithery.keyEmpty": "Smithery API key cannot be empty.",
	"mcp.smithery.keySaved": "Smithery API key saved.",
	"mcp.smithery.validationFailed": "Smithery API key validation failed: {message}",
	"mcp.smithery.loginCancelled": "Smithery login cancelled.",
	"mcp.smithery.keyRemoved": "Smithery API key removed.",
	"mcp.smithery.noKeyFound": "No cached Smithery API key found.",
	"mcp.smithery.deployCancelled": "MCP deploy cancelled.",
	"mcp.smithery.selectionCancelled": "MCP Smithery selection cancelled.",
	"mcp.smithery.searchFailed": "Smithery search failed: {message}"
}
