{
  "agentSettings": {
    "subtitle": "Defaults for models, workspace, sampling, and how responses are shown.",
    "sectionDesc": "Changes are written to your gateway config file. Some values apply on the next agent turn or session.",
    "needToken": "Save a gateway token to load and change agent defaults.",
    "loadError": "Failed to load settings",
    "save": "Save",
    "discard": "Discard",
    "saving": "Saving…",
    "saved": "Saved",
    "saveError": "Failed to save",
    "routeIntro": {
      "workspace": "Working directory for agent files and limits for inbound images in the image tool.",
      "browser": "Let the agent drive the web via browser_use. Enable tools, pick a connection method, then finish setup below.",
      "runtime": "Per-turn time limits, tool call depth, request retries, and consecutive tool failure caps. Saves to agents.defaults.",
      "context": "Context compaction and tool-result pruning before messages reach the model.",
      "memory": "Memory snapshots, session_search summary model, and optional background review.",
      "tools": "Optional tools (web_extract, delegate_task, execute_code), global built-in tool disables, and extension params JSON. Skill allowlist is under Skills.",
      "skills": "Skills marketplace source (use the section Save button) and default skill allowlist for all agents (use the page header Save). Install skills in the Skills library. Per-tool toggles are under Tools.",
      "systemPrompt": "Optional full replacement for the default system prompt; merges with per-agent entries (entry wins). Saves to agents.defaults.",
      "modelStrategy": "Default chat model, fallback chain, and model roles. Saves to agents.defaults on the gateway.",
      "generation": "Control response length, randomness, thinking level, reasoning visibility, and verbosity."
    },
    "defaultsTabs": {
      "workspace": "Workspace",
      "browser": "Browser",
      "runtime": "Turn limits",
      "context": "Context",
      "memory": "Memory",
      "tools": "Tools",
      "skills": "Skills",
      "system-prompt": "System prompt",
      "model-strategy": "Model strategy",
      "generation": "Generation"
    },
    "defaultsTabsAria": "Agent default configuration sections",
    "browserTabs": {
      "overview": "Overview",
      "extension": "Chrome extension",
      "local": "Local Chromium",
      "cloakbrowser": "CloakBrowser",
      "cdp": "CDP",
      "cloud": "Cloud"
    },
    "browserTabsAria": "Browser settings sections",
    "cardModelsTitle": "Default chat model",
    "cardModelsSubtitle": "Primary model used by new sessions.",
    "cardWorkspaceTitle": "Workspace & attachments",
    "cardWorkspaceSubtitle": "Working directory and inbound media limits",
    "cardBrowserTitle": "Browser automation",
    "cardBrowserSubtitle": "browser_use — navigate, snapshot, click, screenshot, pipelines (Chrome extension, Playwright, CloakBrowser, …)",
    "browserEnabledOn": "Enable browser tools",
    "browserHeadlessOn": "Run headless (no visible window)",
    "browserAllowPrivateOn": "Allow private/internal URLs",
    "browserDialogPolicyMustRespond": "Agent must respond",
    "browserDialogPolicyAutoDismiss": "Auto dismiss",
    "browserDialogPolicyAutoAccept": "Auto accept",
    "browserBackendLocal": "Local (Playwright)",
    "browserBackendCdp": "CDP (Remote)",
    "browserBackendCloud": "Cloud Provider",
    "browserBackendExtension": "Chrome Extension",
    "browserBackendCloakBrowser": "CloakBrowser",
    "browserCloudProviderLocal": "Local (Playwright)",
    "browserCloudProviderBrowserbase": "Browserbase",
    "browserCloudProviderBrowserUse": "Browser Use",
    "browserExtensionConnected": "Connected",
    "browserExtensionDisconnected": "Disconnected",
    "browserExtensionWaiting": "Waiting for connection…",
    "browserExtensionServerOff": "Server not running",
    "browserPlaywrightGuideTitle": "Local Playwright requires Chromium",
    "browserPlaywrightGuideDesc": "When Local (Playwright) is selected, Chromium must be installed on the gateway host. You can install it here or run the install command manually on that machine.",
    "browserPlaywrightInstall": "Install",
    "browserPlaywrightInstalling": "Installing…",
    "browserPlaywrightInstalled": "Chromium installed",
    "browserPlaywrightInstallFailed": "Failed to install Chromium",
    "browserPlaywrightManualInstall": "Manual install command",
    "browserCloakGuideTitle": "Download CloakBrowser before first use",
    "browserCloakGuideDesc": "CloakBrowser provides anti-fingerprint Chromium. After saving, the gateway uses it from this config; you can also run the install command first to download it.",
    "browserCloakDownload": "Download",
    "browserCloakInstalling": "Downloading…",
    "browserCloakInstalled": "CloakBrowser downloaded",
    "browserCloakInstallFailed": "Failed to download CloakBrowser",
    "browserCloakOpen": "Open browser",
    "browserCloakOpening": "Opening…",
    "browserCloakOpenReused": "Connected to running browser · port {{port}}",
    "browserCloakOpenLaunched": "Opened · port {{port}}",
    "browserCloakProfileLabel": "Profile",
    "browserCloakProfileAgentHint": "Uses the profile from saved config — same as agent runtime. Save settings after changing paths or profile options.",
    "browserCloakRuntimeRunning": "Running · port {{port}}",
    "browserCloakRuntimeOff": "Not running",
    "browserCloakTemporaryProfileHint": "Temporary profile enabled — each launch uses a new profile",
    "browserInstallPhaseStarting": "Preparing…",
    "browserInstallPhaseDownloading": "Downloading…",
    "browserInstallPhaseDownloadingPercent": "Downloading… {{percent}}%",
    "browserInstallPhaseVerifying": "Verifying checksum…",
    "browserInstallPhaseExtracting": "Extracting archive…",
    "browserInstallPhaseRunning": "Running install…",
    "browserInstallPhaseReady": "Finishing…",
    "browserInstallCancel": "Cancel",
    "browserInstallCancelling": "Cancelling…",
    "browserInstallCancelled": "Install cancelled",
    "browserCloakKeepOpenOn": "Keep browser alive between tasks",
    "browserCloakTemporaryProfileOn": "Use a temporary profile each time",
    "browserHumanizeOn": "Simulate more natural mouse, keyboard, and scroll input",
    "browserHumanPresetCareful": "Careful (recommended)",
    "browserHumanPresetDefault": "Standard",
    "browserModeLocalShort": "Local Chromium",
    "browserModeCloakShort": "CloakBrowser",
    "browserModeCdpShort": "CDP",
    "browserModeCloudShort": "Cloud",
    "browserModeExtShort": "Extension",
    "browserModeLocalTagline": "Playwright Chromium on the gateway host",
    "browserModeCloakTagline": "Anti-fingerprint Chromium for stealth automation",
    "browserModeCdpTagline": "Drive a local debuggable Chrome over CDP",
    "browserModeCloudTagline": "Browserbase / Browser Use remote browsers",
    "browserModeExtTagline": "Bridge a real user's Chrome via extension",
    "browserDisabledHint": "Enable browser tools to choose a connection method and configure the backend.",
    "browserDocsLink": "Browser tools docs",
    "browserSetupTitle": "Get started",
    "browserSetupSubtitle": "Pick a connection method — you can change it anytime after enabling browser tools.",
    "browserSetupRecommended": "Recommended",
    "browserSetupSelect": "Use this method",
    "browserSetupExtTitle": "Chrome extension",
    "browserSetupExtDesc": "Bridge your everyday Chrome. Best for sites that need a logged-in session.",
    "browserSetupLocalTitle": "Local Playwright",
    "browserSetupLocalDesc": "Headless or visible Chromium on the gateway host. Install once, then save.",
    "browserSetupCloudTitle": "Cloud browser",
    "browserSetupCloudDesc": "Browserbase or Browser Use — no local Chromium install required.",
    "browserStatusStripBackend": "Connection",
    "browserWorkspaceExtSubtitle": "Install the extension, start the bridge, and connect from Chrome.",
    "browserWorkspaceLocalSubtitle": "Install Chromium on the gateway host to run Playwright locally.",
    "browserWorkspaceCloakSubtitle": "Download CloakBrowser and tune anti-fingerprint options.",
    "browserWorkspaceCdpSubtitle": "Launch or attach to a debuggable Chrome over CDP.",
    "browserWorkspaceCloudSubtitle": "Connect to Browserbase or Browser Use with your API credentials.",
    "browserBehaviorShow": "Runtime & dialogs",
    "browserBehaviorHide": "Hide runtime & dialogs",
    "browserBehaviorHint": "Headless mode and JavaScript dialog handling for all backends.",
    "browserSecurityShow": "Security & limits",
    "browserSecurityHide": "Hide security & limits",
    "browserSecurityHint": "Private URL access and per-command timeouts. Cloud metadata endpoints are always blocked.",
    "browserPickerTitle": "Active browser",
    "browserPickerSubtitle": "Choose which backend agents use at runtime. Configure each method in its tab.",
    "browserGoToConfigure": "Configure",
    "browserConfiguringHeader": "Configuring: {{mode}}",
    "browserSelectedBadge": "Selected",
    "browserStatusReady": "Ready",
    "browserStatusNotInstalled": "Not installed",
    "browserStatusChecking": "Checking…",
    "browserStatusUnknown": "Unknown",
    "browserStatusError": "Error",
    "browserAdvancedShow": "Advanced",
    "browserAdvancedHide": "Hide advanced",
    "browserReinstall": "Reinstall",
    "browserConfirmDownloadTitle": "Download external binary",
    "browserConfirmDownloadBody": "About to download CloakBrowser {{version}} for {{platform}} from {{url}}. The file will be SHA-256 verified before extraction.",
    "browserConfirmDownloadConfirm": "Download & install",
    "browserConfirmDownloadCancel": "Cancel",
    "browserCloakSha256Skipped": "Manifest has no SHA-256 for this platform — integrity will NOT be verified.",
    "browserCloakAdvancedShow": "Paths & fingerprint",
    "browserCloakAdvancedHide": "Hide paths & fingerprint",
    "browserCloakAdvancedHint": "Binary cache, custom executable, timezone/locale emulation, WebRTC IP, and extra Chromium flags.",
    "browserCdpLaunchLocal": "Launch a debuggable Chrome locally",
    "browserCdpLaunchLocalDesc": "Spawns Chrome with --remote-debugging-port so the agent can drive it. The window stays open until you click Stop.",
    "browserCdpLaunching": "Launching…",
    "browserCdpStopLocal": "Stop local Chrome",
    "browserCdpLaunchedAtPort": "Launched on port {{port}} — endpoint filled in below.",
    "browserCdpTestConnection": "Test connection",
    "browserCdpTesting": "Testing…",
    "browserCdpReachable": "Reachable — {{browser}}",
    "browserCdpUnreachable": "Unreachable: {{error}}",
    "browserCdpLoopbackOnly": "Only loopback endpoints (127.0.0.1 / localhost / ::1) are allowed for safety.",
    "browserCdpChromePath": "Chrome executable (optional)",
    "browserCdpChromePathDesc": "Optional override. Empty uses Playwright Chromium first, then the system Chrome/Chromium.",
    "browserCloudTestConnection": "Test connection",
    "browserCloudTestOk": "Connected ✓",
    "browserCloudTestFailed": "Failed: {{error}}",
    "browserBinaryPathWarning": "⚠ The gateway will execute the binary at this path with its own privileges. Only point to binaries you trust.",
    "browserCacheDirHomeOnly": "Must be under your home directory (e.g. ~/.xopc/bin).",
    "browserExtensionDownloadHint": "Load the xopc extension in Chrome and bridge to the gateway over WebSocket.",
    "browserExtensionInstall": "Install locally",
    "browserExtensionInstalling": "Installing…",
    "browserExtensionInstalled": "Extension copied to",
    "browserExtensionOpenChrome": "Open chrome://extensions",
    "browserExtensionRevealFolder": "Copy path & open folder",
    "browserExtensionPathCopied": "Path copied and folder opened in Finder/Explorer.",
    "browserExtensionFolderOpened": "Folder opened in Finder/Explorer.",
    "browserExtensionNeedsChromeReload": "xopc updated the extension on disk. Open chrome://extensions and click Reload on the xopc extension.",
    "browserExtensionInstallGuideTitle": "Setup checklist",
    "browserExtensionChecklistProgress": "{{done}}/{{total}} done",
    "browserExtensionChecklistDone": "Completed:",
    "browserExtensionChecklistPending": "Pending:",
    "browserExtensionInstallStep1": "Click Install locally above to copy the extension to your machine.",
    "browserExtensionInstallStep2": "Open chrome://extensions → turn on Developer mode → Load unpacked → select the folder below.",
    "browserExtensionInstallStep2FolderLabel": "Extension folder",
    "browserExtensionInstallStep3": "Click Start bridge, then Connect in the xopc extension popup from the Chrome toolbar.",
    "browserExtensionStartBridge": "Start bridge",
    "browserExtensionStarting": "Starting…",
    "browserExtensionStopBridge": "Stop bridge",
    "browserExtensionDisconnect": "Disconnect extension",
    "browserExtensionPortConflict": "Port {{port}} is already in use. If this gateway owns the bridge, click Stop bridge; otherwise change the port or stop the process using it.",
    "browserExtensionStartHint": "Start the WebSocket bridge now so you can pair the extension before saving. The bridge will keep running until you click Stop.",
    "cardGenerationTitle": "Sampling & tools",
    "cardGenerationSubtitle": "Token budget, randomness, and tool loop depth",
    "cardBehaviorTitle": "Reasoning & output",
    "cardBehaviorSubtitle": "Thinking depth, traces, and verbosity",
    "label": {
      "model": "Model",
      "modelFallbacks": "Fallback models",
      "typedModels": "Model roles",
      "smallModel": "Small model",
      "smallModelFallbacks": "Small-model fallbacks",
      "imageModel": "Image model",
      "imageModelFallbacks": "Image understanding fallbacks",
      "imageGenerationModel": "Image generation model",
      "imageGenerationModelFallbacks": "Image generation fallbacks",
      "mediaMaxMb": "Image load limit (MB)",
      "workspace": "Workspace",
      "browserEnabled": "Browser tools",
      "browserHeadless": "Headless mode",
      "browserAllowPrivateUrls": "Allow private URLs",
      "browserCommandTimeout": "Command timeout (s)",
      "browserBackend": "Backend mode",
      "browserCloudProvider": "Cloud provider",
      "browserCloudApiKey": "API Key",
      "browserCloudProjectId": "Browserbase project ID",
      "browserCloudRegion": "Cloud region",
      "browserCdpUrl": "CDP endpoint URL",
      "browserExtensionPort": "Extension port",
      "browserExtensionHost": "Extension host",
      "browserExtensionConnectionTimeout": "Connection timeout (s)",
      "browserCloakKeepOpen": "Keep alive",
      "browserCloakTemporaryProfile": "Temporary profile",
      "browserCloakCacheDir": "Download cache dir",
      "browserCloakBinaryPath": "Browser binary path",
      "browserCloakTimezone": "Timezone",
      "browserCloakLocale": "Locale",
      "browserCloakWebrtcIp": "WebRTC public IP",
      "browserCloakFingerprintPlatform": "Fingerprint platform",
      "browserCloakExtraArgs": "Extra Chromium args",
      "browserHumanize": "Humanized input",
      "browserHumanPreset": "Input pace",
      "browserDialogPolicy": "Dialog handling policy",
      "browserDialogTimeout": "Dialog timeout (s)",
      "maxTokens": "Max tokens",
      "temperature": "Temperature",
      "maxToolIterations": "Max tool iterations",
      "thinkingDefault": "Thinking level",
      "reasoningDefault": "Reasoning visibility",
      "verboseDefault": "Verbose mode"
    },
    "desc": {
      "model": "Default model for new sessions.",
      "modelFallbacks": "Tried in order when the primary model returns an error after transient retries. Requires API keys for each provider.",
      "typedModels": "Named model roles for workflows or internal tasks, such as small, large, and vision.",
      "smallModel": "Optional cheaper/faster tier. Workflow scripts can request it with agent(prompt, { tier: 'small' }). Leave blank to fall back to the primary model.",
      "smallModelFallbacks": "Tried in order when the small primary fails. Requires API keys for each provider.",
      "imageModel": "Optional. Used for image understanding / vision. Only models the gateway marks as accepting image input are listed.",
      "imageModelFallbacks": "Tried in order when the primary vision model fails. Only models flagged as image-capable are listed.",
      "imageGenerationModel": "Optional. For image_generate. Only providers the gateway reports as configured (API keys present) are listed.",
      "imageGenerationModelFallbacks": "Tried in order when the primary image generation model fails. Only configured image-generation providers are listed.",
      "mediaMaxMb": "Max size when loading images in the image tool.",
      "workspace": "Working directory for agent files.",
      "browserEnabled": "Exposes browser_use automation to the model (which browser runs depends on Backend mode below).",
      "browserHeadless": "Default off: Chromium shows a window on the gateway machine. Turn on to run without a visible window (background).",
      "browserAllowPrivateUrls": "Skip private-IP blocking for navigation. Cloud metadata endpoints (169.254.169.254, etc.) are always blocked regardless.",
      "browserCommandTimeout": "Max seconds per browser command (navigate, click, etc.). Default 30.",
      "browserBackend": "Connection mode: Local Playwright, direct CDP, cloud provider, or Chrome Extension bridge.",
      "browserCloudProvider": "Cloud provider: Browserbase or Browser Use. You can set the API key here; environment variables BROWSERBASE_API_KEY / BROWSER_USE_API_KEY are still supported.",
      "browserCloudApiKey": "Stored in gateway config. Leave empty to use process environment variables. Saved keys are masked on reload.",
      "browserCloudProjectId": "Optional Browserbase project ID. Empty uses BROWSERBASE_PROJECT_ID or the provider default.",
      "browserCloudRegion": "Optional. Passed to providers that support regions; empty uses the default region.",
      "browserCdpUrl": "Direct Chrome DevTools Protocol WebSocket endpoint (e.g. ws://localhost:9222). Only used when backend is CDP.",
      "browserExtensionPort": "WebSocket port for the Chrome Extension bridge. Default 19820.",
      "browserExtensionHost": "Host for the Chrome Extension bridge. Default 127.0.0.1.",
      "browserExtensionConnectionTimeout": "How long the gateway waits for the extension to connect (seconds). Default 30.",
      "browserCloakKeepOpen": "Reuse one CloakBrowser process to reduce startup time for later tasks. Enabled by default.",
      "browserCloakTemporaryProfile": "Use a temporary user-data directory on each launch and clean it up on close. Useful for isolated testing.",
      "browserCloakCacheDir": "Optional. CloakBrowser home directory (binaries and profiles). Empty uses ~/.xopc/bin/cloakbrowser.",
      "browserCloakBinaryPath": "Optional. Path to an existing CloakBrowser/Chromium executable, usually under ~/.xopc/bin. Set this to skip auto-download.",
      "browserCloakTimezone": "Optional timezone to emulate (IANA name, e.g. America/New_York).",
      "browserCloakLocale": "Optional locale to emulate (e.g. en-US).",
      "browserCloakWebrtcIp": "Optional public IP for WebRTC leak prevention.",
      "browserCloakFingerprintPlatform": "Optional platform string for fingerprint emulation (e.g. windows, macos).",
      "browserCloakExtraArgs": "One Chromium flag per line. Args with the same --key= prefix override defaults.",
      "browserHumanize": "Use Bezier mouse movement, per-character typing, and natural scroll pacing to reduce automation signals.",
      "browserHumanPreset": "Choose the input pace. Careful is slower but closer to real user behavior.",
      "browserDialogPolicy": "How JS dialogs (alert/confirm/prompt) are handled: agent must respond, auto dismiss, or auto accept.",
      "browserDialogTimeout": "Seconds before an unhandled dialog is auto-dismissed/accepted (only for auto policies). Default 300.",
      "maxTokens": "Maximum tokens in the model response.",
      "temperature": "Randomness (0–2).",
      "maxToolIterations": "Maximum tool calls per user message.",
      "thinkingDefault": "Default thinking level for new sessions.",
      "reasoningDefault": "Whether to surface model reasoning in the chat UI. Per-session overrides (e.g. /reasoning) take precedence until cleared.",
      "verboseDefault": "Agent verbosity for logs/tool detail elsewhere — not the reasoning/thinking panel. Use Reasoning visibility to hide reasoning."
    },
    "addModelFallback": "Add fallback model",
    "removeModelFallback": "Remove fallback model",
    "addTypedModel": "Add model role",
    "removeTypedModel": "Remove model role",
    "typedModelIdLabel": "Role id",
    "typedModelDescriptionLabel": "Description",
    "typedModelIdPlaceholder": "small",
    "typedModelDescriptionPlaceholder": "Optional hint for pickers",
    "typedModelsInvalidId": "Each model role needs a valid id (lowercase letters, digits, hyphens, underscores).",
    "typedModelsDuplicateId": "Duplicate model role id.",
    "typedModelsInvalidModel": "Each model role needs a provider/model ref.",
    "setDefaultWorkspace": "Set default",
    "visionRegistryEmpty": "No models flagged as image-capable for your configured providers. Add `input` including \"image\" in models.json, or pick a provider model that exposes image input.",
    "visionOutOfFilterNote": "Registry does not mark this model as image-capable; choose a vision model when possible.",
    "imageGenRegistryEmpty": "No image generation providers are configured with API credentials. Add keys for a provider (e.g. OpenAI) in config or environment, then refresh.",
    "imageGenOutOfFilterNote": "This model’s provider is not configured with credentials; image_generate will fail until you configure it or pick a configured provider.",
    "reasoning": {
      "off": "Off",
      "on": "On",
      "stream": "Stream"
    },
    "verbose": {
      "off": "Off",
      "on": "On",
      "full": "Full"
    },
    "advanced": {
      "advancedOptionsShow": "Advanced options",
      "advancedOptionsHide": "Hide advanced options",
      "cardLimitsTitle": "Turn limits & reliability",
      "cardLimitsSubtitle": "Wall-clock cap per user turn, request retries, and tool failure budget.",
      "maxTaskDurationMs": "Max task duration (minutes)",
      "maxTaskDurationMsDesc": "Per-user-turn wall time for LLM and tools. Leave empty to use the server default. Range 1–240 min (1 min–4 h).",
      "maxTaskDurationPlaceholder": "e.g. 30 (empty = default)",
      "maxRequestsPerTurn": "Max requests per turn",
      "maxRequestsPerTurnDesc": "LLM request attempts per user message (reliability; default 50).",
      "maxToolFailuresPerTurn": "Max tool failures per turn",
      "maxToolFailuresPerTurnDesc": "Consecutive tool errors before giving up (default 3).",
      "goalsCheckLink": "Goal checking (/goal) → Goal judge settings",
      "goalsCheckLinkHint": "Checklist judging defaults are configured under Settings → Automation → Goal judge.",
      "cardCompactionTitle": "Context compaction",
      "cardCompactionSubtitle": "When to compact older context to stay within the model window.",
      "compactionEnabled": "Enable compaction",
      "compactionEnabledDesc": "When off, the runtime skips compaction (may use more context).",
      "compactionEnabledOn": "Compaction on",
      "compactionMode": "Mode",
      "compactionModeDesc": "default: standard strategy; safeguard: stricter heuristics when enabled.",
      "compactionModeDefault": "default",
      "compactionModeSafeguard": "safeguard",
      "reserveTokens": "Reserve tokens",
      "reserveTokensDesc": "Headroom to leave after compaction (default 8000).",
      "triggerThreshold": "Trigger threshold",
      "triggerThresholdDesc": "Fraction of context that triggers compaction (0.5–0.95).",
      "minMessagesBeforeCompact": "Min messages before compact",
      "minMessagesBeforeCompactDesc": "Message count before compaction can run (default 10).",
      "keepRecentMessages": "Keep recent messages",
      "keepRecentMessagesDesc": "Recent turns always kept near the tail (default 5).",
      "evictionWindow": "Eviction window",
      "evictionWindowDesc": "Portion of history eligible for summary-first eviction (0.1–0.5).",
      "retentionWindow": "Retention window",
      "retentionWindowDesc": "Recent turns in the retention band (3–20).",
      "cardPruningTitle": "Tool result pruning",
      "cardPruningSubtitle": "Trim oversized tool results before the model sees them.",
      "pruningEnabled": "Enable pruning",
      "pruningEnabledDesc": "When off, full tool output may be sent to the model (higher cost).",
      "pruningEnabledOn": "Pruning on",
      "maxToolResultChars": "Max tool result characters",
      "maxToolResultCharsDesc": "Default cap for a single tool result string (default 10000).",
      "headKeepRatio": "Head keep ratio",
      "headKeepRatioDesc": "Fraction kept from the start when pruning (0–1, default 0.3).",
      "tailKeepRatio": "Tail keep ratio",
      "tailKeepRatioDesc": "Fraction kept from the end (0–1, default 0.3).",
      "cardMemoryTitle": "Memory (curated & external)",
      "cardMemorySubtitle": "System memory, USER.md, and optional provider hooks.",
      "memoryEnabled": "Memory features",
      "memoryEnabledDesc": "Master switch: curated memory snapshot, tool, and external prefetch (when set).",
      "memoryEnabledOn": "Enabled",
      "useEnhancedSystem": "Use enhanced system",
      "useEnhancedSystemDesc": "When off, use profile Markdown in the workspace only (no extra memory snapshot in system).",
      "useEnhancedSystemOn": "Enhanced system on",
      "userProfileEnabled": "Include USER.md",
      "userProfileEnabledDesc": "Add USER.md to the memory snapshot when present.",
      "userProfileEnabledOn": "Include user profile",
      "memoryProvider": "External memory provider",
      "memoryProviderDesc": "none/stub, or leave unset to omit.",
      "memoryProviderUnset": "(unset)",
      "injectionFrequency": "External prefetch injection",
      "injectionFrequencyDesc": "How often to inject prefetched memory into the user message context.",
      "injectionFrequencyUnset": "(unset)",
      "injectionEveryTurn": "Every turn (with cadence)",
      "injectionFirstTurn": "First turn only",
      "memoryCharLimit": "Memory character limit",
      "memoryCharLimitDesc": "Max chars for the curated memory snapshot (optional).",
      "userCharLimit": "User profile char limit",
      "userCharLimitDesc": "Max chars for USER.md section (optional).",
      "contextCadence": "Context cadence",
      "contextCadenceDesc": "When using every turn: inject on turns 1, 1+N, … (min 1).",
      "dialecticCadence": "Dialectic cadence (reserved)",
      "dialecticCadenceDesc": "Reserved; not yet wired. Min 1 when set.",
      "cardSessionSearchTitle": "Session search (transcripts)",
      "cardSessionSearchSubtitle": "Model used to summarize past sessions for the session_search tool.",
      "sessionSearchSummaryModel": "Summary model",
      "sessionSearchSummaryModelDesc": "e.g. openai/gpt-4o-mini. Leave empty to use runtime defaults.",
      "cardReviewTitle": "Background review",
      "cardReviewSubtitle": "Post-turn nudges for memory/skills. Opt-in: enable below.",
      "reviewEnabled": "Enable background review",
      "reviewEnabledDesc": "When on, a quiet follow-up may run after successful turns.",
      "reviewEnabledOn": "Enable",
      "memoryNudgeInterval": "Memory nudge (every N user turns)",
      "memoryNudgeIntervalDesc": "0 disables the memory channel. Default 10.",
      "skillNudgeInterval": "Skill nudge (rounds without skill_manage)",
      "skillNudgeIntervalDesc": "0 disables the skill channel. Default 10.",
      "reviewMaxToolRounds": "Review max tool rounds",
      "reviewMaxToolRoundsDesc": "1–32 (default 8).",
      "reviewMaxHistoryMessages": "Max history in review (messages, tail)",
      "reviewMaxHistoryMessagesDesc": "10–200 (default 80).",
      "reviewMaxDurationMs": "Review time limit (seconds)",
      "reviewMaxDurationMsDesc": "Wall clock for the review run (30–600 s; default 120).",
      "cardWebExtractTitle": "web_extract (LLM pass)",
      "cardWebExtractSubtitle": "Optional model and length for markdown web extraction.",
      "webExtractModel": "Model",
      "webExtractModelDesc": "Leave empty to use the default provider/model for extraction.",
      "webExtractMaxLength": "Max length",
      "webExtractMaxLengthDesc": "Max extracted characters (optional).",
      "cardDelegateTitle": "Sub-agents & code execution",
      "cardDelegateSubtitle": "Opt-in: delegate_task and sandboxed execute_code.",
      "delegateEnabled": "Sub-agent delegate_task",
      "delegateEnabledDesc": "When on, the agent may delegate to sub-agent runs (if supported).",
      "delegateEnabledOn": "Enabled",
      "executeCodeEnabled": "execute_code (sandboxed)",
      "executeCodeEnabledDesc": "When on, the sandboxed code tool is available (if the runtime allows).",
      "executeCodeEnabledOn": "Enabled",
      "cardSystemPromptTitle": "System prompt",
      "cardSystemPromptSubtitle": "Optional override of the default system context. Merged with per-agent values; entry-specific settings win.",
      "cardSkillsTitle": "Skill allowlist",
      "cardSkillsSubtitle": "When non-empty, only these skills appear in <available_skills> in the prompt.",
      "systemPromptOverride": "System prompt override",
      "systemPromptOverrideDesc": "Optional full replacement; merged with per-agent entry (entry wins). Leave empty to clear.",
      "systemPromptPlaceholder": "",
      "skillsAllowlist": "Skill name allowlist",
      "skillsAllowlistDesc": "When set, only checked skills appear in <available_skills>. Use All skills for no filter, or Only selected to pick from the catalog (including entries not currently listed).",
      "skillsAllowlistModeAll": "All skills",
      "skillsAllowlistModeRestrict": "Only selected",
      "skillsAllowlistNotInCatalog": "not in catalog",
      "addSkillName": "Add skill name",
      "removeListItem": "Remove row",
      "cardToolsDisableTitle": "Tools — global disable",
      "cardToolsDisableSubtitle": "Disable built-in tool names in agents.defaults (e.g. shell, web_search).",
      "toolsDisableFieldLabel": "Built-in tools",
      "toolsDisableHint": "Checked tools are available to the default agent; unchecked tools are blocked. Per-agent overrides in Agents still apply.",
      "toolsDisableLoadingBuiltin": "Loading built-in tool list…",
      "toolsDisableEmptyBuiltin": "No built-in tools returned by the gateway.",
      "toolsDisableNotInBuiltin": "not in built-in list",
      "toolsDisableQuickActionsLabel": "Quick actions",
      "toolsDisableQuickEnableAll": "Enable all",
      "toolsDisableQuickDisableAll": "Disable all",
      "toolsDisableQuickReadOnlyWorkspace": "Read-only workspace",
      "toolsDisableQuickHighRiskOff": "Block high-risk",
      "toolsDisableQuickNoOutbound": "No outbound",
      "addToolName": "Add tool name",
      "cardParamsTitle": "Params (JSON)",
      "cardParamsSubtitle": "Opaque key/value for extensions. Must be a JSON object.",
      "paramsJson": "Params object",
      "paramsJsonDesc": "e.g. {\"myFlag\": true}. Clear to remove params from the config file.",
      "paramsInvalidJson": "Params must be valid JSON object (e.g. empty or {}). Check syntax."
    },
    "modelsOverrideTitle": "Model overrides",
    "modelsOverrideHint": "See whether this agent inherits the global model strategy or uses its own model roles.",
    "modelResolutionGlobal": "Global default",
    "modelResolutionAgent": "Agent override",
    "modelResolutionSession": "Current session selection",
    "modelResolutionUnset": "Not set",
    "modelResolutionAgentInherits": "Inherited by agents; model roles can be overridden per agent.",
    "modelResolutionSessionSelectable": "The chat page can select a temporary session model."
  },
  "agentsSettings": {
    "title": "Agents",
    "subtitle": "Manage agents.list entries: workspaces, default routing, and profile Markdown.",
    "needToken": "Save a gateway token to manage agents.",
    "loadError": "Failed to load agents",
    "saveError": "Request failed",
    "loading": "Loading…",
    "tabOverview": "Agents",
    "tabDefaults": "Defaults",
    "tabFiles": "Profile Markdown",
    "tabTools": "Tools",
    "tabSkills": "Skills",
    "tabChannels": "Channels",
    "tabCron": "Cron",
    "selectAgent": "Agent",
    "selectAgentHint": "Choose an entry to edit. Profile Markdown (SOUL.md, IDENTITY.md, …) is read from that agent's `agents/<id>/profile/` directory.",
    "agent": "Agent",
    "defaultBadge": "default",
    "setDefault": "Set as default",
    "editAgent": "Edit entry",
    "editAgentHint": "Updates agents.list on the gateway. Paths are expanded (~ → home).",
    "inheritance": {
      "title": "Defaults vs this agent",
      "subtitle": "Empty model uses the global default. Workspace matches the default path when unchanged.",
      "editDefaultsLink": "Edit defaults",
      "modelLabel": "Primary model",
      "workspaceLabel": "Workspace",
      "badgeInherit": "Inherits default",
      "badgeOverride": "Custom",
      "inheritsValue": "Default: {{value}}",
      "unset": "Not set"
    },
    "displayName": "Display name",
    "agentDescription": "Description",
    "agentDescriptionPlaceholder": "Short summary shown on agent cards and in pickers (optional).",
    "workspacePath": "Markdown workspace",
    "modelPrimary": "Model (primary)",
    "modelSmall": "Small model",
    "modelSmallHint": "Optional cheaper/faster tier — workflow scripts can request it via { tier: 'small' }. Leave blank to inherit defaults.",
    "modelSmallDefaultsPrefix": "Defaults: ",
    "modelClear": "Clear",
    "save": "Save",
    "discard": "Discard",
    "removeFromConfig": "Remove from config",
    "purgeDisk": "Remove + delete data",
    "addAgent": "Add agent",
    "addAgentHint": "Same as CLI agents add: creates directories and seeds profile Markdown templates.",
    "newAgentLabel": "Display name",
    "newAgentIdOptional": "Agent ID (optional)",
    "newAgentIdPlaceholder": "Leave empty to derive from display name",
    "newAgentIdRules": "1–64 characters: letters, digits, underscores, hyphens; must start with a letter or digit. Avoid reserved ids (e.g. main, con).",
    "newWorkspace": "Workspace directory (required)",
    "newModelOptional": "Model (optional)",
    "create": "Create agent",
    "addAgentAria": "Add agent",
    "createModalCancel": "Cancel",
    "closeDialogAria": "Close",
    "filesHint": "Editable persona files (SOUL, IDENTITY, …). Changes save automatically after you stop typing; use Preview to render Markdown.",
    "filesLoading": "Loading file list…",
    "filesEmpty": "No files yet.",
    "pickFile": "Select a file to edit.",
    "saveFile": "Save file",
    "filesMarkdownEdit": "Edit",
    "filesMarkdownPreview": "Preview",
    "filesAutoSaveHint": "Auto-saves when you pause typing.",
    "filesSavingStatus": "Saving…",
    "missing": "missing",
    "confirmDelete": "Remove this agent from config? Bindings referencing it will be stripped.",
    "confirmDeletePurge": "Remove this agent and delete its workspace + ~/.xopc/agents/<id> data? This cannot be undone.",
    "purgeConfirmLabel": "Type the agent id to confirm",
    "purgeConfirmPlaceholder": "Type {{agentId}} to confirm",
    "purgeConfirmHint": "This action is irreversible. Enter {{agentId}} exactly to enable deletion.",
    "toolsTitle": "Built-in tools",
    "toolsHint": "Per-agent tool disables (merged with agents.defaults). Tools already disabled in defaults cannot be re-enabled here.",
    "toolsSave": "Save tool disables",
    "toolsClearEntry": "Clear per-agent disables",
    "toolsLockedByDefaults": "disabled in defaults",
    "toolsDisableGroups": {
      "unknown": "Custom ids (not in built-in list)",
      "workspace": "Workspace & search",
      "execution": "Execution",
      "web": "Web",
      "messaging": "Channels & outbound",
      "memory": "Memory & sessions",
      "media": "Vision & generation",
      "extensions": "Extensions",
      "mcp": "MCP (bundle)",
      "misc": "Other built-ins"
    },
    "toolDescriptions": {
      "read_file": "Read text and small files inside the agent workspace (paths are restricted to the workspace sandbox).",
      "write_file": "Create new files or overwrite existing ones under the workspace.",
      "edit_file": "Change existing files using locate-and-replace or patch-style edits.",
      "list_dir": "List files and subfolders in a workspace directory.",
      "grep": "Search file contents with regular expressions (similar to ripgrep).",
      "find": "Find files by name or glob pattern under the workspace.",
      "shell": "Run shell commands with workspace context — high impact; turn off for read-only or safer agents.",
      "web_search": "Search the public web for facts and pages newer than the model may know.",
      "web_fetch": "Fetch a URL and read its text content for the model.",
      "browser_use": "Unified browser automation tool for navigation, snapshots, clicks, typing, screenshots, and browser pipelines.",
      "send_message": "Send outbound chat messages on connected channels (e.g. Telegram, CLI, gateway) when the agent replies.",
      "send_media": "Send images or other media attachments through those channels.",
      "memory_search": "Search indexed memories and notes stored for this agent.",
      "memory_get": "Load a specific memory entry or chunk by id.",
      "curated_memory": "Read or update curated markdown memories under the agent home directory.",
      "session_search": "Search across saved conversation transcripts and per-session summaries.",
      "image": "Analyze or describe images (vision) from the workspace or the current turn.",
      "image_generate": "Generate images using the configured image / image-generation model.",
      "extensions": "Expose tools registered by enabled extensions — disable to block all extension tools.",
      "bundle-mcp": "Load tools from configured MCP servers (global mcp.servers and extension .mcp.json)."
    },
    "skillsTitle": "Skill allowlist",
    "skillsHint": "Optional allowlist for <available_skills>. Inherit uses agents.defaults only; customize sets this agent’s skills array.",
    "skillsInherit": "Inherit defaults",
    "skillsCustomize": "Customize allowlist",
    "skillsSave": "Save skills",
    "modelsTabTitle": "Model roles",
    "modelsTabHint": "Optional overrides for named workflow model roles. Inherit uses agents.defaults; customize sets this agent's models array.",
    "modelsInherit": "Inherit defaults",
    "modelsCustomize": "Customize roles",
    "modelsResetInherit": "Clear overrides",
    "modelsDefaultsLink": "Edit defaults",
    "modelsDefaultsLabel": "Defaults:",
    "modelsEffectiveLabel": "Effective:",
    "modelsSave": "Save model roles",
    "typedModelIdLabel": "Role id",
    "typedModelDescriptionLabel": "Description",
    "addTypedModel": "Add model role",
    "removeTypedModel": "Remove model role",
    "typedModelIdPlaceholder": "small",
    "typedModelDescriptionPlaceholder": "Optional hint",
    "skillsCatalogLoading": "Loading skill catalog…",
    "skillsEmptyCatalog": "No skills in catalog.",
    "skillsNoDescription": "No description in SKILL.md metadata.",
    "skillsDefaultsLabel": "Defaults allowlist:",
    "skillsEffectiveLabel": "Effective allowlist:",
    "skillsAllFromCatalog": "(all catalog skills)",
    "channelsTitle": "Routing bindings",
    "channelsHint": "config.bindings rows for this agent. Removing a rule updates the full bindings array on the gateway.",
    "channelsLoading": "Loading bindings…",
    "channelsNone": "No bindings target this agent.",
    "channelLabel": "Channel",
    "peerIdLabel": "Peer id (optional)",
    "channelsLoadingChannels": "Loading channel list…",
    "channelsManualChannelHint": "Gateway returned no channel list. Enter a channel id (e.g. telegram, webchat, gateway).",
    "channelsDisabledSuffix": "(disabled)",
    "channelsSessionLabel": "Match",
    "channelsRefreshSessions": "Refresh",
    "channelsRefreshSessionsHint": "Reload recent sessions for this channel",
    "channelsLoadingSessions": "Loading sessions…",
    "channelsPeerFromSessions": "From sessions",
    "channelsPeerAny": "All traffic on this channel",
    "channelsNoSessionsHint": "No session history for this channel yet. Send a message or enter a custom peer id below.",
    "channelsCustomPeerHint": "If set, overrides the session picker. Supports * globs; see session routing docs.",
    "channelsCustomPeerPlaceholder": "e.g. 12345 or *",
    "addBinding": "Add binding",
    "removeBinding": "Remove",
    "cronTitle": "Scheduled jobs",
    "cronHint": "Isolated cron jobs can pin an agent id for the session key. Jobs without an agent id use the default agent and appear when that agent is selected.",
    "cronLoading": "Loading cron jobs…",
    "cronNone": "No matching jobs.",
    "cronColSchedule": "Schedule",
    "cronColMessage": "Message",
    "cronColSession": "Session",
    "cronColAgent": "Agent",
    "cronAgentDefault": "Default agent",
    "cronAgentClear": "Reset to default",
    "navIdentity": "Identity",
    "navProfile": "About You",
    "navPersona": "Persona",
    "navTools": "Tools",
    "navModels": "Model roles",
    "navSkills": "Skills",
    "navCoreFiles": "Profile Markdown",
    "navAdvanced": "Advanced",
    "listSearchPlaceholder": "Search by name, id, or workspace",
    "listEmpty": "No agents match your search.",
    "listNoAgentsYet": "No agents yet. Create one to get started.",
    "listNewAgentCard": "New agent",
    "listChatWithAgent": "Chat",
    "defaultMainAgentName": "Smart Assistant",
    "defaultMainAgentDescription": "Your personal intelligent assistant for answering questions, handling everyday tasks, and chatting with you anytime.",
    "editorNavAria": "Agent editor sections",
    "skillsLibraryLink": "Skill library",
    "personaHint": "Set up your agent's identity and personality with a friendly form. For raw Markdown, use Profile Markdown.",
    "personaSectionIdentity": "Agent Identity",
    "personaSectionIdentityHint": "How your agent presents itself",
    "personaSectionUser": "About You",
    "personaSectionUserHint": "Help your agent know you better",
    "personaSectionSoul": "Personality & Style",
    "personaSectionSoulHint": "Define how your agent communicates",
    "personaName": "Name",
    "personaNamePlaceholder": "e.g. Aria, Nova, Kai…",
    "personaCreature": "Type",
    "personaCreaturePlaceholder": "Custom type…",
    "personaVibe": "Vibe",
    "personaVibePlaceholder": "Custom vibe…",
    "personaEmoji": "Emoji",
    "personaEmojiPlaceholder": "e.g. 🤖 ✨ 🧠",
    "personaAvatar": "Avatar",
    "personaAvatarPlaceholder": "URL or workspace path",
    "avatarPickerTitle": "Agent avatar",
    "avatarOpenSettingsAria": "Open agent avatar settings",
    "avatarRowHint": "Pick a style or upload a custom image.",
    "avatarUploadCustom": "Upload custom image",
    "avatarStyleAdventurer": "Adventurer",
    "avatarStyleRobot": "Robot",
    "avatarStyleLorelei": "Lorelei",
    "avatarStyleThumbs": "Thumbs",
    "avatarStyleFunEmoji": "Fun Emoji",
    "avatarMore": "More",
    "avatarUploading": "Uploading…",
    "avatarUploadFailed": "Upload failed. Try a smaller PNG, JPEG, or WebP.",
    "avatarInvalidImage": "Use a PNG, JPEG, or WebP image.",
    "avatarTooLarge": "Image must be at most 512 KB.",
    "personaCallName": "What to call you",
    "personaCallNamePlaceholder": "e.g. Michael",
    "personaPronouns": "Pronouns",
    "personaPronounsPlaceholder": "e.g. he/him, she/her, they/them",
    "personaTimezone": "Timezone",
    "personaTimezoneDetect": "Detect",
    "personaTimezoneCustom": "Custom timezone…",
    "personaNotes": "Notes",
    "personaNotesPlaceholder": "Anything else your agent should know about you…",
    "personaSoulTemplate": "Personality template",
    "personaSoulCustomEdit": "Edit personality (Markdown)",
    "personaSoulPreview": "Preview",
    "personaSoulEdit": "Edit",
    "personaMemoryNote": "Your agent will automatically remember preferences you share in conversation (like favorite foods or habits). No need to add those here.",
    "personaSaving": "Saving…",
    "personaSaved": "Saved",
    "footerSaveNotApplicable": "Use actions in this section; the bar Save applies to Identity, Tools, Skills, and Profile Markdown.",
    "presetSetupBadge": "Quick Setup",
    "presetSetupTitle": "Get Started with Preset Agents",
    "presetSetupSubtitle": "Choose agents to create. Each comes with a tailored personality and workspace. You can customize them later.",
    "presetSkip": "Skip for now",
    "presetCreateSelected": "Create {{count}} Agent(s)",
    "presetCreating": "Creating…",
    "presetCreatingProgress": "Creating agent {{current}} of {{total}}…",
    "presetSetupComplete": "Agents created successfully!",
    "presetCreateFailed": "Failed to create {{name}}: {{message}}",
    "modelsResolutionGlobal": "Global defaults",
    "modelsResolutionAgent": "This agent override",
    "modelsResolutionEffective": "Effective result",
    "modelsResolutionInherits": "Inherits global defaults"
  },
  "goalsSettings": {
    "title": "Goal judge (/goal)",
    "hint": "Defaults for persistent goal missions and the judge model that scores progress.",
    "save": "Save",
    "discard": "Discard",
    "saving": "Saving…",
    "saveError": "Failed to save goal settings",
    "maxTurns": "Max turns per run",
    "judgeModelRef": "Judge model",
    "judgeModelRefPlaceholder": "Use agent default (optional)",
    "judgeModelRefHint": "Optional. When unset, goal runs use each agent's configured model.",
    "judgeModelRefUseDefault": "Use agent default",
    "checklistMode": "Checklist mode",
    "parseFailures": "Max consecutive parse failures",
    "judgeTimeoutSec": "Judge timeout (seconds)",
    "checklistHistoryChars": "Checklist history chars",
    "checklistHistoryCharsHint": "Max characters of transcript history sent to the judge in checklist mode."
  }
}
