{
  "account": "Account",
  "accountLinkedSuccessfully": "{provider} account {id} linked successfully!",
  "accountUnlinked": "{provider} account unlinked.",
  "actionFailed": "Action failed: {error}",
  "actionsTitle": "Actions",
  "activeAgentState": "active: {agent}",
  "activeAgentSwitchTitle": "Click to switch back to assistant",
  "activeAgentTitle": "Active: {agent} — click to switch back",
  "activeAgents": "Active agents",
  "activeForwards": "Active forwards:\n{lines}",
  "activeLoopsHeader": "Active loops:",
  "add": "Add",
  "addAgent": "Add agent",
  "addAgentToConversation": "Add agent to conversation",
  "addInstance": "Add instance",
  "addTheme": "Add theme",
  "addToConversation": "Add to conversation",
  "agent": "Agent",
  "agentBtwUsage": "Usage: /agent btw @<name|ALL> <question>",
  "agentConfigUpdated": "Agent {agent} configuration updated.",
  "agentHooks": "Agent Hooks",
  "agentHooksDesc": "Conversation hook bindings",
  "agentCreateConvUsage": "Usage: /agent create-conv @<name> \"<prompt>\"",
  "agentCreated": "Agent created.",
  "agentDeleteUsage": "Usage: /agent delete @<name>",
  "agentDeleted": "Agent '{name}' deleted.",
  "agentDisabled": "Agent disabled.",
  "agentEnabled": "Agent enabled.",
  "agentHasNoAssignedSkills": "Agent **{agent}** has no assigned skills.",
  "agentMapping": "Agent mapping",
  "agentMsgTargetUsage": "Usage: /agent msg {target} <message>",
  "agentMsgUsage": "Usage: /agent msg @<name|ALL> <message>",
  "agentNotFound": "Agent '{name}' not found.",
  "agentOverride": "Agent override",
  "agentPromoted": "Agent promoted.",
  "agentRenamed": "Agent \"{real}\" will now display as \"{nick}\".",
  "agentRepository": "Agent Repository",
  "agentRequired": "Agent is required.",
  "agentSelected": "Agent '{name}' selected. Messages now go to {name}.",
  "agentSelectedPending": "Agent '{name}' selected (will activate on first message).",
  "agentSetnameUsage": "Usage: /agent setname @<realname> [nickname]  (omit nickname to reset)",
  "agentSkillsTitle": "Skills for “{agent}”",
  "agentSkillsUpdated": "Skills updated for {agent}: {details}.",
  "agentUsage": "Usage: /agent list | create | create-conv | select | delete | msg | disable | enable | promote | setname",
  "agents": "Agents",
  "agentsHeader": "**Agents:**",
  "agentsListTitle": "Agents ({state}):\n{lines}",
  "all": "All",
  "allAgents": "all agents",
  "allAgentsInConversation": "All agents are already in this conversation",
  "allImageServicePreferencesCleared": "All image service preferences cleared.",
  "availableToTools": "available to tools",
  "allMemories": "All memories",
  "allTypes": "All types",
  "allVideoServicePreferencesCleared": "All video service preferences cleared.",
  "allowLocal": "Allow local",
  "alsoRewindUserFiles": "Also rewind user files (via checkpoints)",
  "analyzing": "Analyzing...",
  "analyzingConversation": "Analyzing conversation…",
  "analyzingRecentUserMessages": "Analyzing {limit} recent user messages...",
  "applyGlobally": "Apply globally",
  "applyToConversation": "Apply to conversation",
  "approve": "Approve",
  "approveStep": "Approve step",
  "assign": "Assign",
  "assignPlan": "Assign Plan",
  "assignStepTitle": "Assign Step {n}",
  "assignStepToAgent": "Assign step to agent",
  "assignTitle": "Assign {name} to agent",
  "assignTo": "Assign to...",
  "assignToAgentMenu": "Assign to agent...",
  "assignedList": "Assigned: {items}",
  "atLeastOneAgentRequired": "At least one agent is required.",
  "attachTitle": "Attach files",
  "audio": "Audio",
  "audioDesc": "Forward audio from relay (no desktop)",
  "audioNoToken": "Audio source is available but no capability token was returned.",
  "audioPreviewFailed": "Audio preview failed: {error}",
  "audioStreamingFrom": "Audio streaming from {relay}.",
  "audioTabClosed": "Audio tab closed.",
  "audioTabTitle": "Audio ({relay})",
  "audioTitleRelay": "Audio — {relay}",
  "audioUnavailable": "No audio available on this relay.",
  "authorizeInRelayBrowser": "Authorize in the browser that opens on the relay...",
  "autoGeneratedIfEmpty": "Auto-generated if empty",
  "autoSummarizer": "auto",
  "autoconvDisabledFor": "Auto-conversation disabled for {agent}.",
  "autoconvEnabledFor": "Auto-conversation enabled for {agent} ({freq}).",
  "autoconvFrequencyPrompt": "Frequency (e.g. 6/1m, 2-3/h, 1/2h):",
  "autoconvOff": "Autoconv off",
  "autoconvOnMenu": "Autoconv on...",
  "available": "Available",
  "availableCommands": "Available commands:",
  "availableRelays": "Available relays:",
  "availableToolsForCall": "Available tools for /call:",
  "backToReport": "Back to report",
  "binaryFile": "Binary file: /workspace/{path}",
  "blocked": "Blocked",
  "botLabel": "Bot: {bot}",
  "branchAPrompt": "Branch A:",
  "branchBPrompt": "Branch B:",
  "branchComparisonHeader": "Branch comparison: {a} vs {b}",
  "branchCreated": "Branch created: {name}",
  "branchDeleted": "Branch deleted: {name}",
  "branchNamePrompt": "Branch name:",
  "branchTitle": "Branch: {branch}",
  "broadcastFirst": "Start a conversation first before broadcasting.",
  "broadcasting": "Broadcasting...",
  "btwUsage": "Usage: /btw [@agent] <question> (defaults to selected agent)",
  "bugAgentRequired": "BUG: agent name required for select",
  "bugNoAgentSelected": "BUG: no agent selected (selectedAgent is empty)",
  "buildingProjectGraph": "Building project graph...",
  "cacheReadWrite": "cache: {read} read, {write} write",
  "cachedRenderingsPurged": "{n} cached rendering(s) purged",
  "callingTool": "🔧 Calling tool: {tool}",
  "cancel": "Cancel",
  "cancelThisAgent": "Cancel this agent",
  "cancelled": "[Cancelled]",
  "cancelling": "Cancelling...",
  "ccInteractiveTerminal": "Agent Tmux",
  "ccInteractiveTerminalDesc": "Attach to the selected agent tmux",
  "ccInteractiveTerminalNoLive": "No live interactive tmux session is available for the selected agent.",
  "ccInteractiveTerminalNoAgent": "Select an agent before opening its tmux.",
  "chatTitle": "Chat",
  "chooseCCInteractiveTerminal": "Choose Claude Code tmux",
  "chooseRelay": "Choose relay",
  "claudeCredentialsUsage": "Usage: /claude-login-credentials <service_name> <credentials_json>",
  "claudeRelayUsage": "Usage: /claude-login-relay <service_name> [relay_name]",
  "claudeRemoveUsage": "Usage: /cls remove <index> [@service]",
  "claudeUsage": "Usage: /cls @<service> | /cls pool | /cls reset | /cls remove <N>",
  "cliSessionReusedTitle": "{cli} reused (lived {lived}, reuse #{count})",
  "clickFullSize": "Click to view full size",
  "clientOwner": "client",
  "close": "Close",
  "codeNoRelayUsage": "No connected relay found. Usage: /code <relay_name>",
  "codeServerClosed": "Code server closed.",
  "codeServerStartedLoading": "code-server started. Loading editor...",
  "commandShort.1": "Show available commands or detailed help for a command",
  "commandShort.10": "Shortcut to create a skill",
  "commandShort.11": "List all resources (agents, skills, MCP servers)",
  "commandShort.12": "Activate a resource for this conversation",
  "commandShort.13": "Deactivate a resource from this conversation",
  "commandShort.14": "Share a resource to another conversation",
  "commandShort.15": "Login to Claude Code via server (noVNC)",
  "commandShort.16": "Login to Claude Code via relay",
  "commandShort.17": "Set Claude Code credentials from .credentials.json",
  "commandShort.18": "Open a terminal tab on a relay",
  "commandShort.19": "Open VS Code (code-server) tab on a relay",
  "commandShort.2": "Send a message to an agent or a running task",
  "commandShort.20": "Forward audio from relay (no desktop)",
  "commandShort.21": "Open virtual desktop (VNC) on a relay",
  "commandShort.22": "Forward a port from a relay to the web server",
  "commandShort.23": "Manage relay bindings for this conversation",
  "commandShort.24": "Manage LLM and external services",
  "commandShort.25": "Manage scheduled poll rechecks",
  "commandShort.26": "Change LLM service for an agent in this conversation",
  "commandShort.27": "Interrupt an agent — asks it to respond immediately",
  "commandShort.28": "Force stop an agent — immediate cancel, no response",
  "commandShort.29": "Restart context from last N messages (default 5, 0 = empty)",
  "commandShort.3": "Side-channel question to an agent (shortcut for /agent btw)",
  "commandShort.30": "Summarize context to N tokens and restart from summary",
  "commandShort.31": "Tell an agent to continue from where it stopped",
  "commandShort.32": "Compact context (summarize old messages)",
  "commandShort.33": "Rebuild context from full conversation history",
  "commandShort.34": "View the LLM context",
  "commandShort.35": "Toggle the files panel",
  "commandShort.36": "Toggle the flows panel",
  "commandShort.37": "Toggle the scheduled tasks panel",
  "commandShort.38": "List available tools",
  "commandShort.39": "Show tool execution metrics",
  "commandShort.4": "Call a tool directly",
  "commandShort.40": "Show token usage statistics",
  "commandShort.41": "Manage agent memories",
  "commandShort.42": "Knowledge Graph — view, add and invalidate triples",
  "commandShort.43": "Agent diary (observations, decisions, learnings)",
  "commandShort.44": "Install a custom tool",
  "commandShort.45": "Uninstall a custom tool",
  "commandShort.46": "Link/unlink external accounts",
  "commandShort.47": "Store an encrypted secret",
  "commandShort.48": "List stored secrets",
  "commandShort.49": "Store a plaintext variable",
  "commandShort.5": "Manage video generation service",
  "commandShort.50": "List stored variables",
  "commandShort.51": "Preview a file (image, PDF, text, code)",
  "commandShort.52": "Show token usage and estimated cost per agent",
  "commandShort.53": "Auto-conversation — agents contribute to the conversation autonomously",
  "commandShort.54": "Start a new conversation",
  "commandShort.55": "List/switch conversations",
  "commandShort.56": "Show conversation messages",
  "commandShort.57": "Export conversation",
  "commandShort.58": "Rename current conversation",
  "commandShort.59": "Delete a conversation",
  "commandShort.6": "Create, assign and manage agent tasks",
  "commandShort.60": "Delete a message by index",
  "commandShort.61": "Search messages in current conversation",
  "commandShort.62": "Switch LLM model",
  "commandShort.63": "Manage data flows",
  "commandShort.64": "Manage prompts",
  "commandShort.65": "Execute shell command via relay",
  "commandShort.66": "Show git diff",
  "commandShort.67": "Copy last response to clipboard",
  "commandShort.68": "Paste clipboard content",
  "commandShort.69": "Upload a file",
  "commandShort.7": "Manage image generation service",
  "commandShort.70": "View and manage plans",
  "commandShort.71": "Watch file for changes",
  "commandShort.72": "Clear pending attachments",
  "commandShort.73": "Clear the chat display",
  "commandShort.74": "Clean up FileStore files",
  "commandShort.75": "Parallel changes across multiple files",
  "commandShort.76": "Diagnose session issues",
  "commandShort.77": "Run a prompt on a recurring interval",
  "commandShort.78": "Re-authenticate",
  "commandShort.79": "Project graph — view code structure",
  "commandShort.8": "Manage AI agents",
  "commandShort.9": "Manage skills (single-shot prompt templates)",
  "commitsAhead": "Commits ahead: {count}",
  "commitsBehind": "Commits behind: {count}",
  "compacting": "Compacting",
  "compactingAgent": "Compacting ({agent})",
  "compactionFailed": "Compaction failed: {error}",
  "confidence": "Confidence",
  "confidenceBreakdown": "Confidence Breakdown",
  "configureAgentTitle": "Configure {agent}",
  "configureAvailability": "Configure availability",
  "configureBindings": "Configure bindings",
  "configureConversationMenu": "Configure in conversation...",
  "confirmDelete": "Delete this conversation? This cannot be undone.",
  "connError": "Connection error: {msg}",
  "connected": "Connected",
  "connectionsCount": "{n} connections",
  "connectionsHeading": "Connections ({n})",
  "containerKilled": "✅ Container killed: {target}",
  "containerized": "Containerized",
  "containers": "Containers",
  "containersDesc": "List and manage Docker containers",
  "context": "Context",
  "contextAdd": "Add message",
  "contextAddSharedRequired": "Switch to Shared or an agent context before adding context messages.",
  "contextCancel": "Cancel",
  "contextCcSession": "CC session",
  "contextCodexSession": "Codex session",
  "contextCompactedStatus": "{agent}: {before} messages → {after} messages (~{tokens} tokens)",
  "contextContent": "Content",
  "contextDelete": "Delete",
  "contextDeleteConfirm": "Delete this message?",
  "contextDeleteContextConfirm": "Delete the entire \"{name}\" context? This cannot be undone.",
  "contextDeleteContextTitle": "Delete this context entirely",
  "contextDeleteSelected": "Delete selected",
  "contextDeleted": "Context \"{name}\" deleted.",
  "contextDesc": "View LLM context window",
  "contextDiverged": "diverged",
  "contextEdit": "Edit",
  "contextExpandTitle": "Click to expand full message",
  "contextExpectedArray": "expected array",
  "contextGauge": "context gauge",
  "contextGaugeTitle": "Context {used}k/{max}k ({pct}%)",
  "contextGeminiSession": "Gemini session",
  "contextInvalidJson": "Invalid JSON",
  "contextInvalidate": "Invalidate",
  "contextInvalidateRuntimeConfirm": "Invalidate runtime session \"{name}\"? This will force a fresh session next turn.",
  "contextInvalidateRuntimeTitle": "Invalidate this runtime session",
  "contextLoadOlder": "▼ Load older ({shown} of {total})",
  "contextMessageNotFoundRefresh": "Message not found - refresh the context",
  "contextMessages": "{n} messages",
  "contextMode": "Context mode",
  "contextModeFull": "Full conversation",
  "contextModeIsolated": "Isolated",
  "contextModeLast10": "Last 10 messages",
  "contextModeLast20": "Last 20 messages",
  "contextModeLast50": "Last 50 messages",
  "contextModeSummary2000": "Summary ~2000 tokens",
  "contextModeSummary4000": "Summary ~4000 tokens",
  "contextOpBusy": "A context operation is in progress, please wait...",
  "contextOperationFailed": "Context operation failed: {error}",
  "contextReadonly": "Runtime session context is read-only",
  "contextReplaceAll": "Replace all (JSON)",
  "contextReplaceConfirm": "Replace entire context?",
  "contextRestarting": "Restarting",
  "contextRole": "Role",
  "contextSave": "Save",
  "contextSaved": "Context saved ({n} messages, ~{tokens} tokens)",
  "contextSelectedCount": "{n} selected",
  "contextShared": "Shared",
  "contextSynced": "synced",
  "contextTitle": "LLM Context",
  "contextTokens": "~{n} tokens",
  "contextTranscript": "Transcript",
  "contextTranscriptReplaceBlocked": "Transcript cannot be replaced from the context editor.",
  "contextUsageMessages": "messages",
  "contextUsageSource": "source",
  "contextUsageUpdated": "updated",
  "continueFromLast": "Continue from where you left off.",
  "continuing": "Continuing research...",
  "convThemeLabel": "Conversation theme",
  "conversation": "Conversation",
  "conversationCostUsd": "Conversation cost: ${cost}",
  "conversationAgentHooks": "Conversation Agent Hooks",
  "conversationDefaults": "Conversation defaults",
  "conversationDeletedShort": "Deleted {id}",
  "conversationShort": "conv",
  "conversationToolsMcpAvailability": "Conversation Tools / MCP availability",
  "conversations": "Conversations",
  "copiedCharsToClipboard": "Copied {n} chars to clipboard.",
  "copy": "Copy",
  "copyFailed": "Copy failed: {error}",
  "copyMsgId": "Copy message id",
  "copyToConversation": "Copy to conversation",
  "copyToFileStore": "Copy to FileStore",
  "copyToGlobal": "Copy to Global",
  "copyToUser": "Copy to User",
  "costNotConfigured": "cost: not configured",
  "create": "Create",
  "createNew": "Create new",
  "createNewAgent": "Create new agent",
  "createNewAgentHook": "Create new agent hook",
  "createNewDefinitionRepository": "Create new {type} definition in repository",
  "createNewTool": "Create new tool",
  "createPlan": "Create Plan",
  "credentialsPoolHeader": "Credentials Pool ({count}):",
  "cssOrZipPackage": "CSS or ZIP package",
  "cssOverride": "CSS override",
  "current": "current",
  "currentBranchLabel": "current",
  "currentTaskLimits": "Current: cost=${cost}, reschedules={reschedules}",
  "currentTitle": "Current",
  "cut": "Cut",
  "daysAgo": "{n}d ago",
  "defaultAgentTitle": "Default agent",
  "defaultExecutionMode": "Default execution mode",
  "defaultForAgent": "Default for {agent}",
  "defaultRelay": "Default relay",
  "definition": "Definition",
  "definitionRequired": "Definition *",
  "definitionTemplate": "Definition template",
  "delete": "Delete",
  "shareLink": "Share link",
  "makePrivate": "Make private",
  "shareLinkCopied": "Public link copied to clipboard",
  "shareLinkReady": "Public link: {url}",
  "shareFailed": "Sharing failed: {error}",
  "madePrivate": "File is now private",
  "deleteBranch": "Delete Branch",
  "deleteBranchConfirm": "Delete branch \"{name}\"? This cannot be undone.",
  "deleteConv": "Delete conversation",
  "deleteCredentialConfirm": "Delete credential #{index}?",
  "deleteDefinitionMenu": "Delete definition",
  "deleteDesc": "Delete this conversation",
  "deleteFailed": "Delete failed: {error}",
  "deleteFailedUnknown": "Delete failed: unknown",
  "deleteFileConfirm": "Delete \"{name}\"? This cannot be undone.",
  "deleteItemsConfirm": "Delete {label}? This cannot be undone.",
  "deleteSelected": "Delete selected",
  "deleteParamConfirm": "Delete {type} '{key}' ({scope})?",
  "deleteServiceConfirm": "Delete service '{id}'?",
  "deleteThemeConfirm": "Delete theme {theme}?",
  "deleteVoiceClone": "Delete voice clone",
  "deleteVoiceConfirm": "Delete voice clone \"{name}\"?\n\nThis cascade-deletes:\n  • the provider voice_id (if paradigm A)\n  • the reference audio\n  • every cached TTS rendering",
  "clearFileStore": "Clear FileStore",
  "clearFileStoreConfirm": "Delete all FileStore files for this conversation?",
  "deploy": "Deploy",
  "deployFlow": "Deploy flow",
  "deployFlowFromTemplate": "Deploy flow from template",
  "deployScope": "Deploy scope",
  "deploymentSchemaLoadFailed": "Error loading deployment schema: {error}",
  "description": "Description",
  "desktop": "Desktop",
  "desktopDesc": "Open virtual desktop (VNC) on relay",
  "desktopLower": "desktop",
  "desktopNoRelayUsage": "No connected relay found. Usage: /desktop <relay_name>",
  "desktopNoUrl": "Desktop ready but server did not return a URL",
  "desktopReady": "Desktop ready.",
  "desktopStopUsage": "No active desktop to stop. Usage: /desktop stop [relay_id]",
  "desktopStopped": "Desktop stopped.",
  "desktopTabClosed": "Desktop tab closed (desktop still running). Use /desktop stop to shut down.",
  "desktopTabTitle": "Desktop ({relay})",
  "diaryEntryAdded": "Diary entry added: {result}",
  "diaryEntryPlaceholder": "Diary entry...",
  "diaryFor": "Diary for {agent} ({n} entries):\n{lines}",
  "diaryTitle": "Diary — {agent}",
  "disconnected": "Disconnected",
  "docker": "Docker",
  "dockerContainersHeader": "**Docker Containers** ({n}):\n",
  "dockerRoot": "Docker root",
  "dockerSandboxed": "Docker (sandboxed)",
  "done": "Done",
  "download": "Download",
  "downloadZip": "Download as zip",
  "downloadZipTitle": "Download directory as zip",
  "dynamicToolsHeader": "Dynamic tools:",
  "edgesForQuery": "{n} edges for \"{query}\"",
  "edit": "Edit",
  "editDefinitionMenu": "Edit definition...",
  "editLimits": "Edit Limits",
  "editLimitsTitle": "Edit Limits — {id}",
  "editParamTitle": "Edit {type}: {key}",
  "editServiceTitle": "Edit Service: ",
  "editWithEllipsis": "Edit...",
  "emptyDirectory": "Empty directory",
  "emptyResponse": "(Agent finished without producing a response)",
  "enabled": "Enabled",
  "ended": "ended",
  "endedTitle": "Ended",
  "entities": "Entities",
  "entriesCount": "{n} entries",
  "error": "Error",
  "events": "Events",
  "errorMessage": "Error: {error}",
  "errorWithMessage": "Error: {error}",
  "exec.approval_title": "Command approval required",
  "exec.approve": "Approve",
  "exec.deny": "Deny",
  "exec.working_dir": "Working directory",
  "execute": "Execute",
  "executeActionConfirm": "Execute {action}?",
  "executionMode": "Execution mode",
  "expired": "expired",
  "expires": "Expires",
  "expiresLabel": "expires: {value}",
  "explicitSummarizer": "explicit",
  "export": "Export",
  "exportDesc": "Export conversation",
  "exportFailed": "Export failed: {error}",
  "exported": "Conversation exported.",
  "exportedFile": "Exported: {file}",
  "exporting": "Exporting...",
  "exportingWithImages": "Exporting with images...",
  "failed": "Failed: {error}",
  "failPolicy": "Fail policy",
  "failedAddTriple": "Failed to add triple: {error}",
  "failedInvalidate": "Failed to invalidate: {error}",
  "failedLoadDiary": "Failed to load diary: {error}",
  "failedLoadKg": "Failed to load KG triples: {error}",
  "failedLoadKgStats": "Failed to load KG stats: {error}",
  "failedLoadMemories": "Failed to load memories: {error}",
  "failedReadFile": "Failed to read /workspace/{path}: {error}",
  "failedSendAgent": "Failed to send to agent: {error}",
  "failedToClear": "Failed to clear",
  "failedToCreateConversation": "Failed to create conversation",
  "failedToListAgents": "Failed to list agents",
  "failedToListRelays": "Failed to list relays: {error}",
  "failedToLoadFiles": "Failed to load files",
  "failedToLoadSchedules": "Failed to load schedules",
  "failedToOpenTerminal": "Failed to open terminal: {error}",
  "failedToSetImageService": "Failed to set image service",
  "failedToSetVideoService": "Failed to set video service",
  "failedToUpdateTechnicalGrouping": "Failed to update technical grouping: {error}",
  "failedWithError": "Failed: {error}",
  "fieldMustBeValidJson": "{field} must be valid JSON",
  "filters": "Filters",
  "file": "File",
  "fileDate": "Date",
  "fileExplorer": "File Explorer",
  "fileExplorerDesc": "Browse relay filesystem",
  "fileName": "Name",
  "fileRewindError": "File rewind: {error}",
  "fileSize": "Size",
  "fileStoreDeleted": "FileStore: deleted {n} file(s){scope}",
  "fileTooLarge": "File too large: {name} ({size}MB, max 10MB)",
  "fileTtlLabel": "Files",
  "fileType": "Type",
  "fileUploadUnavailable": "File upload not available. Drag & drop files into the chat.",
  "files": "Files",
  "filesDesc": "Conversation files",
  "filesRewindSummary": "Files: {restored} restored, {deleted} deleted",
  "filesStillUploading": "Files still uploading, please wait...",
  "filesUploadingWait": "Files still uploading, please wait...",
  "filterTriples": "Filter triples...",
  "flowActionDone": "{action} done",
  "flowConfigurationUpdated": "Flow configuration updated for {id}",
  "flowConfigureLocalService": "Configure local service",
  "flowDeployed": "Deployed: {id} ({scope})",
  "flowDeployConfirm": "Deploy flow template '{id}' to {scope} scope?",
  "flowEditParameters": "Edit flow parameters",
  "flowEditParamsMenu": "Edit params...",
  "flowGraphOpenFailed": "Unable to open flow graph: {error}",
  "flowIndependentNoDependencies": "Independent flow - no runtime dependencies.",
  "flowLoadingParameters": "Loading parameters...",
  "flowMoveToConversationScope": "Move to conversation",
  "flowMoveToPackage": "Move to package...",
  "flowMoveToPackageConfirm": "Move flow template '{id}' to package '{package}'?",
  "flowMoveToPackagePrompt": "Package name (current: {current})",
  "flowMoveToUserScope": "Move to user",
  "flowNoParameters": "No flow parameters.",
  "flowOneShotTriggers": "One-shot triggers to run",
  "flowSelectOneShotTrigger": "Select at least one one-shot trigger.",
  "flowPromoteToUser": "Promote to user",
  "flowPromotedToUser": "Flow '{id}' promoted to user scope",
  "flowPromotedToUserScope": "Flow '{id}' promoted to user scope",
  "flowRequiresConversationContext": "This flow requires a conversation context.",
  "flowRequiresUserContext": "This flow requires a user context.",
  "flowStart": "Start",
  "flowStartMenu": "Start...",
  "flowStarted": "Flow '{id}' started",
  "flowStatusHeader": "Flow {name} [{status}]:",
  "flowStop": "Stop",
  "flowStopped": "Flow '{id}' stopped",
  "flowTemplatesHeader": "Flow templates:",
  "flowTemplateDeleted": "Flow template '{id}' deleted.",
  "flowTemplateDeleteConfirm": "Delete flow template '{id}'?",
  "flowTemplateMovedToPackage": "Flow template '{id}' moved to package '{package}'.",
  "flowTemplateMovedToScope": "Flow template '{id}' moved to {scope} scope.",
  "flowTemplateMoveScopeConfirm": "Move flow template '{id}' to {scope} scope?",
  "flowUndeploy": "Undeploy",
  "flowUndeployConfirm": "Undeploy flow '{id}'?",
  "flowUndeployed": "Flow '{id}' undeployed",
  "flowViewGraph": "View graph",
  "flows": "Flows",
  "flowsHeader": "Flows:",
  "flowsRepository": "Flows Repository",
  "folderActive": "Local folder: {name}",
  "folderOpen": "Open local folder",
  "folderUnsupported": "Your browser does not support the File System Access API (use Chrome or Edge)",
  "forceStopping": "Force stopping {agent}...",
  "forkFailed": "Fork failed: {error}",
  "forkedConversation": "Forked → {id}",
  "formatLabel": "format: {format}",
  "fullscreenTitle": "Fullscreen (Escape to exit)",
  "global": "Global",
  "globalLower": "global",
  "globalOnly": "Global only",
  "globalThemeTitle": "Global chat theme",
  "groupTechnicalDisabledTitle": "Group technical details. Click to group tool calls and thinking in collapsible boxes, then reload the conversation.",
  "groupTechnicalEnabledTitle": "Technical details are grouped. Click to disable grouping and reload the conversation.",
  "viewMenuTitle": "View options",
  "viewGroupTechnical": "Group technical details",
  "viewGroupTasks": "Group task messages",
  "viewGroupDelegates": "Group delegate messages",
  "helpCallHint": "Type /help call <toolname> for detailed parameter info.",
  "helpCommandHint": "Type /help <command> for detailed documentation.",
  "hoursAgo": "{n}h ago",
  "httpErrorWithStatus": "Error {status}: {error}",
  "imagePastedFromClipboard": "Image pasted from clipboard.",
  "imageServicePreferenceClearedFor": "Image service preference cleared for {agent}.",
  "imageServiceSetFor": "Image service set to \"{service}\" for {target}.",
  "imageServicesAvailable": "Image services available:",
  "import": "Import",
  "importConversation": "Import conversation",
  "importFailed": "Import failed: {error}",
  "importSuccess": "Conversation imported successfully",
  "imported": "Imported",
  "importedAgentsCount": "Imported agents ({n})",
  "importedConversationTitle": "Imported conversation",
  "importing": "Importing...",
  "inProgress": "In Progress",
  "install": "Install",
  "installFailed": "Install failed: {error}",
  "installService": "Install Service",
  "installToolInstructions": "To install a tool, drag & drop a .py file into the chat or paste the code with:\n/install filename.py\n```python\n# your code here\n```",
  "installing": "Installing...",
  "installingToolFrom": "Installing tool from {file}...",
  "instanceAlreadyExists": "Instance \"{name}\" already exists.",
  "instanceName": "Instance name",
  "instanceNameRequired": "Instance name *",
  "instanceNameRequiredMessage": "Instance name is required.",
  "instanceParameters": "Instance parameters",
  "interruptEscape": "Interrupting {agent}... (press Escape again to force stop)",
  "interruptingAgent": "Interrupting {agent}...",
  "interruptingAgentImmediateResponse": "Interrupting {agent} — requesting immediate response...",
  "interruptingAllAgents": "Interrupting all agents...",
  "interruptingTask": "Interrupting task {task} ({agent})...",
  "intervalOptionalOverride": "Interval (optional override)",
  "invalidJsonInParameters": "Invalid JSON in parameters: {error}",
  "invalidJsonMessage": "Invalid JSON: {error}",
  "invalidScheduleDateFormat": "Invalid date format. Use YYYYMMDDHHmmss",
  "invalidate": "Invalidate",
  "invalidateTripleConfirm": "Invalidate this triple? It will be marked as ended.",
  "itemsCount": "{n} items",
  "itemsLabel": "{n} items",
  "itemsSelected": "{n} selected",
  "iterProgress": "↻ [{agent}] iter {i} · round {r}/{mr} · {t} tools",
  "iterStatus": "[{agent}] iter {i} · round {r}/{mr} · {t} tools",
  "justNow": "just now",
  "key": "Key",
  "keyRequired": "Key is required",
  "kgRequired": "Subject, predicate and object are required.",
  "kgStats": "{entities} entities, {triples} triples, {current} current",
  "kgStatsTitle": "**Knowledge Graph Stats**",
  "kgTripleAdded": "KG triple added: {subject} → {predicate} → {object}",
  "kill": "Kill",
  "killBackgroundTask": "Kill background task",
  "killed": "Killed",
  "killingContainers": "✅ Killing {n} container(s)...",
  "knowledgeGraph": "Knowledge Graph",
  "languageEn": "English",
  "languageEs": "Spanish",
  "languageFr": "French",
  "languageTitle": "Language",
  "learnFailed": "Learn failed: {error}",
  "liveSpeechStartTitle": "Speak agent messages live",
  "liveSpeechStopTitle": "Stop live speech",
  "speechInputStartTitle": "Dictate and send",
  "speechInputStopTitle": "Stop recording",
  "speechInputChooseService": "Choose speech input service",
  "limitsOptional": "Limits (optional)",
  "link": "Link",
  "linkFilesystem": "Link filesystem",
  "linkRelay": "Link relay",
  "linkSummarizer": "Link summarizer",
  "linkedAccounts": "Linked Accounts",
  "linkedAccountsHeader": "Linked accounts:",
  "linkedRelaysDefaultHint": "Linked ★ = default",
  "linkingRelay": "Linking relay {relay}...",
  "liveSpeechChooseService": "Choose speech service",
  "llmServiceRequired": "LLM Service *",
  "llmServiceRequiredMessage": "LLM Service is required.",
  "loadError": "Failed to load conversation",
  "loading": "Loading...",
  "loadingCredentials": "Loading credentials...",
  "loadingDeploymentSchema": "Loading deployment schema...",
  "loadingNode": "Loading node...",
  "loadingParameters": "Loading parameters...",
  "loadingReport": "Loading report...",
  "loadingTemplates": "Loading templates...",
  "local": "local",
  "localHostMachine": "Local (host machine)",
  "localRoot": "Local root",
  "localScreen": "local screen",
  "localScreenReady": "Local screen ready.",
  "location": "Location",
  "logTitle": "📋 Log {id}:\n{lines}",
  "loginAlreadyInProgress": "Login already in progress...",
  "loginCount": "{n} login(s)",
  "loginError": "Login error: {error}",
  "loginSuccessful": "{title} successful!",
  "loginTitle": "Login",
  "loginViaRelay": "Login via relay",
  "loginViaServer": "Login via server",
  "logout": "Logout",
  "loopNotFound": "Loop not found: {key}",
  "loopStartFailed": "Failed to start loop",
  "loopStarted": "Loop started: every {interval}s — {prompt}\nKey: {key}",
  "loopStopped": "Loop stopped: {key}",
  "manageSkillsMenu": "Manage skills...",
  "manualSchedule": "manual schedule",
  "markDone": "Mark Done",
  "matchesFound": "Found {n} match(es):",
  "maxBudget": "Max budget",
  "maxIterations": "Max Iterations",
  "maxIterationsAgentLoop": "Max iterations (agent loop)",
  "maxReschedules": "Max reschedules",
  "maxTotalTime": "Max Total Time",
  "maxTurnTime": "Max Turn Time",
  "mcpRepository": "MCP Repository",
  "mcpServers": "MCP servers",
  "mcpServersHeader": "**MCP Servers:**",
  "memories": "Memories",
  "memoriesDesc": "View agent memories",
  "memoriesFor": "Memories for {agent}",
  "memoryAdded": "Memory added (id: {id}, agent: {agent})",
  "memoryDeleteConfirm": "Delete this memory?",
  "memoryDeleted": "Memory {id} deleted.",
  "memoryIdNotFound": "Memory {id} not found.",
  "memoryNotFound": "Memory not found.",
  "memoryTextPlaceholder": "Memory text...",
  "memoryUpdated": "Memory updated.",
  "messageDeleted": "Message {index} deleted",
  "messageSentTask": "Message sent to task {task}",
  "messagesInBranch": "Messages in {branch}: {count}",
  "messagesLoaded": "{n} message(s) loaded.",
  "minutesAgo": "{n}m ago",
  "missingCredentialsJson": "Missing credentials JSON. Paste the content of .credentials.json",
  "missingItem": "{value} (missing)",
  "modelOverride": "Model override",
  "modelUpdated": "Model updated",
  "mountedInRelays": "mounted in relays",
  "modified": "Modified",
  "moreCount": "{n} more",
  "mostConnectedNodes": "Most Connected Nodes",
  "msgTargetUsage": "Usage: /msg {target} <message>",
  "msgUsage": "Usage: /msg [@agent|@t_taskid] <message> (defaults to selected agent)",
  "multipleRelaysAvailable": "Multiple relays available. Specify one:\n{relays}",
  "mute": "Mute",
  "muteAudioTitle": "Mute audio",
  "name": "Name",
  "nameRequired": "Name is required",
  "needTwoBranchesToCompare": "Need at least 2 branches to compare.",
  "neighbors": "Neighbors",
  "newChat": "+ New",
  "newConv": "New conversation started.",
  "newConversation": "New conversation",
  "newFile": "New file",
  "newFilePrompt": "New file name:",
  "newFolder": "New folder",
  "newFolderPrompt": "New folder name:",
  "newParamTitle": "New {type}",
  "newResourceTitle": "New {type}",
  "no": "No",
  "noAccountLinkFound": "No {provider} link found.",
  "noActiveDockerContainers": "No active Docker containers.",
  "noActiveLoops": "No active loops",
  "noActivePlans": "No active plans.",
  "noActivePortForwards": "No active port forwards.",
  "noActiveTerminal": "No active terminal to close.",
  "noAgentOption": "No agent",
  "noAgentSelected": "No agent selected.",
  "noAgentSelectedSelectFirst": "No agent selected. Select an agent first.",
  "noAgents": "No agents in this conversation.",
  "noAgentsAvailable": "No agents available.",
  "noAgentsDefinedUsage": "No agents defined. Use /agent create to add one.",
  "noAudioTabOpen": "No audio tab open.",
  "noBranchesToDelete": "No branches to delete (only current branch exists).",
  "noChanges": "No changes.",
  "noCommitsFound": "No commits found.",
  "noConfigurableParametersForServiceType": "No configurable parameters for this service type.",
  "noConnectedRelay": "No connected relay found.",
  "noConnectionsFound": "No connections found.",
  "noConnectionsFoundFor": "No connections found for: {query}",
  "noContainersToKill": "No containers to kill.",
  "noContext": "No context available.",
  "noConv": "No active conversation.",
  "noConversationsHint": "No conversations yet. Click + New to start.",
  "noCredentialsInPool": "No credentials in pool.",
  "noCredentialsSaved": "No credentials saved.",
  "noDeployedFlows": "No deployed flows.",
  "noDiaryEntries": "No diary entries.",
  "noDiaryEntriesFor": "No diary entries for {agent}.",
  "noDynamicToolsInstalled": "No dynamic tools installed. Use /install to add one.",
  "noFilesInConversation": "No files in this conversation.",
  "noFilesystemServices": "No filesystem services available",
  "noFlowTemplates": "No flow templates.",
  "noForwardFor": "No forward for {relay}:{port} — add it first.",
  "noImageServicesDeployed": "No image generation services deployed.",
  "noInsightsExtracted": "No insights extracted.",
  "noLinkedAccounts": "No linked accounts",
  "noLogEntriesFor": "No log entries for {id}",
  "noMatches": "No matches",
  "noMatchesFound": "No matches found.",
  "noMcpServers": "No MCP servers defined",
  "noMemoriesFound": "No memories found.",
  "noMemoriesFoundTryDifferent": "No memories found. Try a different query.",
  "noMemoriesStored": "No memories stored.",
  "noOtherBranches": "No other branches.",
  "noPrompts": "No prompts",
  "noReasonGiven": "no reason given",
  "noReasonParen": "(no reason)",
  "noRelayConnected": "No relay connected.",
  "noRelayUseCredentials": "No relay connected. Use \"Set credentials\" instead.",
  "noRelaysAvailable": "No relays available.",
  "noRelaysAvailableConnectFirst": "No relays available. Connect a relay first (PawCode or VS Code extension).",
  "noRelaysLinked": "No relays linked",
  "noRemoteFilesystemsAvailable": "No filesystem services available to link",
  "noRemoteFilesystemsLinked": "No filesystems linked",
  "noReportAvailable": "No report available.",
  "noResourcesDefinedUsage": "No resources defined. Use /agent create, /add-skill, etc.",
  "noResourcesHint": "No resources. Use [+] or /agent create, /task create",
  "noResponsesToCopy": "No responses to copy.",
  "noScheduleToCancel": "No schedule to cancel.",
  "noScheduledRechecks": "No scheduled rechecks for this conversation.",
  "noScheduledTasks": "No scheduled tasks.",
  "noServiceTypesAvailable": "No service types available.",
  "noServicesInstalled": "No services installed",
  "noServicesInstalledUsage": "No services installed. Use /service install <type> <name> [key=val,...] to add one.",
  "noSkills": "No skills.",
  "noSkillsAvailableCreateHint": "No skills available. Create skills via /skill or manage_resource.",
  "noSkillsCreateFirst": "No skills defined. Create one first with /add-skill.",
  "noSkillsDefined": "No skills defined",
  "noSkillsUsage": "No skills defined. Use /add-skill <name> <prompt>",
  "noSummarizerEffective": "No summarizer linked",
  "noSummarizerServices": "No summarizer services available",
  "noTaskDefinitions": "No task definitions",
  "noTaskDefinitionsOrRunning": "No task definitions or running tasks.",
  "noTaskInstancesForDefinition": "No task instances for definition \"{name}\"",
  "noTasksRunning": "No tasks running",
  "noThemes": "No themes",
  "noTokenUsageRecorded": "No token usage recorded yet.",
  "noToolNameFound": "No tool name found",
  "noTriplesFound": "No triples found.",
  "noUsageDataFound": "No usage data found.",
  "noVideoServicesDeployed": "No video generation services deployed.",
  "noVoices": "No voice clones. Use clone_voice to register one.",
  "none": "None",
  "noneSelected": "none selected",
  "notSet": "Not set",
  "object": "Object",
  "ok": "OK",
  "onlyResponsesAvailable": "Only {n} responses available.",
  "open": "Open",
  "openingCCInteractiveTerminal": "Opening Claude Code interactive tmux for {agent}...",
  "openingTerminalOn": "Opening terminal on {relay}{mode}...",
  "optionalDescription": "Optional description",
  "overdue": "overdue",
  "overrideConversationDefaultsFor": "Override conversation defaults for @{agent}",
  "pageTitle": "PawFlow Agent Chat",
  "parameters": "Parameters",
  "parametersMustBeValidJson": "Parameters must be valid JSON",
  "parseErrorHelpCall": "Parse error: {error}\nType /help call <toolname> for parameter info.",
  "pasteCredentialsJson": "Paste .credentials.json content here...",
  "pasteFailed": "Paste failed: {error}",
  "pasteHere": "Paste here ({n})",
  "pause": "Pause",
  "pendingAttachmentsCleared": "Pending attachments cleared.",
  "permissionApproveEdits": "Approve edits",
  "permissionAuto": "Auto",
  "permissionDefault": "Default",
  "permissionModeTitle": "Tool permission mode",
  "permissionReadOnly": "Read-only",
  "placeholder": "Type a message... (Enter to send, Shift+Enter for newline)",
  "placeholderDisabled": "Create a conversation first (click + New)",
  "plan": "plan",
  "planApproved": "Plan approved",
  "planAssignedTo": "Plan assigned to {agent}{steps}",
  "planCancelled": "Plan cancelled",
  "planCreated": "Plan created: {title}",
  "planDeleted": "Plan deleted",
  "planStepsDone": "{done}/{total} done",
  "planTitle": "Plan",
  "planTitleAndStepRequired": "Title and at least one step are required.",
  "planTitlePlaceholder": "Plan title",
  "plans": "Plans",
  "plansDesc": "View active plans",
  "plansHeader": "**Plans:**",
  "platform": "Platform",
  "portForwardAdded": "Port forward added: {relay}:{port} → {url}",
  "portForwardOpenUsage": "Usage: /port-forward open <relay_id> <port>",
  "portForwardRemoveUsage": "Usage: /port-forward remove <relay_id> <ext_port>",
  "portForwardRemoved": "Port forward removed.",
  "portForwardUsage": "Usage: /port-forward <add|remove|list|open> [relay_id] [port] [ext_port]",
  "portPrompt": "Port to forward from {relay}:",
  "predicate": "Predicate",
  "preview": "Preview",
  "previewReferenceAudio": "Preview reference audio",
  "priority": "Priority",
  "primaryAgent": "Primary agent",
  "processExited": "Process exited",
  "projectGraph": "Project Graph",
  "projectGraphBuildFailed": "Build failed: {error}",
  "projectGraphDesc": "Build / browse the codebase graph",
  "projectGraphEmptyBuildHint": "No project graph built yet. Click Build to index the codebase.",
  "projectGraphErrorStatus": "Error — {error}",
  "projectGraphMissingUseBuild": "No project graph built yet. Use /graph build first.",
  "projectGraphNodeLoadFailed": "Failed to load node: {error}",
  "projectGraphQueryFailed": "Query failed: {error}",
  "projectGraphQueryHeader": "Project graph query \"{question}\" ({n} edges):",
  "projectGraphReportFailed": "Report failed: {error}",
  "projectGraphReportLoadFailed": "Failed to load report: {error}",
  "projectGraphSkipped": "Skipped — {reason}",
  "promptLibraryTitle": "Prompt library",
  "promptPaste": "Paste",
  "promptsListFailed": "Failed to list prompts: {error}",
  "promptsRepository": "Prompts Repository",
  "promote": "Promote",
  "providerCredentials": "{provider} credentials",
  "providerVoiceFreed": "provider voice_id freed",
  "ready": "Ready",
  "rebuildFailed": "Rebuild failed: {error}",
  "rebuilding": "Rebuilding context from full conversation...",
  "rebuildingAgent": "Rebuilding ({agent})",
  "rebuildingClean": "Setting context = full conversation (no compaction)...",
  "rebuildingShort": "Rebuilding",
  "rebuilt": "Context rebuilt: {action} ({before} → {after} messages, ~{tokens} tokens)",
  "rebuiltClean": "Context set to full conversation: {messages} messages, ~{tokens} tokens.",
  "recheck": "recheck",
  "reconnecting": "Reconnecting...",
  "refAudioPurged": "ref audio purged",
  "refresh": "Refresh",
  "refreshDesc": "Reload conversation",
  "refreshFromDisk": "Refresh from disk",
  "refreshing": "Refreshing...",
  "rejectStep": "Reject step",
  "rejectionReasonPrompt": "Reason for rejection:",
  "relayBrowserAuthorizeHint": "A browser window should open on the relay machine. Authorize there.",
  "relayId": "Relay ID",
  "relaySupportsBothModes": "Relay {relay} supports both modes.",
  "relayTitle": "Relay: {id}",
  "relays": "Relays",
  "reloadFromDisk": "Reload from disk",
  "remoteFilesystems": "Filesystem",
  "remove": "Remove",
  "removeFromConversation": "Remove from conversation",
  "removeLastAgentConfirm": "Remove the last agent from this conversation?",
  "removeVerifier": "Remove verifier",
  "removedList": "Removed: {items}",
  "rename": "Rename",
  "renameFailed": "Rename failed: {error}",
  "renameVoiceClone": "Rename voice clone",
  "renameVoicePrompt": "Rename voice clone \"{name}\" to:",
  "renamedTo": "Renamed to: {title}",
  "readMessage": "Read this message",
  "reply": "Reply",
  "reset": "Reset",
  "resetToPending": "Reset to Pending",
  "resourceActivated": "Activated {type} \"{name}\" in this conversation.",
  "resourceCopiedToScope": "{type} '{name}' copied to {scope}.",
  "resourceCreated": "{type} '{name}' created.",
  "resourceDeleteConfirm": "Delete {type} '{name}' from {scope}?",
  "resourceDeleted": "{type} '{name}' deleted.",
  "resourceDeactivated": "Deactivated {type} \"{name}\".",
  "resourceUpdated": "{type} '{name}' updated.",
  "resources": "Resources",
  "restart": "Restart",
  "restartAudioTitle": "Restart audio stream",
  "restartCliTitle": "Restart {cli} (kill warm session)",
  "restartFromHere": "Restart from here",
  "restartFromHereConfirm": "Restart the conversation from this message? Messages after it and all agent contexts will be deleted.",
  "restartEmpty": "Context cleared — fresh start (system prompt only).",
  "restartFrom": "Context restarted — keeping last {n} messages.",
  "resultsCount": "{n} results",
  "resume": "Resume",
  "resumeUsage": "Usage: /resume @<agent|ALL>",
  "resumed": "Conversation summarized ({n} messages → {len} chars). Next message starts from the summary.",
  "resuming": "Summarizing conversation to ~{n} tokens...",
  "rewindFilesRiskWarning": "Risky: will attempt to restore files modified by agents on the relay. May fail if files were changed externally.",
  "risk.high": "High",
  "risk.low": "Low",
  "risk.medium": "Medium",
  "rollback": "Rollback",
  "rollbackConversation": "Rollback Conversation",
  "rolledBackTo": "Rolled back to {hash}",
  "rollingBackTo": "Rolling back to {hash}...",
  "runInBackground": "Run in background",
  "runningInBackground": "Running in background",
  "saveCredentials": "Save Credentials",
  "saved": "Saved!",
  "saving": "Saving...",
  "scheduleAdded": "Schedule added: {date}",
  "scheduleCancelled": "Schedule cancelled.",
  "scheduledRechecksHeader": "Scheduled rechecks:",
  "scheduledTasks": "Scheduled Tasks",
  "scheduledTasksDesc": "View scheduled checks",
  "scope": "Scope",
  "scrollBottomTitle": "Scroll to bottom",
  "scrollTopTitle": "Scroll to top",
  "searchNodesEdges": "Search nodes/edges...",
  "searchPlaceholder": "Search...",
  "searchResults": "Search results",
  "searching": "Searching...",
  "secret": "secret",
  "secretAddUsage": "Usage: /add-secret &lt;name&gt; &lt;value&gt;",
  "secretAdded": "Secret \"{name}\" stored securely. Use ${{ref}} in flows, or get_secret(\"{short}\") in scripts.",
  "secretListEmpty": "No secrets stored.",
  "secretListTitle": "Your secrets:",
  "secrets": "Secrets",
  "select": "Select",
  "selectAgent": "Select agent",
  "selectAgentConfigure": "Select an agent to configure",
  "selectAgentDetails": "Select an agent to see details",
  "selectAgentOverride": "Select an agent to configure overrides.",
  "selectDefinitionAddAgents": "Select a definition to add agents",
  "selectDefinitionFirst": "Select a definition first.",
  "selectDefinitionOption": "Select definition...",
  "selectVerifierAgent": "Select verifier agent",
  "selectedFor": "selected for: {agents}",
  "send": "Send",
  "sending": "Sending...",
  "serverOwner": "server",
  "serviceCategory.3d": "3D",
  "serviceCategory.ai": "AI and LLM",
  "serviceCategory.audio": "Audio",
  "serviceCategory.auth": "Authentication",
  "serviceCategory.automation": "Automation",
  "serviceCategory.cache": "Cache",
  "serviceCategory.data": "Data",
  "serviceCategory.filesystem": "Filesystem",
  "serviceCategory.image": "Image",
  "serviceCategory.messaging": "Messaging",
  "serviceCategory.network": "Network",
  "serviceCategory.other": "Other",
  "serviceCategory.security": "Security",
  "serviceCategory.system": "System",
  "serviceCategory.try-on": "Virtual try-on",
  "serviceCategory.upscale": "Upscale",
  "serviceCategory.video": "Video",
  "serviceCategory.voice": "Voice",
  "serviceDeleted": "Service '{id}' deleted.",
  "serviceDisabled": "Service '{id}' disabled.",
  "serviceEnabled": "Service '{id}' enabled.",
  "serviceInstalled": "Service '{id}' installed ({type}).",
  "serviceInstalledSuccessfully": "Service '{service}' installed successfully.",
  "serviceNameRequired": "Service name is required",
  "serviceUninstalled": "Service '{id}' uninstalled.",
  "serviceUpdated": "Service '{service}' updated.",
  "services": "Services",
  "sessionExpired": "Session expired. Please log in again.",
  "setDefaultRelay": "Set as default relay",
  "setPrimaryAgent": "Set as primary agent",
  "setVerifier": "Set verifier...",
  "setVerifierTitle": "Set Verifier ({target})",
  "setnameUsage": "Usage: /setname @<agent> [nickname]  (omit nickname to reset)",
  "settingDefaultRelay": "Setting default relay to {relay}...",
  "showHide": "Show/hide",
  "skillAddTitle": "Add skill",
  "skillAssignTitle": "Assign skill “{skill}” to agent",
  "skillImportBranch": "branch",
  "skillCreateMode": "Create",
  "skillImportButton": "Import skill",
  "skillImportFoundPaths": "{n} importable skill path(s) found",
  "skillImportImported": "Imported skill '{name}'.",
  "skillImportMode": "Import",
  "skillImportNoPaths": "No SKILL.md file found under this path.",
  "skillImportPathPlaceholder": "Subpath (optional)",
  "skillImportRepoPlaceholder": "owner/repo or https://github.com/owner/repo",
  "skillImportRepoRequired": "Repository is required.",
  "skillImportResolve": "Resolve",
  "skillImportResolveFirst": "Resolve a repository to list importable skill folders.",
  "skillImportReview": "Review",
  "skillImportSelectedPathRequired": "Select a skill path first.",
  "skillImportSelectedRef": "selected",
  "skillImportSourceHelp": "Import a GitHub Agent Skill directory that contains SKILL.md. Slash command equivalent: /skill import <ref>.",
  "skillImportTag": "tag",
  "skillLoadFailed": "Failed to load skill: {error}",
  "skillNameInvalid": "Skill name must be lowercase letters, digits and single hyphens, at most 64 characters, and must not contain \"anthropic\" or \"claude\".",
  "skillReviewFinalWord": "You have the final word. Review the findings above and decide.",
  "skillReviewProceedAnyway": "Proceed anyway",
  "skillReviewRequiresConfirmation": "Skill review requires confirmation.",
  "skillReviewRisk": "Risk: {risk}",
  "skillReviewTitle": "Skill review",
  "skills": "Skills",
  "skillsAssignedTo": "Skills assigned to **{agent}**:",
  "skillsHeader": "Skills:",
  "skillsRepository": "Skills Repository",
  "skip": "Skip",
  "startLogin": "Start login",
  "starting": "Starting...",
  "startingAudio": "Starting audio on {relay}...",
  "startingClaudeLogin": "Starting Claude Code login for {service}... (container starting, please wait)",
  "startingCodeServer": "Starting code-server on {relay}{mode}...",
  "startingContainer": "Starting container...",
  "startingDesktop": "Starting {target} on {relay}...",
  "startingRelayLogin": "Starting {label} login via relay — authorize in the browser...",
  "status": "Status",
  "stepApproved": "Step {n} approved",
  "stepLabel": "step {n}",
  "stepLabelTitle": "Step {n}",
  "stepRangeOptional": "Step range (optional)",
  "stepRangePlaceholder": "e.g. 1-3, remaining, or empty for all",
  "stepRejected": "Step {n} rejected",
  "stepsOnePerLine": "Steps (one per line)",
  "stepsPlaceholder": "Step 1 description\nStep 2 description\nStep 3 description",
  "stepsSuffix": " (steps {steps})",
  "stop": "Stop",
  "stopTitle": "Interrupt (force answer)",
  "stoppingDesktop": "Stopping desktop on {relay}...",
  "stoppingTask": "Stopping task {task} ({agent})...",
  "storedAs": "Stored as: {filename}\nURL: {url}",
  "streaming": "Streaming...",
  "streamingFromRelay": "Streaming from relay",
  "subAgentDone": "[{agent}] finished ({dur}s, {tok} tokens)",
  "subAgentStarted": "Sub-agent [{agent}] started",
  "subject": "Subject",
  "summarizer": "Summarizer",
  "summarizing": "Summarizing",
  "summarizingAgent": "Summarizing ({agent})",
  "switchBranch": "Switch Branch",
  "switchedToBranch": "Switched to branch: {name}",
  "switchingToForkedConversation": "Switching to forked conversation...",
  "tagNamePrompt": "Tag name:",
  "taggedConversation": "Tagged: {name}",
  "tags": "Tags",
  "taskActionDone": "Task {id} {action}d.",
  "taskActionFor": "Task {action} for {target}.",
  "taskApprovedBy": "Task for {agent} approved by {verifier}{reason}",
  "taskAssigned": "Task assigned.",
  "taskAssignedTo": "Task assigned to {agent}{verifier}: {task}",
  "taskBudgetLimit": "budget: ${budget} (used: ${used})",
  "taskCompleteFor": "Task complete ({agent}): {result}",
  "taskCount": "{count} tasks",
  "taskDefLabel": "def: {name}",
  "taskDefinitionCreated": "Task definition '{name}' created.",
  "taskDefinitionDeleted": "Task definition '{name}' deleted.",
  "taskDetails": "Task: {id}\nAgent: {agent}\nStatus: {status}\nIterations: {iterations}/{max}\nDefinition: {definition}\nPrompt: {prompt}",
  "taskInstanceDeleted": "Task instance '{name}' deleted.",
  "taskInstancesTitle": "📜 Instances of \"{name}\":\n{lines}",
  "taskIterLabel": "iter {iter}",
  "taskLastLabel": "Last: {result}",
  "taskLibraryHeader": "Library:",
  "taskLimitsLabel": "Limits: {limits}",
  "taskLimitsUpdated": "Task limits updated: {changes}",
  "taskLogTitle": "📋 Task log {id}:\n{lines}",
  "taskNotFound": "Task not found: {id}",
  "taskRejectedBy": "Task for {agent} rejected by {verifier}{reason}",
  "taskRescheduleLimit": "reschedules: {count}/{max}",
  "taskRunningHeader": "Running:",
  "taskTotalLimit": "total: {seconds}s",
  "taskTurnLimit": "turn: {seconds}s",
  "taskUpdatedFields": "Task updated: {fields}",
  "taskVerifierLabel": "verifier: {verifier}",
  "taskVerifierSuffix": " (verifier: {verifier})",
  "tasks": "Tasks",
  "tasksRepository": "Tasks Repository",
  "technicalDetailsEventPlural": "events",
  "technicalDetailsEventSingular": "event",
  "technicalDetailsSummary": "Technical details · {count} {eventLabel}",
  "template": "Template",
  "templatesLoadFailed": "Error loading templates: {error}",
  "terminal": "Terminal",
  "terminalClosed": "Terminal closed.",
  "terminalDesc": "Open interactive terminal on relay",
  "terminalMissingToken": "Warning: terminal opened but server did not return a capability token",
  "terminalNoRelayUsage": "No connected relay found. Usage: /terminal <relay_name>",
  "terminalTabTitle": "Terminal {n}",
  "textPastedFromClipboard": "Text pasted from clipboard.",
  "themeApplyFailed": "Theme apply failed: {error}",
  "themeCreated": "Theme created.",
  "themeDeleted": "Theme deleted.",
  "themeLoadFailed": "Theme load failed: {error}",
  "themesRepository": "Themes Repository",
  "thinking": "Thinking",
  "thinkingRound": "Thinking (round {round})",
  "thinkingWait": "Thinking ({sec}s)",
  "thought": "Thought",
  "thoughtDisabled": "Auto-conversation disabled for {agent}.",
  "thoughtEnabled": "Auto-conversation enabled for {agent}: {freq} (next in ~{delay}s)",
  "thoughtFiring": "[{agent}] thinking...",
  "thoughtFor": "Thought for {sec}s",
  "thoughtNoConv": "No active conversation.",
  "thoughtScheduled": "[{agent}] next auto-message in ~{delay}s",
  "thoughtStatus": "Auto-conversation for {agent}: enabled — {freq}, next in ~{delay}s",
  "thoughtStatusOff": "Auto-conversation for {agent}: disabled",
  "thoughtTriggered": "Auto-conversation triggered for {agent}.",
  "title": "Title",
  "titleOptional": "Title (optional)",
  "tokenInOut": "{in} in / {out} out",
  "tokenInOutCalls": "{in} in / {out} out ({calls} calls)",
  "tokenInOutCost": "{in} in / {out} out — ${cost}",
  "tokenUsageHeader": "Token usage:",
  "tool": "tool",
  "toolCreated": "Tool '{name}' created.",
  "toolInstalled": "Tool **{tool}** installed: {description}",
  "toolNoArguments": "No arguments",
  "toolNotFound": "Tool not found: {tool}",
  "toolNotFoundAvailable": "Tool \"{tool}\" not found. Available tools:",
  "toolResult": "✅ {tool}: {result}",
  "toolUninstalled": "Tool '{tool}' uninstalled.",
  "tool_approval.allow_once": "Allow once",
  "tool_approval.allow_session": "Allow for session",
  "tool_approval.always_allow": "Always allow",
  "tool_approval.deny": "Deny",
  "tool_approval.title": "Tool approval required",
  "tools": "Tools",
  "toolsCommaSeparated": "Tools (comma-separated)",
  "toolsMcp": "Tools / MCP",
  "toolsMcpAvailability": "Tools / MCP availability",
  "toolsMcpAvailabilityUpdated": "Tools / MCP availability updated.",
  "toolsMcpDesc": "Conversation tool availability",
  "toolsMcpOverrideFor": "Tools / MCP override for @{agent}",
  "toolsMcpOverrideMenu": "Tools / MCP override...",
  "toolsRepository": "Tools Repository",
  "agentHooksRepository": "Agent Hooks Repository",
  "agentHooksUpdated": "Agent hooks updated.",
  "noAgentHooks": "No agent hooks defined",
  "totalTime": "Total time",
  "totalTokenInOut": "Total: {in} in / {out} out",
  "triples": "Triples",
  "ttl1h": "1 hour",
  "ttl24h": "24 hours",
  "ttl6h": "6 hours",
  "ttl7d": "7 days",
  "ttlLabel": "Expiry",
  "ttlNone": "Unlimited",
  "turnTime": "Turn time",
  "type": "Type",
  "unknown": "(unknown)",
  "unknownAccount": "(unknown)",
  "unknownCommandHelp": "Unknown command: {command}. Type /help for available commands.",
  "unknownError": "Unknown error",
  "unknownRelaySubcommand": "Unknown /relay subcommand: {sub}. Use: status, list, link, unlink, default, local",
  "unlink": "Unlink",
  "unlinkingRelay": "Unlinking relay {relay}...",
  "unmapped": "unmapped",
  "unsupportedImportFormat": "Unsupported format. Use .zip (PawFlow) or .jsonl (Claude Code)",
  "upload": "Upload",
  "uploadFailed": "Upload failed: {error}",
  "uploadFailedFor": "Upload failed for {file}: {error}",
  "uploading": "Uploading...",
  "uploadingFile": "Uploading {file}…",
  "usage": "Usage",
  "usageBatch": "Usage: /batch <instruction> [--files <glob>]",
  "usageDeleteConversation": "Usage: /delete <conversation_id>",
  "usageDeleteMessage": "Usage: /delete-msg <index>",
  "usageDeprecatedUseCost": "/usage is deprecated. Use /cost <agent|ALL> instead.",
  "usageGraph": "Usage: /graph [panel | build | report | query <question>]",
  "usageGraphQuery": "Usage: /graph query <question>",
  "usageLine": "Usage: {usage}",
  "usageLoop": "Usage: /loop <interval> <prompt>",
  "usageLoopInterval": "Usage: /loop <interval> <prompt>\nInterval: 5m, 30s, 2h, 2-3/h, 1/30s, 6/1m (min 5s)",
  "usageLoopStop": "Usage: /loop stop <key>",
  "usagePlanSubcommand": "Usage: /plan {subcommand} <plan_id>",
  "usageRename": "Usage: /rename <new title>",
  "usageRun": "Usage: /run <command>",
  "usageSearch": "Usage: /search <query>",
  "useGlobalTheme": "Use global theme",
  "user": "User",
  "userTotalAllConversations": "User total (all conversations):",
  "usingTool": "Using {tool}...",
  "valid": "valid",
  "validFrom": "Valid from",
  "value": "Value",
  "variable": "variable",
  "variableAddUsage": "Usage: /add-variable &lt;name&gt; &lt;value&gt;",
  "variableAdded": "Variable \"{name}\" stored. Use ${{ref}} in flows, or get_variable(\"{short}\") in scripts.",
  "variableListEmpty": "No variables stored.",
  "variableListTitle": "Your variables:",
  "variables": "Variables",
  "variablesKeyValue": "Variables (key=value)",
  "verifierRemovedFor": "Verifier removed for {target}",
  "verifierSetFor": "Verifier set to {verifier} for {target}",
  "videoServicePreferenceClearedFor": "Video service preference cleared for {agent}.",
  "videoServiceSetFor": "Video service set to \"{service}\" for {target}.",
  "videoServicesAvailable": "Video services available:",
  "view": "View",
  "viewConfigMenu": "View config...",
  "viewDefinitionMenu": "View definition...",
  "viewDetails": "View Details",
  "viewLogMenu": "View log",
  "viewNode": "View node",
  "viewServiceTitle": "View Service: ",
  "viewWithEllipsis": "View...",
  "vmKillUsage": "Usage: /vm kill <container_id or name>",
  "vmListHint": "Use `/vm kill <id>` to stop a container.",
  "vmUsage": "Usage: /vm <list|kill|killall> [container_id]\n  /vm list              — List all PawFlow Docker containers\n  /vm kill <id>         — Kill a specific container\n  /vm killall           — Kill all PawFlow containers",
  "voiceDeleted": "Voice \"{name}\" deleted{details}",
  "voiceNameUnchanged": "Voice name unchanged.",
  "voiceRenamed": "Voice renamed: \"{old}\" → \"{name}\".",
  "voicesRepository": "Voices Repository",
  "vsCode": "VS Code",
  "vsCodeDesc": "Open code-server editor on relay",
  "vsCodeTabTitle": "VS Code ({relay})",
  "waitingAuthorization": "Waiting for authorization...",
  "waitingForAuthorization": "Waiting for authorization...",
  "watchUnavailableWeb": "/watch is not available in the web UI. Use the CLI for file watching.",
  "welcome": "Welcome! Type a message to start chatting.",
  "working": "Working",
  "yes": "Yes",
  "yourServicesHeader": "**Your services:**",
  "yourSkillsHeader": "**Your skills:**",
  "zipError": "Zip error: {error}",
  "zipping": "Zipping...",
  "capabilities": "Capabilities",
  "force": "Force",
  "inspect": "Inspect",
  "installing": "Installing...",
  "noObjects": "No objects.",
  "noPfpPackagesInstalled": "No packages installed.",
  "noPfpRegistries": "No registries configured.",
  "none": "None",
  "objects": "Objects",
  "optionalSha256": "Optional SHA-256",
  "pfpAllowedServices": "Allowed services",
  "pfpAllowedTools": "Allowed tools",
  "pfpBlockingDependents": "Blocking dependents",
  "pfpDependencies": "Dependencies",
  "pfpFilterAdd": "Add",
  "pfpFilterAll": "All",
  "pfpFilterRemove": "Remove",
  "pfpFilterUnchanged": "Same",
  "pfpFilterUpdate": "Update",
  "pfpInstallComplete": "Package {package} installed.",
  "pfpInstallPackage": "Install package",
  "pfpNotSelected": "not selected",
  "pfpPackages": "Packages",
  "pfpPathOrRef": "Package path or registry ref",
  "pfpPathRequired": "Package path or registry ref is required.",
  "pfpProvides": "Provides",
  "pfpRegistries": "Registries",
  "pfpRegistryUntrustedWarning": "Registry not marked trusted. Inspect provenance and pin SHA before installing.",
  "pfpRegistrySearch": "Registry search",
  "pfpRegistrySearchPlaceholder": "Search packages...",
  "pfpRuntimeObjects": "Runtime objects",
  "pfpSecretBindings": "Secret bindings",
  "pfpSelected": "selected",
  "pfpSecrets": "Secrets",
  "pfpUninstallBlockedBy": "Uninstall blocked by dependent packages: {packages}",
  "pfpUninstallComplete": "Package {package} uninstalled.",
  "pfpUninstallConfirm": "Uninstall package {package} from {scope}?",
  "pfpUninstallHelp": "Regular uninstall refuses to remove packages that other packages depend on. Force removes it anyway.",
  "pfpTrustPolicyTrusted": "User trusted registry",
  "pfpTrustPolicyUntrusted": "Untrusted registry",
  "pfpUpdateDiff": "Update diff",
  "replace": "Replace",
  "registryNameOptional": "Name (optional)",
  "registryUrl": "Registry URL",
  "registryUrlRequired": "Registry URL is required.",
  "search": "Search",
  "selectAtLeastOneObject": "Select at least one object.",
  "developerKey": "Developer key",
  "sha256": "SHA-256",
  "sourceUrl": "Source URL",
  "storedSecretKey": "Stored secret key",
  "trusted": "Trusted",
  "trustPolicy": "Trust policy",
  "uninstall": "Uninstall",
  "update": "Update",
  "verified": "Verified"
}
