{
  "ai-chat-ui.show-settings": "Show AI Settings",
  "ai.executePlanWithCoder": "Execute Current Plan with Coder",
  "aiConfiguration:open": "Open AI Configuration view",
  "aiConfiguration:openTools": "Open AI Tools Configuration",
  "aiHistory:clear": "AI History: Clear History",
  "aiHistory:open": "Open AI History view",
  "aiHistory:sortChronologically": "AI History: Sort chronologically",
  "aiHistory:sortReverseChronologically": "AI History: Sort reverse chronologically",
  "aiHistory:toggleCompact": "AI History: Toggle compact view",
  "aiHistory:toggleHideNewlines": "AI History: Stop interpreting newlines",
  "aiHistory:toggleRaw": "AI History: Toggle raw view",
  "aiHistory:toggleRenderNewlines": "AI History: Interpret newlines",
  "debug.breakpoint.editCondition": "Edit Condition...",
  "debug.breakpoint.removeSelected": "Remove Selected Breakpoints",
  "debug.breakpoint.toggleEnabled": "Toggle Enable Breakpoints",
  "notebook.cell.changeToCode": "Change Cell to Code",
  "notebook.cell.changeToMarkdown": "Change Cell to Markdown",
  "notebook.cell.insertMarkdownCellAbove": "Insert Markdown Cell Above",
  "notebook.cell.insertMarkdownCellBelow": "Insert Markdown Cell Below",
  "terminal:new:profile": "Create New Integrated Terminal from a Profile",
  "terminal:profile:default": "Choose the default Terminal Profile",
  "theia": {
    "ai": {
      "agents": {
        "capabilityOverrides": {
          "mdDescription": "User overrides for template-based capabilities. Keys are capability fragment IDs, values are enabled (true) or disabled (false).",
          "title": "Capability Overrides"
        },
        "completionNotification": {
          "mdDescription": "Notification behavior when this agent needs your attention, i.e. it completed a task or requests your input.                     If not set, the global default notification setting will be used.\n                    - `os-notification`: Show OS/system notifications\n                    - `message`: Show notifications in the status bar/message area\n                    - `blink`: Blink or highlight the UI\n                    - `off`: Disable notifications for this agent",
          "title": "Notification"
        },
        "enable": {
          "mdDescription": "Specifies whether the agent should be enabled (true) or disabled (false).",
          "title": "Enable Agent"
        },
        "genericCapabilitySelections": {
          "agentDelegation": "Selected agent IDs for delegation",
          "functions": "Selected function IDs",
          "mcpFunctions": "Selected MCP function IDs",
          "mdDescription": "User selections for generic capabilities such as skills, functions, and MCP tools.",
          "promptFragments": "Selected prompt fragment IDs",
          "skills": "Selected skill IDs",
          "title": "Generic Capability Selections",
          "variables": "Selected variable names"
        },
        "languageModelRequirements": {
          "identifier": {
            "mdDescription": "The identifier of the language model to be used."
          },
          "mdDescription": "Specifies the used language models for this agent.",
          "purpose": {
            "mdDescription": "The purpose for which this language model is used.",
            "title": "Purpose"
          },
          "title": "Language Model Requirements"
        },
        "mdDescription": "Configure agent settings such as enabling or disabling specific agents, configuring prompts and         selecting LLMs.",
        "selectedVariants": {
          "mdDescription": "Specifies the currently selected prompt variants for this agent.",
          "title": "Selected Variants"
        },
        "serverToolSelections": {
          "mdDescription": "User selections for provider server tools, keyed by model vendor. Each value holds the enabled server tool ids for that vendor.",
          "title": "Server Tool Selections"
        },
        "showInChat": {
          "mdDescription": "Specifies whether the agent should be shown in the chat UI (true) or hidden (false).",
          "title": "Show in Chat"
        },
        "title": "Agent Settings"
      },
      "anthropic": {
        "apiKey": {
          "description": "Enter an API Key of your official Anthropic Account. **Please note:** By using this preference the Anthropic API key will be stored in clear text            on the machine running Theia. Use the environment variable `ANTHROPIC_API_KEY` to set the key securely."
        },
        "compaction": {
          "default": "Follow the global chat server-side compaction setting.",
          "description": "Override provider-native server-side compaction for Anthropic models. \"default\" follows the global chat setting ({0}). When effectively enabled, the Anthropic Beta Messages API is used so the provider can summarize older turns once the conversation grows past its threshold.",
          "disabled": "Never request server-side compaction for Anthropic models.",
          "enabled": "Always request server-side compaction for Anthropic models."
        },
        "compactionTokenThreshold": {
          "description": "Override the global input-token threshold for server-side compaction for Anthropic models. When unset, the global setting or provider default applies. If set, the value must be at least 50,000 tokens."
        },
        "customEndpoints": {
          "apiKey": {
            "title": "Either the key to access the API served at the given url or `true` to use the global Anthropic API key"
          },
          "enableStreaming": {
            "title": "Indicates whether the streaming API shall be used. `true` by default."
          },
          "id": {
            "title": "A unique identifier which is used in the UI to identify the custom model"
          },
          "maxRetries": {
            "title": "Maximum number of retries when a request fails. 3 by default"
          },
          "mdDescription": "Integrate custom models compatible with the Anthropic API. The required attributes are `model` and `url`.            \n            Optionally, you can            \n            - specify a unique `id` to identify the custom model in the UI. If none is given `model` will be used as `id`.            \n            - provide an `apiKey` to access the API served at the given url. Use `true` to indicate the use of the global anthropic API key.            \n            - specify `enableStreaming: false` to indicate that streaming shall not be used.            \n            - specify `useCaching: false` to indicate that prompt caching shall not be used.            \n            - specify `maxRetries: <number>` to indicate the maximum number of retries when a request fails. 3 by default.            \n            Reasoning capabilities and the maximum output token limit are derived from the endpoint's `/v1/models` response.",
          "modelId": {
            "title": "Model ID"
          },
          "url": {
            "title": "The Anthropic API compatible endpoint where the model is hosted"
          },
          "useCaching": {
            "title": "Indicates whether the model supports prompt caching. `true` by default"
          }
        },
        "models": {
          "description": "Official Anthropic models to use"
        }
      },
      "chat": {
        "agent": {
          "architect": "Architect",
          "coder": "Coder",
          "universal": "Universal"
        },
        "app-tester": {
          "description": "This agent tests your application user interface to verify user-specified test scenarios through browser automation. It can automate testing workflows and provide detailed feedback on application functionality."
        },
        "applySuggestion": "Apply suggestion",
        "bypassModelRequirement": {
          "description": "Bypass the language model requirement check. Enable this if you are using external agents (e.g., Claude Code) that do not require Theia language models."
        },
        "category": "AI",
        "changeSetDefaultTitle": "Suggested Changes",
        "changeSetFileDiffUriLabel": "AI Changes: {0}",
        "chatAgentsVariable": {
          "description": "Returns the list of chat agents available in the system"
        },
        "chatSessionNamingAgent": {
          "description": "Agent for generating chat session names",
          "vars": {
            "conversation": {
              "description": "The content of the chat conversation."
            },
            "listOfSessionNames": {
              "description": "The list of existing session names."
            }
          }
        },
        "chatSessionSummaryAgent": {
          "description": "Agent for generating chat session summaries."
        },
        "clipboardSeparator": "clipboard",
        "confirmApplySuggestion": "The file {0} has changed since this suggestion was created. Are you certain you wish to apply the change?",
        "confirmRevertSuggestion": "The file {0} has changed since this suggestion was created. Are you certain you wish to revert the change?",
        "couldNotFindMatchingLM": "Couldn't find a matching language model. Please check your setup!",
        "couldNotFindReadyLMforAgent": "Couldn't find a ready language model for agent {0}. Please check your setup!",
        "customAgents": {
          "migratePrompt": {
            "message": "Your custom agents still use the older `customAgents.yml` format. We recommend migrating them to the new per-agent format (`agents/<id>/agent.md`), which {0} uses going forward. Each agent gets its own file next to your `customAgents.yml`, and the original is kept as a `customAgents.yml.bak` backup."
          },
          "migrationResult": {
            "empty": "Custom-agent migration: nothing to migrate."
          },
          "rerunMigration": "Re-run custom-agent migration"
        },
        "defaultAgent": {
          "description": "Optional: <agent-name> of the Chat Agent that shall be invoked, if no agent is explicitly mentioned with @<agent-name> in the user query.         If no Default Agent is configured, Theia´s defaults will be applied."
        },
        "defaultToolConfirmation": {
          "description": "Default confirmation behavior used for tools that do not have a tool-specific entry under \"ai-features.chat.toolConfirmation\". Tools that explicitly require confirmation before being auto-approved always default to \"confirm\" regardless of this setting."
        },
        "fromClipboard": "From Clipboard",
        "fromClipboardDescription": "Paste image from clipboard",
        "imageContextVariable": {
          "args": {
            "data": {
              "description": "The image data in base64."
            },
            "mimeType": {
              "description": "The mimetype of the image."
            },
            "name": {
              "description": "The name of the image file if available."
            },
            "wsRelativePath": {
              "description": "The workspace-relative path of the image file if available."
            }
          },
          "description": "Provides context information for an image",
          "label": "Image File"
        },
        "imagePickerPlaceholder": "Select an image file or search by name",
        "orchestrator": {
          "description": "This agent analyzes the user request against the description of all available chat agents and selects the best fitting agent to answer the request     (by using AI).The user's request will be directly delegated to the selected agent without further confirmation.",
          "vars": {
            "availableChatAgents": {
              "description": "The list of chat agents that the orchestrator can delegate to, excluding agents specified in the exclusion list preference."
            }
          }
        },
        "pendingImage": {
          "file": "Pending image: {0}",
          "pasted": "Pending image (pasted)"
        },
        "persistedSessionLimit": {
          "description": "Maximum number of chat sessions to persist. Use -1 for unlimited sessions, 0 to disable session persistence. When the limit is reduced, the oldest sessions exceeding the new limit are automatically removed on the next save."
        },
        "pinChatAgent": {
          "description": "Enable agent pinning to automatically keep a mentioned chat agent active across prompts, reducing the need for repeated mentions.        You can manually unpin or switch agents anytime."
        },
        "revertSuggestion": "Revert suggestion",
        "sessionStorageScope": {
          "description": "Choose whether to persist chat sessions in separate per-workspace stores or in a single global store. If no workspace is open, sessions will fall back to global storage.",
          "global": "Store chat sessions in a single store, shared across all workspaces.",
          "workspace": "Store chat sessions in workspace-specific metadata storage. Sessions are associated with the workspace but stored outside the workspace directory."
        },
        "taskContextService": {
          "summarizeProgressMessage": "Summarize: {0}"
        },
        "taskContextStorageDirectory": {
          "description": "A workspace relative path in which to persist and from which to retrieve task context descriptions. If set to empty value, generated task contexts will be stored in memory rather than on disk."
        },
        "toolConfirmation": {
          "alwaysAllow": {
            "description": "Execute tools automatically without confirmation"
          },
          "confirm": {
            "description": "Ask for confirmation before executing tools"
          },
          "description": "Configure confirmation behavior for individual tools. Key is the tool ID, value is the confirmation mode. To change the default for all tools, use \"ai-features.chat.defaultToolConfirmation\".",
          "disabled": {
            "description": "Disable tool execution"
          }
        },
        "toolConfirmationTimeout": {
          "denialReason": "Confirmation timed out after {0} seconds",
          "description": "Timeout in seconds for tool confirmation dialogs. When set to a positive value, tool confirmations will automatically be denied after the specified duration. Set to 0 to disable (default)."
        },
        "universal": {
          "description": "This agent is designed to help software developers by providing concise and accurate answers to general programming and software development questions. It is also the fall-back for any generic questions the user might ask. The universal agent currently does not have any context by default, i.e. it cannot access the current user context or the workspace."
        },
        "view": {
          "label": "AI Chat"
        },
        "welcomeScreenSessions": {
          "description": "Maximum number of chat sessions to show on the chat overview (home view). Active sessions are filled first; overflow is accessible via the \"Browse all chats...\" link. Lower this if a higher editor zoom causes a scrollbar. Set to 0 to hide the inline list entirely; sessions remain accessible via the \"Browse all chats...\" link."
        }
      },
      "chat-ui": {
        "addContextVariable": "Add context variable",
        "agentDefaultModel": "agent default",
        "agentDelegationDescription": "Other AI agents that can be delegated to",
        "aiDisabled": "AI features are disabled",
        "allowedResourceUrls": "External resources (images, stylesheets, media, etc.) referenced in AI chat responses are blocked by default and replaced with a placeholder until explicitly allowed. Resources whose URL starts with one of the configured prefixes are rendered directly without being blocked. Include the full origin with a trailing slash (e.g. \"https://example.com/\") to avoid unintended matches. Only add sources you fully trust.",
        "applyAll": "Apply All",
        "applyAllTitle": "Apply all pending changes",
        "askQuestion": "Ask a question",
        "attachToContext": "Attach elements to context",
        "cancel": "Cancel (Esc)",
        "chat-view-tree-widget": {
          "ai": "AI",
          "generating": "Generating",
          "noRenderer": "Error: No renderer found",
          "scrollToBottom": "Jump to latest message",
          "waitingForInput": "Waiting for input",
          "you": "You"
        },
        "chatInput": {
          "clearHistory": "Clear Input Prompt History",
          "cycleMode": "Cycle Chat Mode",
          "nextPrompt": "Next Prompt",
          "pasteWithImageSupport": "Paste (with image support)",
          "previousPrompt": "Previous Prompt",
          "toggleCapabilities": "Toggle Capabilities Configuration"
        },
        "chatInputAriaLabel": "Type your message here",
        "chatRequestFailedWithDetail": "Chat request failed: {0}",
        "chatResponses": "Chat responses",
        "clearAllSelections": "Clear search string and capability selections to saved defaults",
        "code-part-renderer": {
          "generatedCode": "Generated Code"
        },
        "collapseAll": "Collapse all",
        "collapseChangeSet": "Collapse Change Set",
        "command-part-renderer": {
          "commandNotExecutable": "The command has the id \"{0}\" but it is not executable from the Chat window."
        },
        "compaction-part-renderer": {
          "compactionMarker": "Conversation compacted"
        },
        "copyCodeBlock": "Copy Code Block",
        "couldNotSendRequestToSession": "Was not able to send request \"{0}\" to session {1}",
        "delegatedSession": "Delegated",
        "delegation-response-renderer": {
          "interactionNeeded": "User interaction needed",
          "prompt": {
            "label": "Delegated prompt:"
          },
          "response": {
            "label": "Response:"
          },
          "restoredNotAvailable": "Response not available for restored sessions.",
          "starting": "Starting delegation...",
          "status": {
            "canceled": "canceled",
            "generating": "generating...",
            "starting": "starting..."
          }
        },
        "deleteChangeSet": "Delete Change Set",
        "editRequest": "Edit",
        "edited": "edited",
        "editedTooltipHint": "This prompt variant has been edited. You can reset it in the AI Configuration view.",
        "enterChatName": "Enter chat name",
        "errorChatInvocation": "An error occurred during chat service invocation.",
        "expandChangeSet": "Expand Change Set",
        "failedToDeleteSession": "Failed to delete chat session",
        "failedToLoadChats": "Failed to load chat sessions",
        "failedToRestoreSession": "Failed to restore chat session",
        "failedToRetry": "Failed to retry message",
        "focusInput": "Focus Chat Input",
        "focusResponse": "Focus Chat Response",
        "functions": "Functions",
        "functionsDescription": "Built-in functions provided by {0} extensions",
        "genericCapabilities": "Generic Capabilities",
        "mcpFunctionsDescription": "Model Context Protocol (MCP) functions from connected servers",
        "mermaid-rendering": {
          "copySource": "Copy Source",
          "error": "Unable to render the Mermaid diagram. Switch to the source view to inspect the definition.",
          "rendering": "Rendering diagram…",
          "resetView": "Reset View",
          "showDiagram": "Show Diagram",
          "showSource": "Show Source",
          "title": "Mermaid Diagram",
          "wheelZoomHint": "{0} + Scroll"
        },
        "modelBadgeTooltip": "Language model used for this response: {0}",
        "modelUnavailable": "unavailable",
        "noChatAgentsAvailable": "No chat agents available.",
        "noMatchingCapabilities": "No matching capabilities",
        "openDiff": "Open Diff",
        "openImage": "Open image",
        "openOriginalFile": "Open Original File",
        "performThisTask": "Perform this task.",
        "persistedSession": "Persisted session (click to restore)",
        "promptFragmentsDescription": "Custom prompt fragments to include in the conversation",
        "removeChat": "Remove Chat",
        "requestNotFoundForRetry": "Request not found for retry",
        "responseFrom": "Response from {0}",
        "saveCurrentSelectionsToSettings": "Save capability settings",
        "searchCapabilities": "Search capabilities",
        "sectionRestored": "Restored",
        "selectAgentQuickPickPlaceholder": "Select an agent for the new session",
        "selectAllInCategory": "Select all in this category",
        "selectChat": "Select chat",
        "selectContextVariableQuickPickPlaceholder": "Select a context variable to be attached to the message",
        "selectTaskContextQuickPickItem": {
          "currentlyOpen": "currently open"
        },
        "selectTaskContextQuickPickPlaceholder": "Select a task context to attach",
        "selectVariableArguments": "Select variable arguments",
        "send": "Send (Enter)",
        "server-toolcall-part-renderer": {
          "indicator": "server",
          "serverTooltip": "Ran on the provider's servers (not locally). Server tools are auto-approved when selected."
        },
        "serverToolWarning": "This tool is auto-approved when selected. It may be executed by the model at any time.",
        "serverTools": "Server Tools",
        "serverToolsDescription": "Server tools are executed server-side by the LLM on the vendor's infrastructure.",
        "serverToolsWarning": "These tools are auto-approved when selected. They may be executed by the model at any time.",
        "sessionModel": "Model for this chat",
        "sessionModelDefault": "Model for this chat ({0})",
        "sessionModelUnavailable": "Model for this chat is unavailable ({0}); requests use the agent default",
        "sessionNotFoundForRetry": "Session not found for retry",
        "skillsDescription": "Reusable skill instructions that can be added to the conversation",
        "switchAgentMode": "Switch Agent Mode",
        "text-part-renderer": {
          "cantDisplay": "Can't display response, please check your ChatResponsePartRenderers!"
        },
        "toggleCapabilitiesConfig": "Toggle Capabilities Configuration",
        "tokenUsageIndicatorEnabled": "Controls whether the experimental token usage indicator is shown in the chat view. This feature is experimental and token counts may be inaccurate depending on the model and provider.",
        "tokenUsageLabel": "Token Usage",
        "tokenUsageOverflow": "Token usage well past the warning threshold. Consider compacting or starting a new session.",
        "tokenUsageTooltipCacheCreate": "Cache creation: {0}",
        "tokenUsageTooltipCacheRead": "Cache read: {0}",
        "tokenUsageTooltipCompactions": "Compacted {0}x",
        "tokenUsageTooltipCumulative": "Cumulative: {0}",
        "tokenUsageTooltipTotal": "Total: {0} / {1} ({2}%)",
        "tokenUsageWarning": "Token usage warning threshold reached.",
        "tokenUsageWarningEnabled": "Controls whether a notification is shown when a chat session's token usage crosses the configured threshold. Requires the language model provider to report token usage.",
        "tokenUsageWarningMessage": "Chat session token usage has reached {0}% of the context window. Consider summarizing this session or starting a new one to avoid hitting the limit.",
        "tokenUsageWarningNewSessionAction": "Start New Chat",
        "tokenUsageWarningSummarizeAction": "Summarize Current Session",
        "tokenUsageWarningThresholdPercentage": "Percentage of the model's context window at which the token usage warning is triggered. This value also drives the warning/error color bands of the token usage indicator. Currently resolves against an assumed 200k context window; will use the real per-model context size once available.",
        "toolcall-part-renderer": {
          "denied": "Execution denied",
          "finished": "Ran",
          "rejected": "Execution canceled"
        },
        "toolconfirmation": {
          "allow-options-dropdown-tooltip": "More Allow Options",
          "allow-session": "Allow for this Chat",
          "allowed": "Tool execution allowed",
          "alwaysAllowConfirm": "I understand, enable auto-approval",
          "alwaysAllowGenericWarning": "This tool requires confirmation before auto-approval can be enabled. Once enabled, all future invocations will execute without confirmation. Only enable this if you trust this tool and understand the potential risks.",
          "alwaysAllowTitle": "Enable Auto-Approval for \"{0}\"?",
          "approveLatest": "Approve Latest Tool Confirmation",
          "autoCancel": "Auto-cancels in {0}",
          "canceled": "Tool execution canceled",
          "denied": "Tool execution denied",
          "deny-forever": "Always Deny",
          "deny-options-dropdown-tooltip": "More Deny Options",
          "deny-reason-placeholder": "Enter reason for denial...",
          "deny-session": "Deny for this Chat",
          "deny-with-reason": "Deny with reason...",
          "denyLatest": "Deny Latest Tool Confirmation",
          "executionDenied": "Tool execution denied",
          "header": "Confirm Tool Execution"
        },
        "unableToSummarizeCurrentSession": "Unable to summarize current session. Please confirm that the summary agent is not disabled.",
        "unknown-part-renderer": {
          "contentNotRestoreable": "This content (type '{0}') could not be fully restored. It may be from an extension that is no longer available."
        },
        "unpinAgent": "Unpin Agent",
        "unselectAllInCategory": "Unselect all in this category",
        "variablesDescription": "Dynamic variables that provide context information",
        "variantTooltip": "Prompt variant: {0}",
        "yourMessage": "Your message"
      },
      "claude-code": {
        "agentDescription": "Anthropic's coding agent",
        "allowSession": "Allow for this session",
        "apiKey": {
          "description": "Enter an API Key for Claude Code. **Please note:** By using this preference the API key will be stored in clear text on the machine running Theia. Use the environment variable `ANTHROPIC_API_KEY` to set the key securely."
        },
        "askBeforeEdit": "Ask before edit",
        "changeSetTitle": "Changes by Claude Code",
        "clearCommand": {
          "description": "Create a new session"
        },
        "compactCommand": {
          "description": "Compact conversation with optional focus instructions"
        },
        "completedCount": "{0}/{1} completed",
        "configCommand": {
          "description": "Open Claude Code Configuration"
        },
        "currentDirectory": "current directory",
        "differentAgentRequestWarning": "The previous chat request was handled by a different agent. Claude Code does not see those other messages.",
        "edit": "Edit {0}",
        "editAutomatically": "Edit automatically",
        "editing": "Editing",
        "editsCount": "{0} edits",
        "emptyTodoList": "No todos available",
        "entireFile": "Entire File",
        "excludingOnePattern": " (exluding 1 pattern)",
        "excludingPatterns": " (excluding {0} patterns)",
        "executablePath": {
          "description": "Path to the Claude Code executable (cli.js) of the `@anthropic-ai/claude-agent-sdk`.If not specified, the system will attempt to resolve the path automatically from the global npm installation."
        },
        "executedCommand": "Executed: {0}",
        "failedToParseBashToolData": "Failed to parse Bash tool data",
        "failedToParseEditToolData": "Failed to parse Edit tool data",
        "failedToParseGlobToolData": "Failed to parse Glob tool data",
        "failedToParseGrepToolData": "Failed to parse Grep tool data",
        "failedToParseLSToolData": "Failed to parse LS tool data",
        "failedToParseMultiEditToolData": "Failed to parse MultiEdit tool data",
        "failedToParseReadToolData": "Failed to parse Read tool data",
        "failedToParseTodoListData": "Failed to parse todo list data",
        "failedToParseWebFetchToolData": "Failed to parse WebFetch tool data",
        "failedToParseWriteToolData": "Failed to parse Write tool data",
        "fetching": "Fetching",
        "fileFilter": "File Filter",
        "filePath": "File Path",
        "fileType": "File Type",
        "findMatchingFiles": "Find files matching the glob pattern \"{0}\" in the current directory",
        "findMatchingFilesWithPath": "Find files matching the glob pattern \"{0}\" within {1}",
        "finding": "Finding",
        "from": "From",
        "globPattern": "glob pattern",
        "grepOptions": {
          "caseInsensitive": "case-insensitive",
          "glob": "glob: {0}",
          "headLimit": "limit: {0}",
          "lineNumbers": "line numbers",
          "linesAfter": "+{0} after",
          "linesBefore": "+{0} before",
          "linesContext": "±{0} context",
          "multiLine": "multiline",
          "type": "type: {0}"
        },
        "grepOutputModes": {
          "content": "content",
          "count": "count",
          "filesWithMatches": "files with matches"
        },
        "ignoredPatterns": "Ignored Patterns",
        "ignoringPatterns": "Ignoring {0} patterns",
        "initCommand": {
          "description": "Initialize project with CLAUDE.md guide"
        },
        "itemCount": "{0} items",
        "lineLimit": "Line Limit",
        "lines": "Lines",
        "listDirectoryContents": "List directory contents",
        "listing": "Listing",
        "memoryCommand": {
          "description": "Edit CLAUDE.md memory file"
        },
        "multiEditing": "Multi-editing",
        "oneEdit": "1 edit",
        "oneItem": "1 item",
        "oneOption": "1 option",
        "openDirectoryTooltip": "Click to open directory",
        "openFileTooltip": "Click to open file in editor",
        "optionsCount": "{0} options",
        "partial": "Partial",
        "plan": "Plan mode",
        "project": "project",
        "projectRoot": "project root",
        "readMode": "Read Mode",
        "reading": "Reading",
        "replaceAllCount": "{0} replace-all",
        "replaceAllOccurrences": "Replace all occurrences",
        "resumeCommand": {
          "description": "Resume a session"
        },
        "reviewCommand": {
          "description": "Request code review"
        },
        "searchPath": "Search Path",
        "searching": "Searching",
        "startingLine": "Starting Line",
        "timeout": "Timeout",
        "timeoutInMs": "Timeout: {0}ms",
        "to": "To",
        "todoList": "Todo List",
        "todoPriority": {
          "high": "high",
          "low": "low",
          "medium": "medium"
        },
        "toolApprovalRequest": "Claude Code wants to use the \"{0}\" tool. Do you want to allow this?",
        "totalEdits": "Total Edits",
        "vars": {
          "activeEditor": {
            "description": "The URI of the currently active editor."
          }
        },
        "webFetch": "Web Fetch",
        "writing": "Writing"
      },
      "code-completion": {
        "progressText": "Calculating AI code completion..."
      },
      "codex": {
        "agentDescription": "OpenAI's coding assistant powered by Codex",
        "apiKey": {
          "description": "OpenAI API key for Codex. If not set, falls back to the shared OpenAI API key (`ai-features.openAiOfficial.openAiApiKey`). Can also be set via `OPENAI_API_KEY` environment variable."
        },
        "completedCount": "{0}/{1} completed",
        "exitCode": "Exit code: {0}",
        "fileChangeFailed": "Codex failed to apply changes for: {0}",
        "fileChangeFailedGeneric": "Codex failed to apply file changes.",
        "itemCount": "{0} items",
        "noItems": "No items",
        "oneItem": "1 item",
        "searched": "Searched",
        "searching": "Searching",
        "todoList": "Todo List"
      },
      "completion": {
        "agent": {
          "description": "This agent provides inline code completion in the code editor in {0}.",
          "vars": {
            "file": {
              "description": "The URI of the file being edited"
            },
            "language": {
              "description": "The languageId of the file being edited"
            },
            "prefix": {
              "description": "The code before the current cursor position"
            },
            "suffix": {
              "description": "The code after the current cursor position"
            }
          }
        },
        "automaticEnable": {
          "description": "Automatically trigger AI completions inline within any (Monaco) editor while editing.            \n            Alternatively, you can manually trigger the code via the command \"Trigger Inline Suggestion\" or the default shortcut \"Ctrl+Alt+Space\"."
        },
        "cacheCapacity": {
          "description": "Maximum number of code completions to store in the cache. A higher number can improve performance but will consume more memory.                Minimum value is 10, recommended range is between 50-200.",
          "title": "Code Completion Cache Capacity"
        },
        "debounceDelay": {
          "description": "Controls the delay in milliseconds before triggering AI completions after changes have been detected in the editor.                Requires `Automatic Code Completion` to be enabled. Enter 0 to disable the debounce delay.",
          "title": "Debounce Delay"
        },
        "excludedFileExts": {
          "description": "Specify file extensions (e.g., .md, .txt) where AI completions should be disabled.",
          "title": "Excluded File Extensions"
        },
        "fileVariable": {
          "description": "The URI of the file being edited. Only available in code completion context."
        },
        "languageVariable": {
          "description": "The languageId of the file being edited. Only available in code completion context."
        },
        "maxContextLines": {
          "description": "The maximum number of lines used as context, distributed among the lines before and after the cursor position (prefix and suffix).            Set this to -1 to use the full file as context without any line limit and 0 to only use the current line.",
          "title": "Maximum Context Lines"
        },
        "prefixVariable": {
          "description": "The code before the current cursor position. Only available in code completion context."
        },
        "stripBackticks": {
          "description": "Remove surrounding backticks from the code returned by some LLMs. If a backtick is detected, all content after the closing             backtick is stripped as well. This setting helps ensure plain code is returned when language models use markdown-like formatting.",
          "title": "Strip Backticks from Inline Completions"
        },
        "suffixVariable": {
          "description": "The code after the current cursor position. Only available in code completion context."
        }
      },
      "configuration": {
        "selectItem": "Please select an item."
      },
      "copilot": {
        "auth": {
          "aiConfiguration": "AI Configuration",
          "authorize": "I have authorized",
          "copied": "Copied!",
          "copyCode": "Copy code",
          "expired": "Authorization expired or was denied. Please try again.",
          "hint": "After entering the code and authorizing, click \"I have authorized\" below.",
          "initiating": "Initiating authentication...",
          "instructions": "To authorize {0} to use GitHub Copilot, visit the URL below and enter the code:",
          "openGitHub": "Open GitHub",
          "privacy": "Theia is an open-source project. We only request access to your GitHub username to connect to GitHub Copilot services — no other data is accessed or stored.",
          "success": "Successfully signed in to GitHub Copilot!",
          "successHint": "If your GitHub account has access to Copilot, you can now configure Copilot language models in the ",
          "tos": "By signing in, you agree to the ",
          "tosLink": "GitHub Terms of Service",
          "verifying": "Verifying authorization..."
        },
        "category": "Copilot",
        "commands": {
          "signIn": "Sign in to GitHub Copilot",
          "signOut": "Sign out of GitHub Copilot"
        },
        "enabled": {
          "mdDescription": "Enable the GitHub Copilot provider. When enabled, a status bar entry appears for authentication and available models are discovered from your Copilot subscription."
        },
        "enterpriseUrl": {
          "mdDescription": "GitHub Enterprise domain for Copilot API (e.g., `github.mycompany.com`). Leave empty for GitHub.com."
        },
        "modelOverrides": {
          "mdDescription": "Override the automatically discovered GitHub Copilot models. When empty (default), available models are discovered from your Copilot subscription. Set explicit model IDs to override auto-discovery."
        },
        "signOut": {
          "confirmMessage": "Are you sure you want to sign out of GitHub Copilot?"
        },
        "statusBar": {
          "signedIn": "Signed in to GitHub Copilot as {0}. Click to sign out.",
          "signedOut": "Not signed in to GitHub Copilot. Click to sign in."
        },
        "tokenMigration": "Your GitHub Copilot session used an outdated authentication method and has been cleared. Please sign in again to access all available models."
      },
      "core": {
        "agentConfiguration": {
          "addCustomAgent": "Add Custom Agent",
          "availableCapabilities": "Available Capabilities",
          "completionNotificationDescriptionPrefix": "Select how you want to be notified when this agent needs your attention, i.e. it completes its task or requests your input. \"Default\" uses the ",
          "defaultNotificationDescription": "Uses the global AI notification setting",
          "enableAgent": "Enable Agent",
          "llmRequirements": "LLM Requirements",
          "notUsedInPrompt": "Not used in prompt",
          "notUsedInPromptTooltip": "This variable is declared by the agent but not referenced in the current prompt template.",
          "notificationSettings": "Notification Settings",
          "notificationSettingsLink": "AI notification setting",
          "promptTemplates": "Prompt Templates",
          "selectAgentMessage": "Please select an Agent first!",
          "showInChat": "Show in Chat",
          "templateName": "Template",
          "undeclared": "Undeclared",
          "undeclaredTooltip": "This variable is used in the prompt but has no description declared by the agent.",
          "usedAgentSpecificVariables": "Used Agent-Specific Variables",
          "usedFunctions": "Used Functions",
          "usedGlobalVariables": "Used Global Variables",
          "variant": "Variant"
        },
        "agentsVariable": {
          "description": "Returns the list of agents available in the system"
        },
        "aiConfiguration": {
          "label": "AI Configuration"
        },
        "blinkTitle": {
          "agentCompleted": "{0} - Agent Completed",
          "namedAgentCompleted": "{0} - Agent \"{1}\" Completed"
        },
        "capabilityVariable": {
          "argDescription": "The prompt fragment id, optionally followed by \"default on\" or \"default off\" (defaults to off)",
          "completions": {
            "detail": {
              "off": "Capability disabled by default",
              "on": "Capability enabled by default"
            }
          },
          "description": "Conditionally resolves prompt fragments based on default on/off setting"
        },
        "changeSetSummaryVariable": {
          "description": "Provides a summary of the files in a change set and their contents."
        },
        "contextDetailsVariable": {
          "description": "Provides full text values and descriptions for all context elements."
        },
        "contextSummaryVariable": {
          "description": "Describes files in the context for a given session."
        },
        "customAgentTemplate": {
          "description": "This is an example agent. Please adapt the properties to fit your needs."
        },
        "defaultModelAliases": {
          "code": {
            "description": "Optimized for code understanding and generation tasks."
          },
          "code-completion": {
            "description": "Best suited for code autocompletion scenarios."
          },
          "fast": {
            "description": "Faster and cheaper models for simpler tasks like exploration or basic tool calling, where deep reasoning is not required."
          },
          "summarize": {
            "description": "Models prioritized for summarization and condensation of content."
          },
          "universal": {
            "description": "Well-balanced for both code and general language use."
          }
        },
        "defaultNotification": {
          "mdDescription": "The default notification method used when an AI agent needs your attention, i.e. it completed a task or requests your input. Individual agents can override this setting.",
          "title": "Default Notification Type"
        },
        "discard": {
          "label": "Discard AI Prompt Template"
        },
        "discardCustomPrompt": {
          "tooltip": "Discard Customizations"
        },
        "fileVariable": {
          "description": "Resolves the contents of a file",
          "uri": {
            "description": "The URI of the requested file."
          }
        },
        "languageModelRenderer": {
          "alias": "[alias] {0}",
          "languageModel": "Language Model",
          "purpose": "Purpose"
        },
        "maxRetries": {
          "mdDescription": "The maximum number of retry attempts when a request to an AI provider fails. A value of 0 means no retries.",
          "title": "Maximum Retries"
        },
        "modelAliasesConfiguration": {
          "agents": "Agents using this Alias",
          "defaultList": "[Default list]",
          "evaluatesTo": "Evaluates to",
          "label": "Model Aliases",
          "modelNotReadyTooltip": "Not ready",
          "modelReadyTooltip": "Ready",
          "noAgents": "No agents use this alias.",
          "noModelReadyTooltip": "No model ready",
          "noResolvedModel": "No model ready for this alias.",
          "priorityList": "Priority List",
          "selectAlias": "Please select a Model Alias.",
          "selectedModelId": "Selected Model",
          "unavailableModel": "Selected model is no longer available"
        },
        "noVariableFoundForOpenRequest": "No variable found for open request.",
        "notification": {
          "message": {
            "description": "Show a notification message inside the application"
          },
          "off": {
            "description": "Disable all notifications"
          },
          "osNotification": "OS Notification",
          "windowBlink": "Window Blink"
        },
        "openEditorsShortVariable": {
          "description": "Short reference to all currently open files (relative paths, comma-separated)"
        },
        "openEditorsVariable": {
          "description": "A comma-separated list of all currently open files as workspace-relative paths (e.g., my-project/src/index.ts)."
        },
        "preference": {
          "languageModelAliases": {
            "description": "Configure models for each language model alias in the [AI Configuration View]({0}). Alternatiely you can set the settings manually in the settings.json: \n```\n\"default/code\": {\n  \"selectedModel\": \"anthropic/claude-opus-4-20250514\"\n}\n```",
            "selectedModel": "The user-selected model for this alias.",
            "title": "Language Model Aliases"
          }
        },
        "productNameVariable": {
          "description": "The name of the product/application the user is working with"
        },
        "promptFragmentsConfiguration": {
          "activeCustomizationTitle": "Active customization",
          "createCustomizationTitle": "Create Customization",
          "customization": "customization",
          "customizationLabel": "Customization",
          "defaultVariantTitle": "Default variant",
          "deleteCustomizationTitle": "Delete Customization",
          "editTemplateTitle": "Edit template",
          "headerTitle": "Prompt Fragments",
          "label": "Prompt Fragments",
          "noFragmentsAvailable": "No prompt fragments available.",
          "otherPromptFragmentsHeader": "Other Prompt Fragments",
          "promptTemplateText": "Prompt Template Text",
          "promptVariantsHeader": "Prompt Variant Sets",
          "removeCustomizationDialogMsg": "Are you sure you want to remove the {0} customization for prompt fragment \"{1}\"?",
          "removeCustomizationDialogTitle": "Remove Customization",
          "removeCustomizationWithDescDialogMsg": "Are you sure you want to remove the {0} customization for prompt fragment \"{1}\" ({2})?",
          "resetAllButton": "Reset All",
          "resetAllCustomizationsDialogMsg": "Are you sure you want to reset all prompt fragments to their built-in versions? This will remove all customizations.",
          "resetAllCustomizationsDialogTitle": "Reset All Customizations",
          "resetAllCustomizationsTitle": "Reset all customizations",
          "resetAllPromptFragments": "Reset all prompt fragments",
          "resetToBuiltInDialogMsg": "Are you sure you want to reset the prompt fragment \"{0}\" to its built-in version? This will remove all customizations.",
          "resetToBuiltInDialogTitle": "Reset to Built-in",
          "resetToBuiltInTitle": "Reset to this built-in",
          "resetToCustomizationDialogMsg": "Are you sure you want to reset the prompt fragment \"{0}\" to use the {1} customization? This will remove all higher-priority customizations.",
          "resetToCustomizationDialogTitle": "Reset to Customization",
          "resetToCustomizationTitle": "Reset to this customization",
          "selectedVariantLabel": "Selected",
          "selectedVariantTitle": "Selected variant",
          "usedByAgentTitle": "Used by agent: {0}",
          "variantSetError": "The selected variant does not exist and no default could be found. Please check your configuration.",
          "variantSetWarning": "The selected variant does not exist. The default variant is being used instead.",
          "variantsOfSystemPrompt": "Variants of this prompt variant set:"
        },
        "promptTemplates": {
          "description": "Folder for storing customized prompt templates. If not customized the user config directory is used. Please consider to use a folder, which is            under version control to manage your variants of prompt templates."
        },
        "promptVariable": {
          "argDescription": "The prompt template id to resolve",
          "completions": {
            "detail": {
              "builtin": "Built-in prompt fragment",
              "custom": "Customized prompt fragment"
            }
          },
          "description": "Resolves prompt templates via the prompt service"
        },
        "prompts": {
          "category": "AI Prompt Templates"
        },
        "reasoning": {
          "mdDescription": "Default value for the chat input's reasoning selector, applied to models that support reasoning.\n\nThis is a UI-level setting: the chosen level is translated to the provider's native API parameters at request time (e.g. Anthropic `thinking` / `output_config.effort`, OpenAI `reasoning.effort`, Gemini `thinkingConfig`) and takes precedence over any raw values supplied via `#ai-features.modelSettings.requestSettings#` for the same fields.\n\nEach entry consists of:\n- `scope`: Defines when the setting applies (`modelId`, `providerId`, `agentId`).\n- `reasoning.level`: One of `off`, `minimal`, `low`, `medium`, `high`, `auto`.\n\nPrecedence at runtime (highest first): session override via the selector → this preference → the model's declared default. Whichever the selector displays is what gets sent. To override a provider's reasoning field manually via `#ai-features.modelSettings.requestSettings#`, set `reasoning.level` to `off` here so the level-based translation is disabled.\n\nEntries are matched based on scope specificity (agent: 100, model: 10, provider: 1 points).\n\nExample:\n```json\n[\n  { \"scope\": { \"providerId\": \"anthropic\" }, \"reasoning\": { \"level\": \"medium\" } },\n  { \"scope\": { \"modelId\": \"openai/gpt-5\" }, \"reasoning\": { \"level\": \"high\" } },\n  { \"scope\": { \"agentId\": \"Coder\" }, \"reasoning\": { \"level\": \"off\" } }\n]\n```",
          "title": "Reasoning Defaults"
        },
        "requestSettings": {
          "clientSettings": {
            "description": "Client settings for how to handle messages that are send back to the llm.",
            "keepThinking": {
              "description": "If set to false, all thinking output will be filtered before sending the next user request in a multi-turn conversation."
            },
            "keepToolCalls": {
              "description": "If set to false, all tool request and tool responses will be filtered                                     before sending the next user request in a multi-turn conversation."
            }
          },
          "mdDescription": "Allows specifying custom request settings for multiple models.\n            Each setting consists of:\n            - `scope`: Defines when the setting applies:\n              - `modelId` (optional): The model ID to match\n              - `providerId` (optional): The provider ID to match (e.g., huggingface, openai, ollama, llamafile)\n              - `agentId` (optional): The agent ID to match\n            - `requestSettings`: Model-specific settings as key-value pairs\n            - `clientSettings`: Client-side message handling settings:\n              - `keepToolCalls` (boolean): Whether to keep tool calls in the context\n              - `keepThinking` (boolean): Whether to keep thinking messages\n            Settings are matched based on specificity (agent: 100, model: 10, provider: 1 points).\n            Refer to [our documentation](https://theia-ide.org/docs/user_ai/#custom-request-settings) for more information.",
          "modelSpecificSettings": {
            "description": "Settings for the specific model ID."
          },
          "scope": {
            "agentId": {
              "description": "The (optional) agent id to apply the settings to."
            },
            "modelId": {
              "description": "The (optional) model id"
            },
            "providerId": {
              "description": "The (optional) provider id to apply the settings to."
            }
          },
          "title": "Custom Request Settings"
        },
        "serverSideCompaction": {
          "description": "Enable provider-native server-side compaction by default for chat requests. When on, models that support it may automatically summarize older turns once the conversation grows past their own threshold, letting long sessions continue past the context limit. Each provider offers its own override, and individual chat sessions can override this in their session settings. Models without support ignore it."
        },
        "serverSideCompactionTokenThreshold": {
          "description": "Default input-token threshold at which provider-native server-side compaction should run. Providers and individual chat sessions can override this value. When unset, the provider chooses its default threshold. If set, the value must be at least 50,000 tokens."
        },
        "skillDirectories": {
          "description": "Additional directories containing skill definitions (SKILL.md files). Skills provide reusable instructions that can be referenced by AI agents. The .prompts/skills and .agents/skills directories in your workspace, the .agents/skills directory in your home directory, and the skills directory in your product's configuration folder are always included."
        },
        "skillsVariable": {
          "description": "Returns the list of available skills that can be used by AI agents"
        },
        "taskContextSummary": {
          "description": "Resolves all task context items present in the session context."
        },
        "templateSettings": {
          "edited": "edited",
          "unavailableVariant": "Unavailable"
        },
        "todayVariable": {
          "description": "Does something for today",
          "format": {
            "description": "The format of the date"
          }
        },
        "unableToDisplayVariableValue": "Unable to display variable value.",
        "unableToResolveVariable": "Unable to resolve variable.",
        "variable-contribution": {
          "builtInVariable": "{0} Built-in Variable",
          "currentAbsoluteFilePath": "The absolute path of the                 currently opened file.",
          "currentFileContent": "The plain content of the                 currently opened file. This excludes the information where the content is coming from.",
          "currentRelativeDirPath": "The workspace-relative path of the directory                 containing the currently opened file (e.g., my-project/src).",
          "currentRelativeFilePath": "The workspace-relative path of the                 currently opened file (e.g., my-project/src/index.ts).",
          "currentSelectedText": "The plain text that is currently selected in the                 opened file. This excludes the information where the content is coming from.",
          "dotRelativePath": "Short reference to the workspace-relative path of the                 currently opened file ('currentRelativeFilePath')."
        }
      },
      "editor": {
        "editorContextVariable": {
          "description": "Resolves editor specific context information",
          "label": "EditorContext"
        },
        "explainWithAI": {
          "prompt": "Explain this error",
          "title": "Explain with AI"
        },
        "fixWithAI": {
          "prompt": "Help to fix this error"
        }
      },
      "google": {
        "apiKey": {
          "description": "Enter an API Key of your official Google AI (Gemini) Account. **Please note:** By using this preference the GOOGLE AI API key will be stored in clear text            on the machine running Theia. Use the environment variable `GOOGLE_API_KEY` to set the key securely."
        },
        "maxRetriesOnErrors": {
          "description": "Maximum number of retries in case of errors. If smaller than 1, then the retry logic is disabled"
        },
        "models": {
          "description": "Official Google Gemini models to use"
        },
        "retryDelayOnOtherErrors": {
          "description": "Delay in seconds between retries in case of other errors (sometimes the Google GenAI reports errors such as incomplete JSON syntax returned from the model                 or 500 Internal Server Error). Setting this to -1 prevents retries in these cases. Otherwise a retry happens either immediately (if set to 0) or after                 this delay in seconds (if set to a positive number)."
        },
        "retryDelayOnRateLimitError": {
          "description": "Delay in seconds between retries in case of rate limit errors. See https://ai.google.dev/gemini-api/docs/rate-limits"
        }
      },
      "history": {
        "clear": {
          "tooltip": "Clear History of all agents"
        },
        "edited": "edited",
        "exchange-card": {
          "timestamp": "Started"
        },
        "open-history-tooltip": "Open AI Agent History",
        "request-card": {
          "promptVariant": "Prompt Variant",
          "timestamp": "Timestamp"
        },
        "sortChronologically": {
          "tooltip": "Sort chronologically"
        },
        "sortReverseChronologically": {
          "tooltip": "Sort reverse chronologically"
        },
        "toggleCompact": {
          "tooltip": "Show compact view"
        },
        "toggleHideNewlines": {
          "tooltip": "Stop interpreting newlines"
        },
        "toggleRaw": {
          "tooltip": "Show raw view"
        },
        "toggleRenderNewlines": {
          "tooltip": "Interpret newlines"
        },
        "view": {
          "label": "AI Agent History",
          "noAgent": "No agent available.",
          "noAgentSelected": "No agent selected.",
          "noHistoryForAgent": "No history available for the selected agent '{0}'"
        }
      },
      "huggingFace": {
        "apiKey": {
          "mdDescription": "Enter an API Key for your Hugging Face Account. **Please note:** By using this preference the Hugging Face API key will be stored in clear text            on the machine running Theia. Use the environment variable `HUGGINGFACE_API_KEY` to set the key securely."
        },
        "models": {
          "mdDescription": "Hugging Face models to use. **Please note:** Only models supporting the chat completion API are supported             (instruction-tuned models like `*-Instruct`) currently. Some models may require accepting license terms on the Hugging Face website."
        }
      },
      "ide": {
        "agent-description": "Configure AI agent settings including enablement, LLM selection, prompt template customization, and custom agent creation in the [AI Configuration View]({0}).",
        "agentConfiguration": {
          "customAgentLocationQuickPick": {
            "placeholder": "Choose where to create the agents/<id>/agent.md file",
            "title": "Select location for the new custom agent"
          },
          "genericCapabilitiesSettings": "Generic Capabilities",
          "genericCapabilityType": {
            "agentDelegation": "Agent Delegation",
            "functions": "Functions",
            "mcpFunctions": "MCP Functions",
            "promptFragments": "Prompt Fragments"
          },
          "newAgent": {
            "createFailed": "Could not create the custom agent \"{0}\": {1}",
            "defaultDescription": "Custom agent. Edit this description in agent.md.",
            "defaultPrompt": "You are a helpful agent. Adjust this prompt to fit your needs.",
            "idInvalid": "Use letters, digits, dash, underscore, or dot only.",
            "idPrompt": "Agent id (used as folder name under agents/)",
            "idTitle": "New custom agent",
            "noLocation": "Cannot create a custom agent: no prompt-templates location is configured. Set a global or workspace prompt-templates folder and try again."
          },
          "noDescription": "No description available",
          "resetAllCapabilities": "Reset all capabilities to their default values",
          "resetAllDefaults": "Reset All to Defaults",
          "selections": "Selections"
        },
        "agentMode": {
          "enabled": {
            "mdDescription": "Enable agent mode for the Coder agent. Agent mode allows autonomous file modifications without further confirmation.                 A first-use confirmation dialog is shown when using agent mode until this is set to `true`."
          }
        },
        "agentModeConfirmation": {
          "continueAgentMode": "Continue with Agent Mode",
          "continueEditMode": "Continue with Edit Mode",
          "info": "Continuing with Agent Mode saves your confirmation. You can revoke this later again via the `ai-features.agentMode.enabled` setting.\n\nContinuing with Edit Mode changes your default mode to Edit Mode.\n\nYou can change modes anytime via the mode selector or in the AI Configuration.",
          "msg": "You are about to use **Agent Mode**. In this mode, the agent can **read, create, and modify files** in your workspace autonomously, without asking for confirmation on each change.\n\nWe recommend using **version control** (e.g. Git) so you can easily review and revert any changes.\n\nIf you prefer more control, you can continue with **Edit Mode** instead, where changes are presented as suggestions for you to apply.\n\nHow would you like to proceed?",
          "waiting": "Waiting for confirmation..."
        },
        "allowAllMode": {
          "stripTooltip": "AI tool calls run without confirmation in this session. Only enable in environments you trust.",
          "stripTooltipFooter": "Set via --session-preference. Restart without the flag to restore your saved settings.",
          "title": "Theia AI Allow-All Mode"
        },
        "app-tester": {
          "errorCheckingDevToolsServerStatus": "Error checking DevTools MCP server status: {0}",
          "errorCheckingPlaywrightServerStatus": "Error checking Playwright MCP server status: {0}",
          "startChromeDevToolsMcpServers": {
            "canceled": "Please setup the Chrome DevTools MCP server.",
            "error": "Failed to start Chrome DevTools MCP server: {0}",
            "progress": "Starting Chrome DevTools MCP server.",
            "question": "The Chrome DevTools MCP server is not running. Would you like to start it now? This may install the Chrome DevTools MCP server."
          },
          "startMcpServers": {
            "no": "No, cancel",
            "yes": "Yes, start the servers"
          },
          "startPlaywrightServers": {
            "canceled": "Please setup the Playwright MCP servers.",
            "error": "Failed to start Playwright MCP servers: {0}",
            "progress": "Starting Playwright MCP servers.",
            "question": "The Playwright MCP servers are not running. Would you like to start them now? This may install the Playwright MCP servers."
          }
        },
        "architectAgent": {
          "mode": {
            "planNext": "Plan Mode (Next)",
            "simple": "Simple Mode"
          },
          "suggestion": {
            "executePlanWithCoder": "Execute \"{0}\" with Coder"
          }
        },
        "browseAllChats": "Browse all chats...",
        "bypassHint": "Some agents like Claude Code don't require Theia Language Models",
        "chatDisabledMessage": {
          "title": "AI Features are Disabled"
        },
        "chatRestrictedMessage": {
          "title": "AI Features are Restricted"
        },
        "childInteractionNeeded": "A delegated session needs your attention",
        "codeReviewerAgent": {
          "description": "A code review assistant that analyzes code changes and returns structured verdicts.         Checks completion criteria, build/lint/test evidence, and code quality."
        },
        "coderAgent": {
          "mode": {
            "agentNext": "Agent Mode (Next)",
            "edit": "Edit Mode"
          },
          "suggestion": {
            "fixProblems": {
              "content": "[Fix problems]({0}) in the current file.",
              "prompt": "please look at {1} and fix any problems."
            },
            "startNewChat": "Keep chats short and focused. [Start a new chat]({0}) for a new task or [start a new chat with a summary of this one]({1})."
          }
        },
        "collapseSession": "Collapse {0}",
        "commandAgent": {
          "commandCallback": {
            "confirmAction": "Got it",
            "label": "AI command",
            "message": "Executing callback with args {0}. The first arg is the command id registered for the dynamically registered command. The other args are the actual args for the handler."
          },
          "description": "This agent is aware of all commands that the user can execute. Based on the user request, it can find the right command and then let the user execute it.",
          "response": {
            "customHandler": "Try executing this:",
            "noCommand": "Sorry, I can't find such a command",
            "theiaCommand": "I found this command that might help you:"
          },
          "vars": {
            "commandIds": {
              "description": "The list of available commands."
            }
          }
        },
        "configurationState": "Configuration issues",
        "configureAgent": {
          "header": "Configure a default agent"
        },
        "continueAnyway": "Continue Anyway",
        "createSkillAgent": {
          "mode": {
            "edit": "Default Mode"
          }
        },
        "enableAI": {
          "mdDescription": "This setting allows you to access the AI capabilities of Theia IDE.            \n            Please be aware that AI features may generate            continuous requests to the language models (LLMs) you provide access to. This might incur costs that you            need to monitor closely. By enabling this option, you acknowledge these risks.            \n            **Please note! The settings below in this section will only take effect\n            once the main feature setting is enabled. After enabling the feature, you need to configure at least one            LLM provider below. Also see [the documentation](https://theia-ide.org/docs/user_ai/)**."
        },
        "expandSession": "Expand {0}",
        "exploreAgent": {
          "description": "A codebase exploration assistant that extracts and distills information from the codebase.         Reports facts about what exists, provides code excerpts, and describes observed patterns."
        },
        "github": {
          "configureGitHubServer": {
            "canceled": "GitHub server configuration cancelled. Please configure the GitHub MCP server to use this agent.",
            "followup": "Settings file opened. Please add your GitHub Personal Access Token to the `serverAuthToken` property in the GitHub server configuration, then  save and try again.\n\nYou can create a Personal Access Token at: https://github.com/settings/tokens",
            "no": "No, cancel",
            "question": "The GitHub MCP server is not configured. Would you like to configure it now? This will open the settings.json file where you can add your GitHub access token.",
            "yes": "Yes, configure GitHub server"
          },
          "description": "This agent helps you interact with GitHub repositories, issues, pull requests, and other GitHub features through the GitHub MCP server. It can help you manage your repositories, create issues, handle pull requests, and perform various GitHub operations.",
          "errorCheckingGitHubServerStatus": "Error checking GitHub MCP server status: {0}",
          "startGitHubServer": {
            "canceled": "Please start the GitHub MCP server to use this agent.",
            "error": "Failed to start GitHub MCP server: {0}",
            "no": "No, cancel",
            "progress": "Starting GitHub MCP server.",
            "question": "The GitHub MCP server is configured but not running. Would you like to start it now?",
            "yes": "Yes, start the server"
          }
        },
        "githubCapability": {
          "description": "Allows the agent to interact with GitHub. For this, the agent can delegate to the GitHub agent,             which can read and write issues, pull requests, comments, and repository contents."
        },
        "githubRepoName": {
          "description": "The GitHub repositories associated with the workspace roots (e.g., \"eclipse-theia/theia\")"
        },
        "howToGetStarted": "How to get started",
        "model-selection-description": "Choose which Large Language Models (LLMs) are used by each AI agent in the [AI Configuration View]({0}).",
        "moreAgentsAvailable": {
          "header": "More agents are available"
        },
        "noRecommendedAgents": "No recommended agents are available.",
        "openSettings": "Open AI Settings",
        "orchestrator": {
          "error": {
            "noAgents": "No chat agent available to handle request. Please check your configuration whether any are enabled."
          },
          "excludedAgents": {
            "mdDescription": "List of agent IDs that the orchestrator is not allowed to delegate to. These agents will not be visible to the orchestrator when selecting an agent to handle a request."
          },
          "progressMessage": "Determining the most appropriate agent",
          "response": {
            "delegatingToAgent": "Delegating to `@{0}`"
          }
        },
        "prReview": {
          "capability": {
            "codebaseExploration": {
              "description": "Delegates focused architecture, usage, convention, and tests exploration to the Explore agent. When disabled, the PR reviewer explores with its own tools.",
              "name": "Delegated Exploration"
            },
            "githubInfo": {
              "description": "Delegates to the GitHub agent to retrieve pull request metadata, diffs, comments, checks, and linked issues.",
              "name": "GH PR Info"
            },
            "localCheckout": {
              "description": "Checks out the pull request locally and protects existing worktree changes.",
              "name": "Checkout"
            },
            "localValidation": {
              "description": "Runs local install, build, lint, test, or comparable validation tasks for the pull request.",
              "name": "Build"
            },
            "pendingGitHubReview": {
              "description": "Delegates to the GitHub agent to create or update a pending pull request review with prepared inline comments after explicit user confirmation.",
              "name": "Pending GH Review"
            }
          }
        },
        "prReviewAgent": {
          "description": "An AI-powered PR review agent that orchestrates a full code review workflow: fetches PR info, explores the codebase, performs structured analysis, interactively walks the user through findings with diff viewers, and optionally creates a pending review on GitHub."
        },
        "prompt-template-description": "Select prompt variants and customize prompt templates for AI agents in the [AI Configuration View]({0}).",
        "requiresApproval": "Requires your approval",
        "restoredSession": "Restored session",
        "restrictedModeDetails": "AI chat, inline suggestions, code actions, and prompt templates are disabled",
        "restrictedModeLabel": "AI Features (disabled in Restricted Mode)",
        "sectionRestored": "Restored",
        "sessionOverride": {
          "defaultToolConfirmation": "Default tool confirmation: {0}",
          "toolConfirmation": "Per-tool confirmation overrides: {0}",
          "toolConfirmationGeneric": "Per-tool confirmation overrides set"
        },
        "shellAllowlist": {
          "placeholder": "e.g., \"git log\" (exact) or \"git log *\" (with args)"
        },
        "shellDenylist": {
          "placeholder": "e.g., \"git push *\" or \"rm -rf /\""
        },
        "shellExecutionCapability": {
          "description": "Allows the agent to run arbitrary shell commands on the host system. The agent can then delegate to execute scripts             that are not available as tasks, query system information, and perform operations for which no dedicated tool exists.",
          "name": "Shell Execution"
        },
        "skillsConfiguration": {
          "noSkills": "No skills available",
          "noSlashCommands": "No slash commands available",
          "slashCommand": {
            "allAgents": "All agents"
          },
          "slashCommandsSectionHeader": "Slash Commands"
        },
        "toolConfirmationInfo": {
          "header": "Tool confirmation"
        },
        "toolConfirmationOverrides": {
          "stripTooltip": "One or more AI tools are auto-approved for this session via command-line flags.",
          "title": "AI Tool Confirmation Overrides"
        },
        "toolsConfiguration": {
          "confirmAlwaysAllow": {
            "confirm": "I understand, enable auto-approval",
            "genericWarning": "This tool requires confirmation before auto-approval can be enabled. Once enabled, all future invocations will execute without confirmation. Only enable this if you trust this tool and understand the potential risks.",
            "title": "Enable Auto-Approval for \"{0}\"?"
          },
          "confirmationMode": {
            "label": "Confirmation Mode"
          },
          "default": {
            "label": "Default Tool Confirmation Mode:"
          },
          "recommendedDefaults": {
            "apply": "Allow Default Tools",
            "dialogConfirm": "I understand, allow",
            "dialogTitle": "Allow Default Tools?",
            "message": "Tool calls currently require approval. Auto-allow all built-in tools at once. Tools that require extra confirmation (e.g. shell execution), MCP tools, and any tools added later will still ask before running.",
            "msg": {
              "line1": "This sets all currently registered built-in tools to \"Always Allow\".",
              "line2": "Tools that require extra confirmation (such as shell execution) will still ask before running.",
              "line3": "MCP tools are third-party and are not included. You can allow them individually in this view.",
              "line4": "Tools added later will still default to \"Confirm\" so you can review them.",
              "line5": "You can change this later in this view."
            }
          },
          "resetAll": "Reset All",
          "resetAllConfirmDialog": {
            "msg": "Are you sure you want to reset all tool confirmation modes to the default? This will remove all custom settings.",
            "title": "Reset All Tool Confirmation Modes"
          },
          "resetAllTooltip": "Reset all tools to default",
          "shellAllowlist": {
            "description": "Commands matching these patterns will be automatically allowed without confirmation. Use * as wildcard: \"git log\" (exact match), \"git log *\" (with any arguments). Wildcard must be preceded by a space.",
            "empty": "No patterns configured. All shell commands will require confirmation.",
            "title": "Shell Execute Allowlist"
          },
          "shellDenylist": {
            "description": "Commands matching these patterns will be automatically denied without confirmation. Use this to block dangerous commands like 'git push *' or 'rm -rf /'.",
            "empty": "No patterns configured. No shell commands will be automatically denied.",
            "title": "Shell Execute Denylist"
          },
          "toolOptions": {
            "confirm": {
              "label": "Confirm"
            }
          }
        },
        "tooltip": {
          "errorMessage": "Error message",
          "lastActivity": "Last activity",
          "lastMessage": "Last message",
          "multipleExchanges": "{0} exchanges",
          "oneExchange": "1 exchange",
          "unread": "Unread"
        },
        "variableConfiguration": {
          "selectVariable": "Please select a Variable.",
          "usedByAgents": "Used by Agents"
        },
        "waitingForInput": "Waiting for your input"
      },
      "llamaFile": {
        "prefs": {
          "mdDescription": "This setting allows you to configure and manage LlamaFile models in Theia IDE.            \n            Each entry requires a user-friendly `name`, the file `uri` pointing to your LlamaFile, and the `port` on which it will run.            \n            To start a LlamaFile, use the \"Start LlamaFile\" command, which enables you to select the desired model.            \n            If you edit an entry (e.g., change the port), any running instance will stop, and you will need to manually start it again.            \n            [Learn more about configuring and managing LlamaFiles in the Theia IDE documentation](https://theia-ide.org/docs/user_ai/#llamafile-models).",
          "name": {
            "description": "The model name to use for this Llamafile."
          },
          "port": {
            "description": "The port to use to start the server."
          },
          "title": "AI LlamaFile",
          "uri": {
            "description": "The file uri to the Llamafile."
          }
        },
        "start": "Start Llamafile",
        "stop": "Stop Llamafile"
      },
      "llamafile": {
        "error": {
          "noConfigured": "No Llamafiles configured.",
          "noRunning": "No Llamafiles running.",
          "startFailed": "Something went wrong during the llamafile start: {0}.\nFor more information, see the console.",
          "stopFailed": "Something went wrong during the llamafile stop: {0}.\nFor more information, see the console."
        }
      },
      "mcp": {
        "blockedServersLabel": "MCP Servers (autostart blocked)",
        "error": {
          "allServersRunning": "All MCP servers are already running.",
          "authenticationRequired": "MCP server \"{0}\" requires authentication. Start the server again to sign in.",
          "getRedirectUrlFailed": "An error occurred while determining the MCP OAuth redirect URL.",
          "noOAuthServersConfigured": "No OAuth-enabled MCP servers configured.",
          "noRunningServers": "No MCP servers running.",
          "noServersConfigured": "No MCP servers configured.",
          "oauthRequiresTrustedWorkspace": "Starting OAuth-enabled MCP servers requires a trusted workspace.",
          "signInFailed": "An error occurred while signing in to the MCP server.",
          "signOutFailed": "An error occurred while signing out from the MCP server.",
          "startFailed": "An error occurred while starting the MCP server.",
          "stopFailed": "An error occurred while stopping the MCP server."
        },
        "getRedirectUrl": {
          "label": "MCP: Get MCP OAuth Redirect URL"
        },
        "info": {
          "oauthRedirectUrl": "MCP OAuth redirect URL: {0}",
          "serverSignedIn": "Signed in to MCP server \"{0}\".",
          "serverSignedOut": "Signed out from MCP server \"{0}\".",
          "serverStarted": "MCP server \"{0}\" successfully started. Registered tools: {1}",
          "signInCancelled": "MCP server \"{0}\" sign-in was cancelled."
        },
        "oauth": {
          "completeSignInInBrowser": "Complete the MCP OAuth sign-in in your browser. If no sign-in tab opened, your browser may have blocked the popup.",
          "notification": {
            "signInPrompt": "MCP server \"{0}\" requires authorization to start."
          }
        },
        "servers": {
          "args": {
            "mdDescription": "An array of arguments to pass to the command.",
            "title": "Arguments for the command"
          },
          "autostart": {
            "mdDescription": "Automatically start this server when the frontend starts. Newly added servers are not immediately auto started, but on restart",
            "title": "Autostart"
          },
          "command": {
            "mdDescription": "The command used to start the MCP server, e.g., \"uvx\" or \"npx\".",
            "title": "Command to execute the MCP server"
          },
          "deferLoading": {
            "mdDescription": "If enabled, the tools provided by this server are marked as deferred in the generated prompt fragment `mcp_<server>_tools`. Deferred tools are not loaded into the model's context upfront. Instead, the model discovers them on-demand via the provider's built-in tool search mechanism (Anthropic, OpenAI) when supported. This significantly reduces token overhead for servers that expose many tools.",
            "title": "Defer Loading"
          },
          "env": {
            "mdDescription": "Optional environment variables to set for the server, such as an API key.",
            "title": "Environment variables"
          },
          "headers": {
            "mdDescription": "Optional additional headers included with each request to the server. Header values are stored in preferences as plain text; avoid workspace settings if they contain sensitive values."
          },
          "mdDescription": "Configure MCP servers either local with command, arguments and optionally environment variables, or remote with server URL, authentication token, OAuth configuration and optionally an authentication header name. Additionally it is possible to configure autostart (true by default). Each server is identified by a unique key, such as \"brave-search\" or \"filesystem\". To start a server, use the \"MCP: Start MCP Server\" command, which enables you to select the desired server. To stop a server, use the \"MCP: Stop MCP Server\" command. Please note that autostart will only take effect after a restart, you need to start a server manually for the first time. Servers installed from an AI registry carry an additional `registryMetadata` block that is managed automatically and is not meant to be edited manually.\nExample configuration:\n```{\n  \"brave-search\": {\n    \"command\": \"npx\",\n    \"args\": [\n      \"-y\",\n      \"@modelcontextprotocol/server-brave-search\"\n    ],\n    \"env\": {\n      \"BRAVE_API_KEY\": \"YOUR_API_KEY\"\n    },\n  },\n  \"filesystem\": {\n    \"command\": \"npx\",\n    \"args\": [\"-y\", \"@modelcontextprotocol/server-filesystem\", \"/Users/YOUR_USERNAME/Desktop\"],\n    \"env\": {\n      \"CUSTOM_ENV_VAR\": \"custom-value\"\n    },\n    \"autostart\": false\n  },\n  \"jira\": {\n    \"serverUrl\": \"YOUR_JIRA_MCP_SERVER_URL\",\n    \"serverAuthToken\": \"YOUR_JIRA_MCP_SERVER_TOKEN\"\n  },\n  \"oauth-protected-server\": {\n    \"serverUrl\": \"YOUR_OAUTH_PROTECTED_MCP_SERVER_URL\",\n    \"oauth\": {\n      \"clientId\": \"OPTIONAL_CLIENT_ID\",\n      \"scopes\": [\"OPTIONAL_SCOPE\"]\n    }\n  }\n  }\n```",
          "oauth": {
            "authorizationServer": {
              "mdDescription": "Optional authorization server URL override. If omitted, Theia discovers it from the MCP server.",
              "title": "Authorization Server"
            },
            "clientId": {
              "mdDescription": "Optional static OAuth client ID. If omitted, Theia attempts dynamic client registration.",
              "title": "Client ID"
            },
            "clientSecret": {
              "mdDescription": "Optional OAuth client secret for authorization servers that only accept pre-registered confidential clients (no dynamic client registration). Only used together with the client ID. This is stored in preferences as plain text; avoid workspace settings if the secret is sensitive.",
              "title": "Client Secret"
            },
            "mdDescription": "Optional OAuth 2.1 configuration for remote MCP servers that require authorization. The presence of this object enables OAuth for the server; remove it to disable OAuth. Theia uses public clients with PKCE by default; configure a client secret only for servers that require a pre-registered confidential client. Changes take effect after restarting the MCP server.",
            "resource": {
              "mdDescription": "Optional RFC 8707 resource indicator override for this MCP server.",
              "title": "Resource"
            },
            "scopes": {
              "mdDescription": "Optional OAuth scopes to request if the server does not advertise scopes.",
              "title": "Scopes"
            },
            "title": "OAuth"
          },
          "registryMetadata": {
            "configHash": {
              "mdDescription": "Content hash of the registry approval used to install this server.",
              "title": "Registry Config Hash"
            },
            "mdDescription": "Provenance metadata for a server installed from an AI registry. Written by `@theia/ai-registry`; not user-editable.",
            "serverId": {
              "mdDescription": "Identifies the AI registry entry this server was installed from.",
              "title": "Registry Server Id"
            },
            "title": "Registry Metadata",
            "version": {
              "mdDescription": "The registry-published version recorded at the time of install.",
              "title": "Registry Version"
            }
          },
          "serverAuthToken": {
            "mdDescription": "The authentication token for the server, if required. This is stored in preferences as plain text; avoid workspace settings if the token is sensitive.",
            "title": "Authentication Token"
          },
          "serverAuthTokenHeader": {
            "mdDescription": "The header name to use for the server authentication token. If not provided, \"Authorization\" with \"Bearer\" will be used.",
            "title": "Authentication Header Name"
          },
          "serverUrl": {
            "mdDescription": "The URL of the remote MCP server. If provided, the server will connect to this URL instead of starting a local process.",
            "title": "Server URL"
          },
          "title": "MCP Server Configuration"
        },
        "signin": {
          "label": "MCP: Sign In to MCP Server"
        },
        "signout": {
          "label": "MCP: Sign Out from MCP Server"
        },
        "start": {
          "label": "MCP: Start MCP Server"
        },
        "stop": {
          "label": "MCP: Stop MCP Server"
        },
        "useWorkspaceAsRoot": {
          "mdDescription": "Roots define the boundaries of where servers can operate within the filesystem. If enabled, the workspace folders will be used as roots, otherwise the MCP servers will have access to the entire filesystem. Changing this setting will restart all running MCP servers to apply the new roots configuration.",
          "title": "Use Workspace as Root"
        },
        "warn": {
          "serverPreferenceChangeFailed": "Failed to apply MCP server preference changes: {0}",
          "signInNotCompleted": "Sign-in to MCP server \"{0}\" was not completed."
        }
      },
      "mcpConfiguration": {
        "autostart": "Autostart",
        "browseAIRegistry": "Browse AI registry",
        "browseAIRegistryTooltip": "Open the Extensions view to browse AI registry entries",
        "command": {
          "addServer": "Add local MCP config..."
        },
        "copiedAllList": "Copied all tools to clipboard (list of all tools)",
        "copiedAllSingle": "Copied all tools to clipboard (single prompt fragment with                                     all tools)",
        "copiedForPromptTemplate": "Copied all tools to clipboard for prompt template                                     (single prompt fragment with all tools)",
        "copyAllList": "Copy all (list of all tools)",
        "copyAllSingle": "Copy all for chat (single prompt fragment with all tools)",
        "copyForPrompt": "Copy tool (for chat or prompt template)",
        "copyForPromptTemplate": "Copy all for prompt template (single prompt fragment with all tools)",
        "deferLoading": "Defer tool loading",
        "deleteServer": "Delete Server",
        "deleteServerDialogMsg": "Are you sure you want to delete the server \"{0}\"?",
        "deleteServerDialogTitle": "Delete MCP Server",
        "deleteServerError": "Failed to delete MCP server: {0}",
        "editServer": "Edit Server",
        "editServerTitle": "Edit MCP Server",
        "environmentVariables": "Environment Variables",
        "form": {
          "argsPlaceholder": "Space-separated, e.g., -y @modelcontextprotocol/server-brave-search",
          "authHeaderPlaceholder": "Default: Authorization with Bearer",
          "authTokenPlaceholder": "Optional authentication token",
          "autostart": "Autostart",
          "commandPlaceholder": "e.g., npx or uvx",
          "commandRequired": "Command is required for local servers",
          "deferLoading": "Defer tool loading (discover tools on demand via the provider tool search)",
          "envPlaceholder": "KEY=value (one per line)",
          "headersPlaceholder": "Header-Name=value (one per line)",
          "localServer": "Local (Command)",
          "nameExists": "A server with this name already exists",
          "nameRequired": "Server name is required",
          "oauthAuthorizationServerInvalid": "OAuth Authorization Server must be a valid http(s) URL",
          "oauthAuthorizationServerPlaceholder": "Optional authorization server URL",
          "oauthClientIdPlaceholder": "Optional static client ID",
          "oauthClientSecretPlaceholder": "Only for servers requiring a confidential client",
          "oauthPublicClientDescription": "Theia uses public OAuth clients with PKCE by default. Provide a client secret only if the server requires a pre-registered confidential client.",
          "oauthRedirectUrlDescription": "Authorization callbacks are delivered to this URL. With a static client ID, register it as a redirect URI with your OAuth provider.",
          "oauthResourceInvalid": "OAuth Resource must be a valid http(s) URL",
          "oauthResourcePlaceholder": "Optional resource URI",
          "oauthScopesPlaceholder": "Space-separated scopes",
          "oauthSharedCredentialsDescription": "Stored OAuth sessions are shared across workspaces that use the same server name and URL (or resource).",
          "remoteOAuthServer": "Remote (OAuth)",
          "remoteServer": "Remote (URL)",
          "saveChanges": "Save Changes",
          "serverName": "Server Name",
          "serverNamePlaceholder": "e.g., my-mcp-server",
          "serverUrlPlaceholder": "e.g., https://mcp.example.com",
          "serverUrlRequired": "Server URL is required for remote servers"
        },
        "fromRegistryLink": "From registry",
        "oauth": "OAuth",
        "oauthAuthorizationServer": "Authorization Server",
        "oauthClientId": "OAuth Client ID",
        "oauthClientSecret": "OAuth Client Secret",
        "oauthRedirectUrl": "Redirect URL",
        "oauthResource": "OAuth Resource",
        "oauthScopes": "OAuth Scopes",
        "openInRegistry": "Open in AI registry: {0}",
        "saveServerError": "Failed to save MCP server configuration: {0}",
        "serverAuthToken": "Auth Token",
        "serverAuthTokenHeader": "Auth Header Name",
        "serverUrl": "Server URL",
        "signInServerFailed": "Failed to sign in to MCP server \"{0}\".",
        "signInServerNotCompleted": "Sign-in to MCP server \"{0}\" was not completed.",
        "signInServerSucceeded": "Signed in to MCP server \"{0}\".",
        "signOutServerDialogMsg": "Are you sure you want to sign out from the server \"{0}\"? This deletes the stored OAuth tokens for this server.",
        "signOutServerDialogTitle": "Sign Out from MCP Server",
        "signOutServerFailed": "Failed to sign out from MCP server \"{0}\".",
        "startServerFailed": "Failed to start MCP server \"{0}\".",
        "stopServerFailed": "Failed to stop MCP server \"{0}\".",
        "tools": "Tools: "
      },
      "openai": {
        "apiKey": {
          "mdDescription": "Enter an API Key of your official OpenAI Account. **Please note:** By using this preference the Open AI API key will be stored in clear text on the machine running Theia. Use the environment variable `OPENAI_API_KEY` to set the key securely."
        },
        "compaction": {
          "default": "Follow the global chat server-side compaction setting.",
          "description": "Override provider-native server-side compaction for official OpenAI models. This applies to the OpenAI Response API only; the Chat Completions API ignores it. \"default\" follows the global chat setting ({0}). When effectively enabled, the Response API is asked to summarize older turns once the conversation grows past the provider's threshold.",
          "disabled": "Never request server-side compaction for official OpenAI models.",
          "enabled": "Always request server-side compaction for official OpenAI models."
        },
        "compactionTokenThreshold": {
          "description": "Override the global input-token threshold for server-side compaction for official OpenAI models. When unset, the global setting or provider default applies. If set, the value must be at least 50,000 tokens."
        },
        "customEndpoints": {
          "apiKey": {
            "title": "Either the key to access the API served at the given url or `true` to use the global OpenAI API key"
          },
          "apiVersion": {
            "title": "Either the version to access the API served at the given url in Azure or `true` to use the global OpenAI API version"
          },
          "deployment": {
            "title": "The deployment name to access the API served at the given url in Azure"
          },
          "developerMessageSettings": {
            "title": "Controls the handling of system messages: `user`, `system`, and `developer` will be used as a role, `mergeWithFollowingUserMessage` will prefix                         the following user message with the system message or convert the system message to user message if the next message is not a user message.                         `skip` will just remove the system message), defaulting to `developer`."
          },
          "enableStreaming": {
            "title": "Indicates whether the streaming API shall be used. `true` by default."
          },
          "id": {
            "title": "A unique identifier which is used in the UI to identify the custom model"
          },
          "mdDescription": "Integrate custom models compatible with the OpenAI API, for example via `vllm`. The required attributes are `model` and `url`.            \n            Optionally, you can            \n            - specify a unique `id` to identify the custom model in the UI. If none is given `model` will be used as `id`.            \n            - provide an `apiKey` to access the API served at the given url. Use `true` to indicate the use of the global OpenAI API key.            \n            - provide an `apiVersion` to access the API served at the given url in Azure. Use `true` to indicate the use of the global OpenAI API version.            \n            - provide a `deployment` name for your Azure deployment.            \n            - set `developerMessageSettings` to one of `user`, `system`, `developer`, `mergeWithFollowingUserMessage`, or `skip` to control how the developer message is            included (where `user`, `system`, and `developer` will be used as a role, `mergeWithFollowingUserMessage` will prefix the following user message with the system            message or convert the system message to user message if the next message is not a user message. `skip` will just remove the system message).            Defaulting to `developer`.            \n            - specify `supportsStructuredOutput: false` to indicate that structured output shall not be used.            \n            - specify `enableStreaming: false` to indicate that streaming shall not be used.            \n            - specify `useResponseApi: true` to use the newer OpenAI Response API instead of the Chat Completion API (requires compatible endpoint).            \n            - specify `reasoningSupport` to opt in to the chat reasoning selector. Provide an object with            `supportedLevels` (e.g. `[\"off\", \"low\", \"medium\", \"high\", \"auto\"]`) and an optional `defaultLevel`.            \n            Refer to [our documentation](https://theia-ide.org/docs/user_ai/#openai-compatible-models-eg-via-vllm) for more information.",
          "modelId": {
            "title": "Model ID"
          },
          "reasoningSupport": {
            "title": "Declares the model's reasoning capabilities. When set the chat shows a reasoning selector for this model."
          },
          "supportsStructuredOutput": {
            "title": "Indicates whether the model supports structured output. `true` by default."
          },
          "url": {
            "title": "The Open AI API compatible endpoint where the model is hosted"
          },
          "useResponseApi": {
            "title": "Use the newer OpenAI Response API instead of the Chat Completion API. `false` by default for custom providers.Note: Will automatically fall back to Chat Completions API when tools are used."
          }
        },
        "models": {
          "description": "Official OpenAI models to use"
        },
        "useResponseApi": {
          "mdDescription": "Use the newer OpenAI Response API instead of the Chat Completion API for official OpenAI models. This setting only applies to official OpenAI models - custom providers must configure this individually."
        }
      },
      "promptTemplates": {
        "directories": {
          "description": "List of relative paths indicating folders in the current workspace to be scanned for WORKSPACE specific prompt templates. When templates with the same ID (filename) exist in multiple locations, conflicts are resolved by priority: specific template files (highest) > workspace directories > global directories (lowest).",
          "title": "Workspace-specific Prompt Template Directories"
        },
        "extensions": {
          "description": "List of additional file extensions in prompt locations that are considered as prompt templates. '.prompttemplate' is always considered as a default.",
          "title": "Additional Prompt Template File Extensions"
        },
        "files": {
          "description": "List of relative paths to specific files in the current workspace to be used as prompt templates. When templates with the same ID (filename) exist in multiple locations, conflicts are resolved by priority: specific template files (highest) > workspace directories > global directories (lowest).",
          "title": "Workspace-specific Prompt Template Files"
        }
      },
      "scanoss": {
        "changeSet": {
          "clean": "No Matches",
          "error": "Error: Rerun",
          "error-notification": "ScanOSS error encountered: {0}.",
          "match": "View Matches",
          "scan": "Scan",
          "scanning": "Scanning..."
        },
        "mode": {
          "automatic": {
            "description": "Enable automatic scan of code snippets in chat views."
          },
          "description": "Configure the SCANOSS feature for analyzing code snippets in chat views. This will send a hash of suggested code snippets to the SCANOSS\nservice hosted by the [Software Transparency foundation](https://www.softwaretransparency.org/osskb) for analysis.",
          "manual": {
            "description": "User can manually trigger the scan by clicking the SCANOSS item in the chat view."
          },
          "off": {
            "description": "Feature is turned off completely."
          }
        },
        "snippet": {
          "dialog-header": "ScanOSS Results",
          "errored": "SCANOSS - Error - {0}",
          "file-name-heading": "Match found in {0}",
          "in-progress": "SCANOSS - Performing scan...",
          "match-count": "Found {0} match(es)",
          "matched": "SCANOSS - Found {0} match",
          "no-match": "SCANOSS - No match"
        }
      },
      "session-settings-dialog": {
        "advancedSettings": "Advanced Settings (JSON)",
        "compactionHeader": "Server-Side Compaction",
        "compactionLabel": "Compaction:",
        "compactionNote": "Overrides the global and per-provider compaction setting for this session. Applies only to providers that support server-side compaction.",
        "compactionTokenThreshold": "Token threshold:",
        "confirmationTimeout": "Confirmation Timeout",
        "confirmationTimeoutNote": "Automatically deny tool confirmations after the specified time. Overrides the global preference for this session.",
        "enableConfirmationTimeout": "Enable confirmation timeout",
        "timeoutSeconds": "Timeout (seconds):",
        "title": "Set Session Settings",
        "tooltip": "Set Session Settings..."
      },
      "terminal": {
        "agent": {
          "description": "This agent provides assistance to write and execute arbitrary terminal commands.         Based on the user's request, it suggests commands and allows the user to directly paste and execute them in the terminal.         It accesses the current directory, environment and the recent terminal output of the terminal session to provide context-aware assistance",
          "vars": {
            "cwd": {
              "description": "The current working directory."
            },
            "recentTerminalContents": {
              "description": "The last 0 to 50 recent lines visible in the terminal."
            },
            "shell": {
              "description": "The shell being used, e.g., /usr/bin/zsh."
            },
            "userRequest": {
              "description": "The user's question or request."
            }
          }
        },
        "askAi": "Ask AI",
        "askTerminalCommand": "Ask about a terminal command...",
        "hitEnterConfirm": "Hit enter to confirm",
        "howCanIHelp": "How can I help you?",
        "terminalCommandBlockAIVariable": {
          "description": "Stores an executed terminal command and its corresponding output.",
          "index": {
            "description": "Index of the command block in the terminal history. Defaults to the last command if not specified."
          },
          "quickPick": {
            "placeholder": "Type to filter commands",
            "title": "Select a command and its output from the terminal history"
          }
        },
        "tryAgain": "Try again...",
        "useArrowsAlternatives": " or use ⇅ to show alternatives..."
      },
      "tokenUsage": {
        "cachedInputTokens": "Input Tokens Written to Cache",
        "cachedInputTokensTooltip": "Tracked additionally to 'Input Tokens'. Usually more expensive than non-cached tokens.",
        "failedToGetTokenUsageData": "Failed to fetch token usage data: {0}",
        "inputTokens": "Input Tokens",
        "label": "Token Usage",
        "lastUsed": "Last Used",
        "noData": "No token usage data available yet.",
        "note": "Token usage is tracked since the start of the application and is not persisted.",
        "outputTokens": "Output Tokens",
        "readCachedInputTokens": "Input Tokens Read From Cache",
        "readCachedInputTokensTooltip": "Tracked additionally to 'Input Token'. Usually much less expensive than not cached. Usually does not count to rate limits.",
        "totalTokensTooltip": "'Input Tokens' + 'Output Tokens'"
      },
      "vercelai": {
        "anthropicApiKey": {
          "mdDescription": "Enter an API Key for Anthropic models used by the Vercel AI SDK.                 **Please note:** By using this preference the API key will be stored in clear text         on the machine running Theia. Use the environment variable `ANTHROPIC_API_KEY` to set the key securely."
        },
        "customEndpoints": {
          "apiKey": {
            "title": "Either the key to access the API served at the given url or `true` to use the global API key"
          },
          "enableStreaming": {
            "title": "Indicates whether the streaming API shall be used. `true` by default."
          },
          "id": {
            "title": "A unique identifier which is used in the UI to identify the custom model"
          },
          "mdDescription": "Integrate custom models compatible with the Vercel AI SDK. The required attributes are `model` and `url`.            \n            Optionally, you can            \n            - specify a unique `id` to identify the custom model in the UI. If none is given `model` will be used as `id`.            \n            - provide an `apiKey` to access the API served at the given url. Use `true` to indicate the use of the global API key.            \n            - specify `supportsStructuredOutput: false` to indicate that structured output shall not be used.            \n            - specify `enableStreaming: false` to indicate that streaming shall not be used.            \n            - specify `provider` to indicate which provider the model is from (openai, anthropic).",
          "modelId": {
            "title": "Model ID"
          },
          "supportsStructuredOutput": {
            "title": "Indicates whether the model supports structured output. `true` by default."
          },
          "url": {
            "title": "The API endpoint where the model is hosted"
          }
        },
        "models": {
          "description": "Official models to use with Vercel AI SDK",
          "id": {
            "title": "Model ID"
          },
          "model": {
            "provider": "Provider",
            "title": "Model Name"
          }
        },
        "openaiApiKey": {
          "mdDescription": "Enter an API Key for OpenAI models used by the Vercel AI SDK.                 **Please note:** By using this preference the API key will be stored in clear text         on the machine running Theia. Use the environment variable `OPENAI_API_KEY` to set the key securely."
        }
      },
      "workspace": {
        "allowedExternalPaths": {
          "description": "List of absolute paths or file URIs (directories or files) outside the workspace that AI tools may read. Supports `~` to refer to the user home directory. Empty by default; opt-in only. Honored by getFileContent, findFilesByPattern, getWorkspaceFileList, and getWorkspaceDirectoryStructure. Workspace-scoped values are ignored when the workspace is not trusted. Symbolic links inside allow-listed directories are followed and may point to files outside the allow-list; only add directories whose contents you trust.",
          "title": "Allowed External Paths"
        },
        "coderAgent": {
          "description": "An AI assistant integrated into {0}, designed to assist software developers. This agent can access the users workspace, it can get a list of all available files and folders and retrieve their content. Furthermore, it can suggest modifications of files to the user. It can therefore assist the user with coding tasks or other tasks involving file changes."
        },
        "considerGitignore": {
          "description": "If enabled, excludes files/folders matched by .gitignore rules found in each workspace root directory.",
          "title": "Consider .gitignore"
        },
        "createSkillAgent": {
          "description": "An AI assistant for creating new skills. Skills provide reusable instructions and domain knowledge for AI agents. This agent helps you create well-structured skills in either the .agents/skills or .prompts/skills directory with proper YAML frontmatter and markdown content. This feature is still in an early stage and may undergo changes."
        },
        "excludedPattern": {
          "description": "List of patterns (glob or regex) for files/folders to exclude.",
          "title": "Excluded File Patterns"
        },
        "fileContentMaxSizeKB": {
          "description": "Maximum size in kilobytes of the content returned by the getFileContent tool. When reading a full file (no offset/limit), files exceeding this limit return an error. When using offset and limit, only the requested range is checked against this limit.",
          "title": "File Content Max Size (KB)"
        },
        "projectInfoAgent": {
          "description": "An AI assistant for managing project information templates. This agent helps create, update, and review the .prompts/project-info.prompttemplate file which provides context about your project to other AI agents. It can analyze your workspace to suggest project information or update existing templates based on your requirements."
        },
        "searchMaxResults": {
          "description": "Maximum number of search results returned by the workspace search function.",
          "title": "Maximum Search Results"
        },
        "workspaceAgent": {
          "description": "An AI assistant integrated into {0}, designed to assist software developers. This agent can access the users workspace, it can get a list of all available files and folders and retrieve their content. It cannot modify files. It can therefore answer questions about the current project, project files and source code in the workspace, such as how to build the project, where to put source code, where to find specific code or configurations, etc."
        }
      }
    },
    "ai-chat": {
      "fileChangeSetTitle": "Changes proposed"
    },
    "ai-chat-ui": {
      "blockedResource": {
        "allow": "Allow this blocked content",
        "aria": "Blocked external resources: {0}",
        "inlineContent": "(inline external content)",
        "label": "External resource blocked:",
        "resourcesToAllow": "{0} resources will be enabled"
      },
      "browseAllChats": "Browse all chats...",
      "confirm": "Confirm",
      "deleteChat": "Delete Chat",
      "home": "Home",
      "initiate-session-task-context": "Task Context: Initiate Session",
      "noOutput": "No output",
      "open-current-session-summary": "Open Current Session Summary",
      "open-settings-tooltip": "Open AI Settings",
      "openSession": "Open Chat Session",
      "renameChat": "Rename Chat",
      "scroll-lock": "Lock Scroll",
      "scroll-unlock": "Unlock Scroll",
      "session-settings": "Set Session Settings",
      "summarize-current-session": "Summarize Current Session"
    },
    "ai-claude-code": {
      "open-config": "Open Claude Code Configuration",
      "open-memory": "Open Claude Code Memory (CLAUDE.MD)"
    },
    "ai-core": {
      "agentCompletionMessage": "Agent \"{0}\" has completed its task.",
      "agentCompletionMessageWithSession": "Agent \"{0}\" has completed its task in \"{1}\".",
      "agentCompletionTitle": "Agent \"{0}\" Task Completed",
      "agentInputNeededMessage": "Agent \"{0}\" needs your input.",
      "agentInputNeededMessageWithSession": "Agent \"{0}\" needs your input in \"{1}\".",
      "agentInputNeededTitle": "Agent \"{0}\" Needs Your Input",
      "aiDisabledInRestrictedMode": "AI features are not available in untrusted workspaces.",
      "preferences": {
        "linuxEnvHint": "On Linux, make sure the variable is defined in `~/.profile` (not just `~/.bashrc`) if you launch the application from a desktop shortcut. See the [documentation](https://theia-ide.org/docs/user_ai/#setting-api-keys) for details.",
        "title": "AI Features"
      },
      "showChat": "Show Chat"
    },
    "ai-editor": {
      "contextMenu": "Ask AI",
      "sendToChat": "Send to AI Chat"
    },
    "ai-ide": {
      "addressGhReviewCommand": {
        "argumentHint": "<pr-number>",
        "description": "Address review comments on a GitHub pull request"
      },
      "appTester": {
        "description": "Delegates to AppTester agent for browser-based UI verification after implementation.",
        "name": "E2E Test"
      },
      "codeReview": {
        "description": "Delegates to code-reviewer agent after each implementation. Blocks next steps until review passes."
      },
      "fixGhTicketCommand": {
        "argumentHint": "<ticket-number>",
        "description": "Analyze a GitHub ticket and implement the solution"
      },
      "newChat": "New Chat",
      "noSessions": "No chat sessions yet.",
      "open-ai-configuration-tooltip": "Open AI Configuration",
      "perspective": {
        "aiFirst": "AI First"
      },
      "rememberCommand": {
        "argumentHint": "[topic-hint]",
        "description": "Extract topics from conversation and update project info"
      },
      "sessionsView": "AI Sessions",
      "ticketCommand": {
        "argumentHint": "<ticket-number>",
        "description": "Analyze a GitHub ticket and create an implementation plan"
      },
      "todoTool": {
        "noTasks": "No tasks"
      },
      "userInteractionCommentPlaceholder": "Add a comment for this step...",
      "userInteractionEmpty": "Empty",
      "userInteractionFinishStep": "Finish",
      "userInteractionGoToStep": "Go to step {0}: {1}",
      "userInteractionMalformed": "User interaction could not be displayed",
      "userInteractionMalformedFallback": "The arguments could not be parsed.",
      "userInteractionPreparing": "Preparing user interaction...",
      "userInteractionPreparingSteps": "Preparing: {0} ({1} steps)",
      "userInteractionPreparingTitle": "Preparing: {0}",
      "userInteractionWorkingCopy": "Working Copy"
    },
    "ai-mcp": {
      "installDialog": {
        "authTokenPlaceholder": "Required by this server to connect",
        "authTokenRequired": "An auth token is required to install this server.",
        "oauthClientIdPlaceholder": "Required by this server to connect",
        "oauthClientSecretPlaceholder": "Required by this server to connect",
        "oauthCredentialsRequired": "An OAuth client ID and client secret are required to install this server.",
        "oauthDescription": "This server uses OAuth with a pre-registered confidential client. Provide the client ID and secret from your OAuth provider.",
        "title": "Install MCP Server",
        "trust": {
          "unknown": "No AI registry is configured - trust cannot be verified.",
          "unverified": "This server is not listed in your AI registry ({0}). Install at your own risk.",
          "verified": "Approved by your AI registry ({0})."
        }
      },
      "installUri": {
        "alreadyInstalled": {
          "msg": "An MCP server named \"{0}\" is already configured. Continuing will overwrite the existing entry with the configuration from the registry.",
          "title": "MCP server already installed"
        },
        "missingId": "Install link is missing the required \"id\" parameter.",
        "noRegistry": "Cannot install MCP server \"{0}\" - no AI registry is configured in this product.",
        "success": "Installed MCP server \"{0}\" from the AI registry.",
        "unknownId": "MCP server \"{0}\" is not listed in your AI registry."
      }
    },
    "ai-registry": {
      "action": {
        "fix": "Fix config",
        "link": "Link to registry",
        "unlink": "Unlink",
        "updateTooltip": "Update from {0} to {1}"
      },
      "skill": {
        "action": {
          "fix": "Fix Skill",
          "link": "Link to registry",
          "unlink": "Unlink"
        },
        "fixed": "Restored skill \"{0}\".",
        "githubToken": {
          "mdDescription": "Optional GitHub personal access token used when downloading skills from GitHub. A token raises GitHub's rate limit from 60 to 5000 requests per hour. **Please note:** By using this preference the token is stored in clear text on the machine running Theia. Prefer the environment variable `GITHUB_TOKEN` to provide it securely."
        },
        "installUri": {
          "confirm": {
            "msg": "Install the skill \"{0}\" by downloading its files from {1}?",
            "title": "Install skill"
          },
          "fetchFailed": "Could not load the AI registry to install skill \"{0}\".",
          "missingId": "Install link is missing the required \"id\" parameter.",
          "success": "Installed skill \"{0}\" from the AI registry.",
          "unknownId": "Skill \"{0}\" is not listed in your AI registry."
        },
        "installed": "Installed skill \"{0}\".",
        "linked": "Linked skill \"{0}\".",
        "uninstalled": "Uninstalled skill \"{0}\".",
        "unlinked": "Unlinked skill \"{0}\".",
        "updated": "Updated skill \"{0}\".",
        "warning": {
          "fix": "This skill's files differ from the registry. Click 'Fix Skill' to restore them.",
          "linkStale": "This skill was installed from the registry, but the registry no longer lists it. Click Unlink to drop the registry link and keep the files, or Uninstall to remove the skill.",
          "notInRegistry": "Not in registry"
        },
        "watcherStopped": "Stopped watching the skills folder for changes. Installed skills may no longer refresh automatically. Reload the window to resume."
      },
      "warning": {
        "fixConfig": "This server's configuration differs from the registry. Click 'Fix config' to restore it.",
        "linkStale": "This server was installed from the registry, but the registry no longer lists it. If you are sure you want to keep it and it still works for you, click Unlink to drop the registry link. Otherwise click Uninstall to remove the server.",
        "notInRegistry": "Not in registry"
      }
    },
    "ai-terminal": {
      "allowAllConfirm": "I understand, allow all",
      "allowAllForever": "Always allow all shell commands...",
      "allowAllSession": "Allow all shell commands for this chat...",
      "allowAllSessionConfirm": "I understand, allow all for this chat",
      "allowAllSessionTitle": "Allow ALL Shell Commands for This Chat?",
      "allowAllSessionWarning": "This will allow the AI to execute any shell command without confirmation for the remainder of this chat session. Shell commands have full system access and can execute any command, modify files outside the workspace, and access network resources. Commands on the deny list will still be blocked.",
      "allowAllTitle": "Allow ALL Shell Commands?",
      "allowAllWarning": "This will allow the AI to execute any shell command without confirmation. Shell commands have full system access and can execute any command, modify files outside the workspace, and access network resources. Commands on the deny list will still be blocked.",
      "alwaysAllowPattern": "Always allow {0}",
      "alwaysAllowPatterns": "Always allow {0} and {1}",
      "alwaysAllowPatternsList": "Always allow {0}",
      "alwaysDenyPattern": "Always deny {0}",
      "alwaysDenyPatterns": "Always deny {0} and {1}",
      "alwaysDenyPatternsList": "Always deny {0}",
      "cancelExecution": "Cancel command execution",
      "canceling": "Canceling...",
      "configurePermissions": "Configure shell command permissions",
      "confirmExecution": "Confirm Shell Command",
      "denialReason": "Reason",
      "executionDenied": "Denied",
      "executionDeniedWithReason": "Denied with reason",
      "partialOutput": "Partial Output",
      "shellCommandAllowlist": {
        "description": "List of shell command patterns. Use * as wildcard: \"git log\" (exact match), \"git log *\" (with optional arguments), \"* --version\" (any command ending with --version). Wildcard must be preceded by space. Commands with dangerous patterns ($, backticks) are never auto-allowed."
      },
      "shellCommandDenylist": {
        "description": "List of shell command patterns that should always be denied. Commands matching these patterns will be auto-rejected without confirmation. Uses pattern syntax: \"git push\" (exact match) or \"git push *\" (with any arguments). Ships with default patterns for dangerous commands (eval, exec, sudo, rm -rf, etc.)."
      },
      "timeout": "Timeout",
      "workingDirectory": "Working directory"
    },
    "ai-tool-sketchpad": {
      "addItemProperty": "Add Item Property",
      "addParameter": "Add Parameter",
      "addProperty": "Add Property",
      "addTool": "Add Tool",
      "askAtRuntimeHint": "When the LLM calls this tool, a quick input will open asking you to provide the return value.",
      "askReturnPlaceholder": "Enter the return value for this tool call...",
      "askReturnPrompt": "Tool \"{0}\" was called with: {1}",
      "confirmDelete": "Are you sure you want to delete the tool \"{0}\"?",
      "descriptionPlaceholder": "Describe what the tool does...",
      "itemType": "Item Type:",
      "label": "AI Tool Sketchpad",
      "nParameters": "{0} parameters",
      "nameDuplicate": "A tool with this name already exists.",
      "nameEmpty": "Tool name must not be empty.",
      "nameInvalid": "Tool name may only contain letters, digits, underscores and hyphens (1-128 characters).",
      "noItemProperties": "No item properties defined.",
      "noParameters": "No parameters defined.",
      "noTools": "No tools yet.",
      "oneParameter": "1 parameter",
      "parameters": "Parameters",
      "required": "Required",
      "returnMode": "Return Mode",
      "returnModeAskAtRuntime": "Ask At Runtime",
      "returnModeAskShort": "Ask at runtime",
      "returnModeStatic": "Static Return Value",
      "returnModeStaticShort": "Static",
      "selectTool": "Select a tool to edit, or add a new one to start sketching.",
      "staticReturn": "Static Return Value",
      "staticReturnHint": "This static value is returned every time the tool is called, regardless of the input arguments.",
      "staticReturnPlaceholder": "The value returned when this tool is invoked (e.g. JSON string)",
      "toolName": "Tool Name",
      "toolNamePlaceholder": "e.g. getWeather",
      "untitledTool": "Untitled tool"
    },
    "callhierarchy": {
      "noCallers": "No callers have been detected.",
      "open": "Open Call Hierarchy"
    },
    "chat": {
      "taskContextVariable": {
        "args": {
          "contextId": {
            "description": "The ID of the task context to retrieve, or a chat session to summarize."
          }
        },
        "description": "Provides context information for a task, e.g. the plan for completing a task or a summary of a previous sessions",
        "label": "Task Context"
      }
    },
    "collaboration": {
      "collaborate": "Collaborate",
      "collaboration": "Collaboration",
      "collaborationWorkspace": "Collaboration Workspace",
      "connected": "Connected",
      "connectedSession": "Connected to a collaboration session",
      "copiedInvitation": "Invitation code copied to clipboard.",
      "copyAgain": "Copy Again",
      "createRoom": "Create New Collaboration Session",
      "creatingRoom": "Creating Session",
      "end": "End Collaboration Session",
      "endDetail": "Terminate the session, cease content sharing, and revoke access for others.",
      "enterCode": "Enter collaboration session code",
      "failedCreate": "Failed to create room: {0}",
      "failedJoin": "Failed to join room: {0}",
      "fieldRequired": "The {0} field is required. Login aborted.",
      "invite": "Invite Others",
      "inviteDetail": "Copy the invitation code for sharing it with others to join the session.",
      "joinRoom": "Join Collaboration Session",
      "joiningRoom": "Joining Session",
      "leave": "Leave Collaboration Session",
      "leaveDetail": "Disconnect from the current collaboration session and close the workspace.",
      "loginFailed": "Login failed.",
      "loginSuccessful": "Login successful.",
      "noAuth": "No authentication method provided by the server.",
      "optional": "optional",
      "selectAuth": "Select Authentication Method",
      "selectCollaboration": "Select collaboration option",
      "serverUrl": "Server URL",
      "serverUrlDescription": "URL of the Open Collaboration Tools Server instance for live collaboration sessions",
      "sharedSession": "Shared a collaboration session",
      "startSession": "Start or join collaboration session",
      "userWantsToJoin": "User '{0}' wants to join the collaboration room",
      "whatToDo": "What would you like to do with other collaborators?"
    },
    "core": {
      "about": {
        "compatibility": "{0} Compatibility",
        "defaultApi": "Default {0} API",
        "listOfExtensions": "List of extensions",
        "monacoEditor": "Monaco Editor Version"
      },
      "common": {
        "closeAll": "Close All Tabs",
        "closeAllTabMain": "Close All Tabs in Main Area",
        "closeOtherTabMain": "Close Other Tabs in Main Area",
        "closeOthers": "Close Other Tabs",
        "closeRight": "Close Tabs to the Right",
        "closeTab": "Close Tab",
        "closeTabMain": "Close Tab in Main Area",
        "collapseAllTabs": "Collapse All Side Panels",
        "collapseBottomPanel": "Toggle Bottom Panel",
        "collapseLeftPanel": "Toggle Left Panel",
        "collapseRightPanel": "Toggle Right Panel",
        "collapseTab": "Collapse Side Panel",
        "showNextTabGroup": "Switch to Next Tab Group",
        "showNextTabInGroup": "Switch to Next Tab in Group",
        "showPreviousTabGroup": "Switch to Previous Tab Group",
        "showPreviousTabInGroup": "Switch to Previous Tab in Group",
        "toggleMaximized": "Toggle Maximized"
      },
      "copyInfo": "Open a file first to copy its path",
      "copyWarn": "Please use the browser's copy command or shortcut.",
      "cutWarn": "Please use the browser's cut command or shortcut.",
      "enhancedPreview": {
        "classic": "Display a simple preview of the tab with basic information.",
        "enhanced": "Display an enhanced preview of the tab with additional information.",
        "visual": "Display a visual preview of the tab."
      },
      "highlightModifiedTabs": "Controls whether a top border is drawn on modified (dirty) editor tabs or not.",
      "jumpListName": "Recent Workspaces",
      "keybinding": {
        "duplicateModifierError": "Can't parse keybinding {0} Duplicate modifiers",
        "metaError": "Can't parse keybinding {0} meta is for OSX only",
        "unrecognizedKeyError": "Unrecognized key {0} in {1}"
      },
      "keybindingStatus": "{0} was pressed, waiting for more keys",
      "keyboard": {
        "choose": "Choose Keyboard Layout",
        "chooseLayout": "Choose a keyboard layout",
        "current": "(current: {0})",
        "currentLayout": " - current layout",
        "mac": "Mac Keyboards",
        "pc": "PC Keyboards",
        "tryDetect": "Try to detect the keyboard layout from browser information and pressed keys."
      },
      "navigator": {
        "clipboardWarn": "Access to the clipboard is denied. Check your browser's permission.",
        "clipboardWarnFirefox": "Clipboard API is not available. It can be enabled by '{0}' preference on '{1}' page. Then reload Theia. Note, it will allow FireFox getting full access to the system clipboard."
      },
      "pasteWarn": "Please use the browser's paste command or shortcut.",
      "perspective": {
        "resetPerspective": "Reset Perspective (Experimental)",
        "selectPerspective": "Select a perspective",
        "switchPerspective": "Switch Perspective (Experimental)"
      },
      "quitMessage": "Any unsaved changes will not be saved.",
      "resetWorkbenchLayout": "Reset Workbench Layout",
      "searchbox": {
        "close": "Close (Escape)",
        "next": "Next (Down)",
        "previous": "Previous (Up)",
        "showAll": "Show all items",
        "showOnlyMatching": "Show only matching items"
      },
      "secondaryWindow": {
        "alwaysOnTop": "When enabled, the secondary window stays above all other windows, including those of different applications.",
        "description": "Sets the initial position and size of the extracted secondary window.",
        "fullSize": "The position and size of the extracted widget will be the same as the running Theia application.",
        "halfWidth": "The position and size of the extracted widget will be half the width of the running Theia application.",
        "originalSize": "The position and size of the extracted widget will be the same as the original widget."
      },
      "severity": {
        "log": "Log"
      },
      "silentNotifications": "Controls whether to suppress notification popups.",
      "tabDefaultSize": "Specifies the default size for tabs.",
      "tabMaximize": "Controls whether to maximize tabs on double click.",
      "tabMinimumSize": "Specifies the minimum size for tabs.",
      "tabShrinkToFit": "Shrink tabs to fit available space.",
      "window": {
        "tabCloseIconPlacement": {
          "description": "Place the close icons on tab titles at the start or end of the tab. The default is end on all platforms.",
          "end": "Place the close icon at the end of the label. In left-to-right languages, this is the right side of the tab.",
          "start": "Place the close icon at the start of the label. In left-to-right languages, this is the left side of the tab."
        }
      },
      "window.menuBarVisibility": "Menu is displayed as a compact button in the side bar. This value is ignored when {0} is {1}."
    },
    "debug": {
      "TheiaIDE": "Theia IDE",
      "addConfigurationPlaceholder": "Select workspace root to add configuration to",
      "breakpoint": "breakpoint",
      "cannotRunToThisLocation": "Could not run the current thread to the specified location.",
      "compound-cycle": "Launch configuration '{0}' contains a cycle with itself",
      "conditionalBreakpoint": "Conditional Breakpoint",
      "conditionalBreakpointsNotSupported": "Conditional breakpoints not supported by this debug type",
      "confirmRunToShiftedPosition_msg": "The target position will be shifted to Ln {0}, Col {1}. Run anyway?",
      "confirmRunToShiftedPosition_title": "Cannot run the current thread to exactly the specified location",
      "consoleFilterAriaLabel": "Filter debug console output",
      "consoleFilterPlaceholder": "Filter (e.g. text, !exclude)",
      "consoleFilterTooltip": "Filter console output by text. Separate multiple terms with commas. Prefix with `!` to exclude a term.\n\nExamples:\n\n- `text` - show lines containing \"text\"\n- `text, other` - show lines containing \"text\" or \"other\"\n- `!text` - hide lines containing \"text\"\n- `text, !other` - show \"text\" but hide \"other\"",
      "consoleSessionSelectorTooltip": "Switch between debug sessions. Each debug session has its own console output.",
      "consoleSeverityTooltip": "Filter console output by severity level. Only messages with the selected severity will be shown.",
      "continueAll": "Continue All",
      "copyExpressionValue": "Copy Expression Value",
      "couldNotRunTask": "Could not run the task '{0}'.",
      "dataBreakpoint": "data breakpoint",
      "debugConfiguration": "Debug Configuration",
      "debugRestricted": "Debugging is disabled in Restricted Mode",
      "debugSessionInitializationFailed": "Debug session initialization failed. See console for details.",
      "debugSessionTypeNotSupported": "The debug session type \"{0}\" is not supported.",
      "debugToolbarMenu": "Debug Toolbar Menu",
      "debugVariableInput": "Set {0} Value",
      "disableSelectedBreakpoints": "Disable Selected Breakpoints",
      "disabledBreakpoint": "Disabled {0}",
      "enableSelectedBreakpoints": "Enable Selected Breakpoints",
      "entry": "entry",
      "errorStartingDebugSession": "There was an error starting the debug session, check the logs for more details.",
      "exception": "exception",
      "functionBreakpoint": "function breakpoint",
      "goto": "goto",
      "htiConditionalBreakpointsNotSupported": "Hit conditional breakpoints not supported by this debug type",
      "instruction-breakpoint": "Instruction Breakpoint",
      "instructionBreakpoint": "instruction breakpoint",
      "logpointsNotSupported": "Logpoints not supported by this debug type",
      "missingConfiguration": "Dynamic configuration '{0}:{1}' is missing or not applicable",
      "pause": "pause",
      "pauseAll": "Pause All",
      "reveal": "Reveal",
      "step": "step",
      "taskTerminatedBySignal": "Task '{0}' terminated by signal {1}.",
      "taskTerminatedForUnknownReason": "Task '{0}' terminated for unknown reason.",
      "taskTerminatedWithExitCode": "Task '{0}' terminated with exit code {1}.",
      "threads": "Threads",
      "toggleTracing": "Enable/disable tracing communications with debug adapters",
      "unknownSession": "Unknown Session",
      "unverifiedBreakpoint": "Unverified {0}"
    },
    "dev-container": {
      "devcontainerFileNotFound": "Devcontainer file at {0} not found in workspace",
      "failedToRebuild": "Failed to rebuild container: {0}",
      "noDevcontainerFileSpecified": "No devcontainer file specified for workspace",
      "removingOldContainer": "Removing old container..."
    },
    "editor": {
      "autoSaveWhenNoErrors": "When enabled, will limit auto save of editors to files that have no errors reported in them at the time the auto save is triggered. Only applies when {0} is enabled.",
      "clearFormatterSetting": "Clear formatter setting",
      "configuredIn": "Configured in {0}",
      "configuredNotInstalled": "'{0}' configured in {1} but not installed",
      "configuredNotInstalledFallbackNamed": "'{0}' configured in {1} not installed, using '{2}'",
      "currentFormatter": "(Current)",
      "diffEditor.wordWrap2": "Lines will wrap according to the `#editor.wordWrap#` setting.",
      "dirtyEncoding": "The file is dirty. Please save it first before reopening it with another encoding.",
      "editor.bracketPairColorization.enabled": "Controls whether bracket pair colorization is enabled or not. Use `#workbench.colorCustomizations#` to override the bracket highlight colors.",
      "editor.codeActions.triggerOnFocusChange": "Enable triggering `#editor.codeActionsOnSave#` when `#files.autoSave#` is set to `afterDelay`. Code Actions must be set to `always` to be triggered for window and focus changes.",
      "editor.detectIndentation": "Controls whether `#editor.tabSize#` and `#editor.insertSpaces#` will be automatically detected when a file is opened based on the file contents.",
      "editor.inlayHints.enabled1": "Inlay hints are showing by default and hide when holding Ctrl+Alt",
      "editor.inlayHints.enabled2": "Inlay hints are hidden by default and show when holding Ctrl+Alt",
      "editor.inlayHints.fontFamily": "Controls font family of inlay hints in the editor. When set to empty, the `#editor.fontFamily#` is used.",
      "editor.inlayHints.fontSize": "Controls font size of inlay hints in the editor. As default the `#editor.fontSize#` is used when the configured value is less than `5` or greater than the editor font size.",
      "editor.inlineSuggest.edits.experimental.enabled": "Controls whether to enable experimental edits in inline suggestions.",
      "editor.inlineSuggest.edits.experimental.onlyShowWhenCloseToCursor": "Controls whether to only show inline suggestions when the cursor is close to the suggestion.",
      "editor.inlineSuggest.edits.experimental.useInterleavedLinesDiff": "Controls whether to enable experimental interleaved lines diff in inline suggestions.",
      "editor.inlineSuggest.edits.experimental.useMixedLinesDiff": "Controls whether to enable experimental edits in inline suggestions.",
      "editor.insertSpaces": "Insert spaces when pressing `Tab`. This setting is overridden based on the file contents when `#editor.detectIndentation#` is on.",
      "editor.quickSuggestions": "Controls whether suggestions should automatically show up while typing. This can be controlled for typing in comments, strings, and other code. Quick suggestion can be configured to show as ghost text or with the suggest widget. Also be aware of the `#editor.suggestOnTriggerCharacters#`-setting which controls if suggestions are triggered by special characters.",
      "editor.suggestFontSize": "Font size for the suggest widget. When set to `0`, the value of `#editor.fontSize#` is used.",
      "editor.suggestLineHeight": "Line height for the suggest widget. When set to `0`, the value of `#editor.lineHeight#` is used. The minimum value is 8.",
      "editor.tabSize": "The number of spaces a tab is equal to. This setting is overridden based on the file contents when `#editor.detectIndentation#` is on.",
      "formatOnSaveTimeout": "Timeout in milliseconds after which the formatting that is run on file save is cancelled.",
      "formatter": "Formatter",
      "noDefaultConfiguredLabel": "No default formatter configured",
      "noDefaultConfiguredTooltip": "No default formatter configured ({0} formatters available)",
      "noEditor": "No editor active",
      "noFormatter": "No Formatter",
      "noFormatterInstalled": "No Formatter installed",
      "noFormattersAvailable": "No formatters available for this language",
      "noFormattersInstalledTooltip": "No formatters are installed for this language.",
      "onlyAvailableFormatter": "Only Available Formatter",
      "onlyFormatterInstalled": "{0} (only formatter installed)",
      "persistClosedEditors": "Controls whether to persist closed editor history for the workspace across window reloads.",
      "selectFormatter": "Select Default Formatter",
      "selectScope": "Select where to save the setting",
      "showAllEditors": "Show All Opened Editors",
      "showFormatterInfo": "Show Formatter Info",
      "splitHorizontal": "Split Editor Horizontal",
      "splitVertical": "Split Editor Vertical",
      "toggleStickyScroll": "Toggle Sticky Scroll",
      "userSettingsDetail": "Apply to all workspaces",
      "workspaceSettingsDetail": "Apply to current workspace only"
    },
    "external-terminal": {
      "cwd": "Select current working directory for new external terminal"
    },
    "file-search": {
      "toggleExcludedFiles": " (Press {0} to show/hide excluded files)"
    },
    "fileDialog": {
      "showHidden": "Show hidden files"
    },
    "fileSystem": {
      "fileResource": {
        "overWriteBody": "Do you want to overwrite the changes made to '{0}' on the file system?"
      }
    },
    "filesystem": {
      "copiedToClipboard": "Copied the download link to the clipboard.",
      "copyDownloadLink": "Copy Download Link",
      "dialog": {
        "initialLocation": "Go To Initial Location",
        "multipleItemMessage": "You can select only one item",
        "navigateBack": "Navigate Back",
        "navigateForward": "Navigate Forward",
        "navigateUp": "Navigate Up One Directory"
      },
      "fileResource": {
        "binaryFileQuery": "Opening it might take some time and might make the IDE unresponsive. Do you want to open '{0}' anyway?",
        "binaryTitle": "The file is either binary or uses an unsupported text encoding.",
        "largeFileTitle": "The file is too large ({0}).",
        "overwriteTitle": "The file '{0}' has been changed on the file system."
      },
      "filesExclude": "Configure [glob patterns](https://aka.ms/vscode-glob-patterns) for excluding files and folders. For example, the file Explorer decides which files and folders to show or hide based on this setting.",
      "format": "Format:",
      "maxConcurrentUploads": "Maximum number of concurrent files to upload when uploading multiple files. 0 means all files will be uploaded concurrently.",
      "maxFileSizeMB": "Controls the max file size in MB which is possible to open.",
      "prepareDownload": "Preparing download...",
      "prepareDownloadLink": "Preparing download link...",
      "processedOutOf": "Processed {0} out of {1}",
      "replaceTitle": "Replace File",
      "uploadFailed": "An error occurred while uploading a file. {0}",
      "uploadFiles": "Uploading Files",
      "uploadedOutOf": "Uploaded {0} out of {1}"
    },
    "getting-started": {
      "ai": {
        "header": "AI Support in {0} is available!",
        "openAIChatView": "Open the AI Chat View now to learn how to start!"
      },
      "apiComparator": "{0} API Compatibility",
      "newExtension": "Building a New Extension",
      "newPlugin": "Building a New Plugin",
      "startup-editor": {
        "welcomePage": "Open the Welcome page, with content to aid in getting started with {0} and extensions."
      },
      "telemetry": "Data Usage & Telemetry"
    },
    "keybinding-schema-updater": {
      "deprecation": "Use `when` clause instead."
    },
    "keymaps": {
      "addKeybindingTitle": "Add Keybinding for {0}",
      "editKeybinding": "Edit Keybinding...",
      "editKeybindingTitle": "Edit Keybinding for {0}",
      "editWhenExpression": "Edit When Expression...",
      "editWhenExpressionTitle": "Edit When Expression for {0}",
      "keybinding": {
        "copy": "Copy Keybinding",
        "copyCommandId": "Copy Keybinding Command ID",
        "copyCommandTitle": "Copy Keybinding Command Title",
        "edit": "Edit Keybinding...",
        "editWhenExpression": "Edit Keybinding When Expression..."
      },
      "keybindingCollidesValidation": "keybinding currently collides",
      "requiredKeybindingValidation": "keybinding value is required",
      "resetKeybindingConfirmation": "Do you really want to reset this keybinding to its default value?",
      "resetKeybindingTitle": "Reset keybinding for {0}",
      "resetMultipleKeybindingsWarning": "If multiple keybindings exist for this command, all of them will be reset."
    },
    "localize": {
      "offlineTooltip": "Cannot connect to backend."
    },
    "markers": {
      "clearAll": "Clear All",
      "copyAsText": "Copy as Text",
      "export": "Export",
      "exportProblems": "Export Problems",
      "exportSuccess": "Problems exported successfully.",
      "jsonFiles": "JSON Files",
      "noProblems": "No problems have been detected in the workspace so far.",
      "tabbarDecorationsEnabled": "Show problem decorators (diagnostic markers) in the tab bars."
    },
    "memory-inspector": {
      "addressTooltip": "Memory location to display, an address or expression evaluating to an address",
      "ascii": "ASCII",
      "binary": "Binary",
      "byteSize": "Byte Size",
      "bytesPerGroup": "Bytes Per Group",
      "closeSettings": "Close Settings",
      "columns": "Columns",
      "command": {
        "createNewMemory": "Create New Memory Inspector",
        "createNewRegisterView": "Create New Register View",
        "followPointer": "Follow Pointer",
        "followPointerMemory": "Follow Pointer in Memory Inspector",
        "resetValue": "Reset Value",
        "showRegister": "Show Register in Memory Inspector",
        "viewVariable": "Show Variable in Memory Inspector"
      },
      "data": "Data",
      "decimal": "Decimal",
      "diff": {
        "label": "Diff: {0}"
      },
      "diff-widget": {
        "offset-label": "{0} Offset",
        "offset-title": "Bytes to offset the memory from {0}"
      },
      "editable": {
        "apply": "Apply Changes",
        "clear": "Clear Changes"
      },
      "endianness": "Endianness",
      "extraColumn": "Extra Column",
      "groupsPerRow": "Groups Per Row",
      "hexadecimal": "Hexadecimal",
      "length": "Length",
      "lengthTooltip": "Number of bytes to fetch, in decimal or hexadecimal",
      "memory": {
        "addressField": {
          "memoryReadError": "Enter an address or expression in the Location field."
        },
        "freeze": "Freeze Memory View",
        "hideSettings": "Hide Settings Panel",
        "readError": {
          "bounds": "Memory bounds exceeded, result will be truncated.",
          "noContents": "No memory contents currently available."
        },
        "readLength": {
          "memoryReadError": "Enter a length (decimal or hexadecimal number) in the Length field."
        },
        "showSettings": "Show Settings Panel",
        "unfreeze": "Unfreeze Memory View",
        "userError": "There was an error fetching memory."
      },
      "memoryCategory": "Memory Inspector",
      "memoryInspector": "Memory Inspector",
      "memoryTitle": "Memory",
      "octal": "Octal",
      "offset": "Offset",
      "offsetTooltip": "Offset to be added to the current memory location, when navigating",
      "provider": {
        "localsError": "Cannot read local variables. No active debug session.",
        "readError": "Cannot read memory. No active debug session.",
        "writeError": "Cannot write memory. No active debug session."
      },
      "register": "Register",
      "register-widget": {
        "filter-placeholder": "Filter (starts with)"
      },
      "registerReadError": "There was an error fetching registers.",
      "registers": "Registers",
      "toggleComparisonWidgetVisibility": "Toggle Comparison Widget Visibility",
      "utils": {
        "afterBytes": "You must load memory in both widgets you would like to compare. {0} has no memory loaded.",
        "bytesMessage": "You must load memory in both widgets you would like to compare. {0} has no memory loaded."
      }
    },
    "messages": {
      "notificationTimeout": "Informative notifications will be hidden after this timeout.",
      "toggleNotifications": "Toggle Notifications"
    },
    "mini-browser": {
      "typeUrl": "Type a URL"
    },
    "monaco": {
      "noSymbolsMatching": "No symbols matching",
      "typeToSearchForSymbols": "Type to search for symbols"
    },
    "navigator": {
      "autoReveal": "Auto Reveal",
      "clipboardWarn": "Access to the clipboard is denied. Check your browser's permission.",
      "clipboardWarnFirefox": "Clipboard API is not available. It can be enabled by '{0}' preference on '{1}' page. Then reload Theia. Note, it will allow FireFox getting full access to the system clipboard.",
      "nothingToPaste": "The clipboard does not contain workspace files that can be pasted here.",
      "openWithSystemEditor": "Open With System Editor",
      "refresh": "Refresh in Explorer",
      "reveal": "Reveal in Explorer",
      "systemEditor": "System Editor",
      "toggleHiddenFiles": "Toggle Hidden Files"
    },
    "output": {
      "clearOutputChannel": "Clear Output Channel...",
      "closeOutputChannel": "Close Output Channel...",
      "hiddenChannels": "Hidden Channels",
      "hideOutputChannel": "Hide Output Channel...",
      "maxChannelHistory": "The maximum number of entries in an output channel.",
      "outputChannels": "Output Channels",
      "showOutputChannel": "Show Output Channel..."
    },
    "plugin": {
      "blockNewTab": "Your browser prevented opening of a new tab"
    },
    "plugin-dev": {
      "alreadyRunning": "Hosted instance is already running.",
      "debugInstance": "Debug Instance",
      "debugMode": "Using inspect or inspect-brk for Node.js debug",
      "debugPorts": {
        "debugPort": "Port to use for this server's Node.js debug",
        "serverName": "The plugin host server name, e.g. \"hosted-plugin\" as in \"--hosted-plugin-inspect=\" or \"headless-hosted-plugin\" as in \"--headless-hosted-plugin-inspect=\""
      },
      "devHost": "Development Host",
      "failed": "Failed to run hosted plugin instance: {0}",
      "hostedPlugin": "Hosted Plugin",
      "hostedPluginRunning": "Hosted Plugin: Running",
      "hostedPluginStarting": "Hosted Plugin: Starting",
      "hostedPluginStopped": "Hosted Plugin: Stopped",
      "hostedPluginWatching": "Hosted Plugin: Watching",
      "instanceTerminated": "{0} has been terminated",
      "launchOutFiles": "Array of glob patterns for locating generated JavaScript files (`${pluginPath}` will be replaced by plugin actual path).",
      "noValidPlugin": "Specified folder does not contain valid plugin.",
      "notRunning": "Hosted instance is not running.",
      "pluginFolder": "Plugin folder is set to: {0}",
      "preventedNewTab": "Your browser prevented opening of a new tab",
      "restartInstance": "Restart Instance",
      "running": "Hosted instance is running at:",
      "selectPath": "Select Path",
      "startInstance": "Start Instance",
      "starting": "Starting hosted instance server ...",
      "stopInstance": "Stop Instance",
      "unknownTerminated": "The instance has been terminated",
      "watchMode": "Run watcher on plugin under development"
    },
    "plugin-ext": {
      "authentication-main": {
        "loginTitle": "Login",
        "signedOut": "Successfully signed out."
      },
      "extensionsRestrictedMode": "Some extensions are disabled in Restricted Mode",
      "supportNodeGlobalNavigator": "If enabled, the global navigator object in the extension host will be defined as provided by Node.js. Extensions may use the presence of the navigator object as a hint that code is running in a browser. Disabling this (the default) undefines the navigator in the extension host to preserve this assumption.",
      "webviewTrace": "Controls communication tracing with webviews.",
      "webviewWarnIfUnsecure": "Warns users that webviews are currently deployed insecurely."
    },
    "preferences": {
      "ai-features": "AI Features",
      "hostedPlugin": "Hosted Plugin",
      "input": {
        "browse": "Browse"
      },
      "sessionOverride": {
        "suffix": "Overridden by session",
        "suffixTooltip": "This preference has a session value set via --session-preference. Editing it here clears the session override for the rest of this session."
      },
      "sessionPreferences": {
        "statusBar": "Session Preferences ({0})",
        "tooltipBody": "They were passed in via --session-preference and only live in memory. Click a setting name to jump to it in the Settings view.",
        "tooltipChangeNote": "Editing any of these clears its session override for this run. To use the saved values from the next launch on, restart without the --session-preference arguments.",
        "tooltipHeader": "These settings are overridden for this session",
        "valueOff": "off",
        "valueOn": "on"
      },
      "toolbar": "Toolbar"
    },
    "preview": {
      "openByDefault": "Open the preview instead of the editor by default."
    },
    "property-view": {
      "lastModified": "Last modified",
      "noProperties": "No properties available.",
      "properties": "Properties",
      "symbolicLink": "Symbolic link"
    },
    "remote": {
      "dev-container": {
        "attach": "Attach to Running Container",
        "attachError": "Failed to attach to container: {0}",
        "attachWarning": "Attaching to a container will execute code inside it. Only attach to containers whose origin you trust.",
        "attachWarningTitle": "Attach to Container",
        "attaching": "Attaching to container",
        "cliAttachError": "Failed to attach to container: {0}",
        "cliContainerNotFound": "Container \"{0}\" not found or not running.",
        "connect": "Reopen in Container",
        "enterCustomPath": "Enter custom path...",
        "enterWorkspacePath": "Enter the workspace path inside the container",
        "foundConfigMsg": "A devcontainer.json was found at {0}. Would you like to apply its post-attach settings (extensions, port forwarding, etc.)?",
        "foundConfigTitle": "Dev Container Configuration Found",
        "noDevcontainerFiles": "No devcontainer.json files found in the workspace. Please ensure you have a .devcontainer directory with a devcontainer.json file.",
        "noRunningContainers": "No running containers found.",
        "rebuild": "Rebuild Container",
        "rebuilding": "Rebuilding dev container",
        "reopenInContainer": "Reopen in Container",
        "selectContainer": "Select a running container to attach to",
        "selectDevcontainer": "Select a devcontainer.json file",
        "selectWorkspacePath": "Select a workspace path inside the container",
        "suggestion": "This workspace has a dev container configuration. Would you like to reopen it in a container?"
      },
      "port-forwarding": {
        "focusPorts": "Ports: Focus on Ports View"
      },
      "ssh": {
        "connect": "Connect Current Window to Host...",
        "connectToConfigHost": "Connect Current Window to Host in Config File...",
        "enterHost": "Enter SSH host name",
        "enterUser": "Enter SSH user name",
        "failure": "Could not open SSH connection to remote.",
        "hostPlaceHolder": "E.g. hello@example.com",
        "needsHost": "Please enter a host name.",
        "needsUser": "Please enter a user name.",
        "userPlaceHolder": "E.g. hello"
      },
      "sshNoConfigPath": "No SSH config path found.",
      "wsl": {
        "connectToWsl": "Connect to WSL",
        "connectToWslUsingDistro": "Connect to WSL using Distro...",
        "noWslDistroFound": "No WSL distributions found. Please install a WSL distribution first.",
        "reopenInWsl": "Reopen Folder in WSL",
        "selectWSLDistro": "Select a WSL distribution"
      }
    },
    "scm": {
      "1HourAgo": "1 hour ago",
      "1MinuteAgo": "1 minute ago",
      "amend": "Amend",
      "amendHeadCommit": "HEAD Commit",
      "amendLastCommit": "Amend last commit",
      "changeRepository": "Change Repository...",
      "dirtyDiff": {
        "close": "Close Change Peek View"
      },
      "justNow": "just now",
      "mergeEditor": {
        "resetConfirmationTitle": "Do you really want to reset the merge result in this editor?"
      },
      "noChanges": "No changed files.",
      "noHistory": "No source control history available.",
      "noHistoryForError": "There is no history available for {0}",
      "prepositionIn": "in",
      "unamend": "Unamend",
      "unamendCommit": "Unamend commit"
    },
    "search-in-workspace": {
      "includeIgnoredFiles": "Include Ignored Files",
      "noFolderSpecified": "You have not opened or specified a folder. Only open files are currently searched.",
      "resultSubset": "This is only a subset of all results. Use a more specific search term to narrow down the result list.",
      "searchExclude": "Configure [glob patterns](https://aka.ms/vscode-glob-patterns) for excluding files and folders in full-text searches and file search in quick open. Inherits all glob patterns from the `#files.exclude#` setting.",
      "searchOnEditorModification": "Search the active editor when modified."
    },
    "secondary-window": {
      "extract-widget": "Move View to Secondary Window"
    },
    "shell-area": {
      "secondary": "Secondary Window"
    },
    "task": {
      "attachTask": "Attach Task...",
      "circularReferenceDetected": "Circular reference detected: {0} --> {1}",
      "clearHistory": "Clear History",
      "errorKillingTask": "Error killing task '{0}': {1}",
      "errorLaunchingTask": "Error launching task '{0}': {1}",
      "invalidTaskConfigs": "Invalid task configurations are found. Open tasks.json and find details in the Problems view.",
      "neverScanTaskOutput": "Never scan the task output",
      "noTaskToRun": "No task to run found. Configure Tasks...",
      "noTasksFound": "No tasks found",
      "notEnoughDataInDependsOn": "The information provided in the \"dependsOn\" is not enough for matching the correct task!",
      "schema": {
        "commandOptions": {
          "cwd": "The current working directory of the executed program or script. If omitted Theia's current workspace root is used."
        },
        "presentation": {
          "panel": {
            "dedicated": "The terminal is dedicated to a specific task. If that task is executed again, the terminal is reused. However, the output of a different task is presented in a different terminal.",
            "new": "Every execution of that task is using a new clean terminal.",
            "shared": "The terminal is shared and the output of other task runs are added to the same terminal."
          },
          "showReuseMessage": "Controls whether to show the \"Terminal will be reused by tasks\" message."
        },
        "problemMatcherObject": {
          "owner": "The owner of the problem inside Theia. Can be omitted if base is specified. Defaults to 'external' if omitted and base is not specified."
        }
      },
      "taskAlreadyRunningInTerminal": "Task is already running in terminal",
      "taskExitedWithCode": "Task '{0}' has exited with code {1}.",
      "taskIdLabel": "#{0}",
      "taskRestricted": "Task execution is disabled in Restricted Mode",
      "taskTerminatedBySignal": "Task '{0}' was terminated by signal {1}.",
      "terminalWillBeReusedByTasks": "Terminal will be reused by tasks."
    },
    "telemetry": {
      "filters": "Restrict the topic patterns delivered to each telemetry sink. Missing entries allow all sink interests; empty arrays disable a sink."
    },
    "terminal": {
      "defaultProfile": "The default profile used on {0}",
      "enableCommandHistory": "Track terminal commands and their output separately using shell injection. This enables use cases such as visually distinguishing commands in the UI and giving AI agents more structured access to terminals. Toggling this setting will not affect terminals that are already open.\n\n&nbsp;\n\nThis feature is currently only supported by task terminals and user terminals running bash or zsh.",
      "enableCommandSeparator": "Enable a visual separator between executed commands and their output in the terminal. Changes only apply to commands executed after this setting is modified. Only works when {0} is enabled.",
      "enableCopy": "Enable ctrl-c (cmd-c on macOS) to copy selected text",
      "enablePaste": "Enable ctrl-v (cmd-v on macOS) to paste from clipboard",
      "profileArgs": "The shell arguments that this profile uses.",
      "profileColor": "A terminal theme color ID to associate with the terminal.",
      "profileDefault": "Choose Default Profile...",
      "profileIcon": "A codicon ID to associate with the terminal icon.\nterminal-tmux:\"$(terminal-tmux)\"",
      "profileNew": "New Terminal (With Profile)...",
      "profilePath": "The path of the shell that this profile uses.",
      "profiles": "The profiles to present when creating a new terminal. Set the path property manually with optional args.\nSet an existing profile to `null` to hide the profile from the list, for example: `\"{0}\": null`.",
      "rendererType": "Controls how the terminal is rendered.",
      "rendererTypeDeprecationMessage": "The renderer type is no longer supported as an option.",
      "selectProfile": "Select a profile for the new terminal",
      "shell.deprecated": "This is deprecated, the new recommended way to configure your default shell is by creating a terminal profile in 'terminal.integrated.profiles.{0}' and setting its profile name as the default in 'terminal.integrated.defaultProfile.{0}.'",
      "shellArgsLinux": "The command line arguments to use when on the Linux terminal.",
      "shellArgsOsx": "The command line arguments to use when on the macOS terminal.",
      "shellArgsWindows": "The command line arguments to use when on the Windows terminal.",
      "shellLinux": "The path of the shell that the terminal uses on Linux (default: '{0}'}).",
      "shellOsx": "The path of the shell that the terminal uses on macOS (default: '{0}'}).",
      "shellWindows": "The path of the shell that the terminal uses on Windows. (default: '{0}')."
    },
    "terminal-manager": {
      "addTerminalToGroup": "Add terminal to group",
      "closeDialog": {
        "message": "Once the Terminal Manager is closed, its layout cannot be restored. Are you sure you want to close the Terminal Manager?",
        "title": "Do you want to close the terminal manager?"
      },
      "closeTerminalManager": "Close Terminal Manager",
      "createNewTerminalGroup": "Create New Terminal Group",
      "createNewTerminalPage": "Create New Terminal Page",
      "deleteGroup": "Delete Group",
      "deletePage": "Delete Page",
      "deleteTerminal": "Delete Terminal",
      "label": "Terminals",
      "maximizeBottomPanel": "Maximize Bottom Panel",
      "minimizeBottomPanel": "Minimize Bottom Panel",
      "openTerminalManager": "Open Terminal Manager",
      "page": "Page",
      "rename": "Rename",
      "resetTerminalManagerLayout": "Reset Terminal Manager Layout",
      "tabsDisplay": "Controls how terminals are displayed. 'tree' shows multiple terminals in a single view with a tree view for management,'tabbed' shows each terminal in its own view in a separate tab.",
      "toggleTreeView": "Toggle Tree View",
      "treeViewLocation": "The location of the terminal manager's tree view. Only applies when 'terminal.grouping.mode' is set to 'tree'."
    },
    "test": {
      "cancelAllTestRuns": "Cancel All Test Runs",
      "showTestOutput": "Show Test Output",
      "stackFrameAt": "at",
      "testRunDefaultName": "{0} run {1}",
      "testRuns": "Test Runs"
    },
    "toolbar": {
      "addCommand": "Add Command to Toolbar",
      "addCommandPlaceholder": "Find a command to add to the toolbar",
      "centerColumn": "Center Column",
      "failedUpdate": "Failed to update the value of '{0}' in '{1}'.",
      "filterIcons": "Filter Icons",
      "iconSelectDialog": "Select an Icon for '{0}'",
      "iconSet": "Icon Set",
      "insertGroupLeft": "Insert Group Separator (Left)",
      "insertGroupRight": "Insert Group Separator (Right)",
      "jsonError": "There was an error reading your toolbar.json file. Please check if it is corrupt by right-clicking the toolbar and selecting \"Customize Toolbar\". You can also reset it to its defaults by selecting \"Restore Toolbar Defaults\"",
      "leftColumn": "Left Column",
      "openJSON": "Customize Toolbar (Open JSON)",
      "removeCommand": "Remove Command From Toolbar",
      "restoreDefaults": "Restore Toolbar Defaults",
      "rightColumn": "Right Column",
      "selectIcon": "Select Icon",
      "toggleToolbar": "Toggle Toolbar",
      "toolbarLocationPlaceholder": "Where would you like the command added?",
      "useDefaultIcon": "Use Default Icon"
    },
    "typehierarchy": {
      "subtypeHierarchy": "Subtype Hierarchy",
      "supertypeHierarchy": "Supertype Hierarchy"
    },
    "variableResolver": {
      "listAllVariables": "Variable: List All"
    },
    "vsx-registry": {
      "confirmDialogMessage": "The extension \"{0}\" is unverified and might pose a security risk.",
      "confirmDialogTitle": "Are you sure you want to proceed with the installation?",
      "downloadCount": "Download count: {0}",
      "duplicateVSIX": "Failed to install {0} from VSIX. The extension is already installed. Uninstall the existing extension before installing a new version from VSIX.",
      "errorFetching": "Error fetching extensions.",
      "errorFetchingConfigurationHint": "This could be caused by network configuration issues.",
      "failedInstallingVSIX": "Failed to install {0} from VSIX.",
      "filter": {
        "showBuiltin": "Show Built-in",
        "showInstalled": "Show Installed",
        "showRecommended": "Show Recommended"
      },
      "invalidVSIX": "The selected file is not a valid \"*.vsix\" plugin.",
      "license": "License: {0}",
      "onlyShowVerifiedExtensionsDescription": "This allows the {0} to only show verified extensions.",
      "onlyShowVerifiedExtensionsTitle": "Only Show Verified Extensions",
      "recommendedExtensions": "A list of the names of extensions recommended for use in this workspace.",
      "restrictedModeInstallWarning": "The extension '{0}' may be disabled if it does not support running in Restricted Mode. Trust this workspace to ensure the extension works as expected.",
      "searchPlaceholder": "Search Open VSX Registry",
      "showInstalled": "Show Installed Extensions",
      "showRecommendedExtensions": "Controls whether notifications are shown for extension recommendations.",
      "vsx-extensions-contribution": {
        "no-other-versions": "No other versions are available.",
        "update-version-uninstall-error": "Error while removing the extension: {0}.",
        "update-version-version-error": "Failed to install version {0} of {1}."
      }
    },
    "webview": {
      "goToReadme": "Go To README",
      "messageWarning": "            The {0} endpoint's host pattern has been changed to `{1}`; changing the pattern can lead to security vulnerabilities.             See `{2}` for more information."
    },
    "workspace": {
      "bothAreDirectories": "Both resources are directories.",
      "compareWithEachOther": "Compare with Each Other",
      "confirmDeletePermanently.description": "Failed to delete \"{0}\" using the Trash. Do you want to permanently delete instead?",
      "confirmDeletePermanently.solution": "You can disable the use of Trash in the preferences.",
      "confirmDeletePermanently.title": "Error deleting file",
      "confirmMessage.delete": "Do you really want to delete the following files?",
      "confirmMessage.dirtyMultiple": "Do you really want to delete {0} files with unsaved changes?",
      "confirmMessage.dirtySingle": "Do you really want to delete {0} with unsaved changes?",
      "confirmMessage.uriMultiple": "Do you really want to delete all the {0} selected files?",
      "confirmMessage.uriSingle": "Do you really want to delete {0}?",
      "directoriesCannotBeCompared": "Directories cannot be compared. {0}",
      "duplicate": "Duplicate",
      "failSaveAs": "Cannot run \"{0}\" for the current widget.",
      "isDirectory": "'{0}' is a directory.",
      "manageTrustPlaceholder": "Select trust state for this workspace",
      "newFilePlaceholder": "File Name",
      "newFolderPlaceholder": "Folder Name",
      "noErasure": "Note: Nothing will be erased from disk",
      "notWorkspaceFile": "Not a valid workspace file: {0}",
      "openRecentPlaceholder": "Type the name of the workspace you want to open",
      "openRecentWorkspace": "Open Recent Workspace...",
      "preserveWindow": "Enable opening workspaces in current window.",
      "removeFolder": "Are you sure you want to remove the following folder from the workspace?",
      "removeFolders": "Are you sure you want to remove the following folders from the workspace?",
      "restrictedModeDescription": "Some features are disabled because this workspace is not trusted.",
      "restrictedModeFeatures": "Features like task execution, debugging, extensions, and AI are disabled to protect against potentially harmful code.",
      "schema": {
        "folders": {
          "description": "Root folders in the workspace"
        },
        "title": "Workspace File"
      },
      "trashTitle": "Move {0} to Trash",
      "trustDialogMessage": "If you trust the authors, code in this folder may be executed, including tasks, debug configurations, extensions, and AI features.",
      "trustDialogRestricted": "If you don't trust the authors, the workspace will open in Restricted Mode, which disables these features to protect against potentially harmful code.",
      "trustEmptyWindow": "Controls whether or not the empty workspace is trusted by default.",
      "trustEnabled": "Controls whether or not workspace trust is enabled. If disabled, all workspaces are trusted.",
      "trustLearnMore": "Learn more about Theia's Workspace Trust",
      "trustTrustedFolders": "List of folder URIs that are trusted without prompting.",
      "untitled-cleanup": "There appear to be many untitled workspace files. Please check {0} and remove any unused files.",
      "variables": {
        "cwd": {
          "description": "The task runner's current working directory on startup"
        },
        "file": {
          "description": "The path of the currently opened file"
        },
        "fileBasename": {
          "description": "The basename of the currently opened file"
        },
        "fileBasenameNoExtension": {
          "description": "The currently opened file's name without extension"
        },
        "fileDirname": {
          "description": "The name of the currently opened file's directory"
        },
        "fileExtname": {
          "description": "The extension of the currently opened file"
        },
        "relativeFile": {
          "description": "The currently opened file's path relative to the workspace root"
        },
        "relativeFileDirname": {
          "description": "The current opened file's dirname relative to ${workspaceFolder}"
        },
        "workspaceFolder": {
          "description": "The path of the workspace root folder"
        },
        "workspaceFolderBasename": {
          "description": "The name of the workspace root folder"
        },
        "workspaceRoot": {
          "description": "The path of the workspace root folder"
        },
        "workspaceRootFolderName": {
          "description": "The name of the workspace root folder"
        }
      },
      "workspaceFolderAdded": "A workspace with multiple roots was created. Do you want to save your workspace configuration as a file?",
      "workspaceFolderAddedTitle": "Folder added to Workspace"
    }
  },
  "vsx.disabling": "Disabling",
  "vsx.disabling.extensions": "Disabling {0}...",
  "vsx.enabling": "Enabling",
  "vsx.enabling.extension": "Enabling {0}..."
}
