{
  "title": "xtralab launcher",
  "description": "Settings for the xtralab agent launcher.",
  "jupyter.lab.shortcuts": [],
  "jupyter.lab.transform": true,
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "agents": {
      "title": "Agents",
      "description": "Override or extend the built-in list of agents shown on the launcher. Each entry must include an `id`. When the id matches a built-in (claude, codex, antigravity, copilot, goose, opencode, kiro, mistral-vibe), the fields you set override the corresponding defaults; leave a field out to keep the default. New ids define brand-new cards. Set `enabled: false` to hide a default. Changing a built-in's `command` (for example to a shell alias like `ccm`) keeps the card visible even though the alias isn't on PATH; use `requireAvailable: false` only when you want to skip the check without changing the command. The full built-in list is shown as the default below, so you can copy an entry and tweak it in place.",
      "type": "array",
      "default": [],
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": ["id"],
        "properties": {
          "id": {
            "title": "ID",
            "description": "Stable identifier. Match one of xtralab's defaults to override, or pick a new id to define a new card.",
            "type": "string"
          },
          "label": {
            "title": "Label",
            "description": "Card title shown on the launcher.",
            "type": "string"
          },
          "caption": {
            "title": "Caption",
            "description": "Short description shown beneath the card title.",
            "type": "string"
          },
          "command": {
            "title": "Command",
            "description": "Literal string typed into the new terminal. Aliases work because shells expand them on interactive lines.",
            "type": "string"
          },
          "iconSvg": {
            "title": "Icon SVG",
            "description": "Inline SVG for the card icon. Required only for new agents whose icon is not already shipped by xtralab.",
            "type": "string"
          },
          "rank": {
            "title": "Rank",
            "description": "Sort order on the launcher (lower numbers come first).",
            "type": "number"
          },
          "enabled": {
            "title": "Enabled",
            "description": "When false, hides the agent from the launcher and command palette.",
            "type": "boolean",
            "default": true
          },
          "requireAvailable": {
            "title": "Require available",
            "description": "When false, the launcher skips the availability check for this entry (useful for shell aliases that aren't on PATH but resolve in an interactive shell). Overriding a built-in agent's command turns this off automatically, so an aliased command still shows; set it explicitly to force the check on or off.",
            "type": "boolean",
            "default": true
          },
          "promptArgs": {
            "title": "Prompt arguments",
            "description": "How to splice an initial prompt from the launcher textarea into the agent's command line. Empty array (`[]`) appends the prompt as a positional argument. An array like `[\"-i\"]` or `[\"--prompt\"]` prefixes the prompt with that flag. Set to `null` to opt out of prompt support entirely (the agent's button is dimmed when the prompt textarea is non-empty).",
            "type": ["array", "null"],
            "items": { "type": "string" }
          }
        }
      }
    },
    "editors": {
      "title": "Editors",
      "description": "Override or extend the terminal editors offered in the launcher's Open section (and recognized in the Terminals panel). Each entry must include an `id`. When the id matches a built-in (nvim, vim), the fields you set override the corresponding defaults; leave a field out to keep the default. New ids define additional editors. The launcher shows a single tile — the first editor, by `rank`, whose `command` is on PATH (Neovim before Vim by default). Set `enabled: false` to hide a built-in; disable both to remove the tile entirely. Changing a built-in's `command` (for example to a shell alias) keeps the tile visible even though the alias isn't on PATH; use `requireAvailable: false` only when you want to skip the check without changing the command. The full built-in list is shown as the default below, so you can copy an entry and tweak it in place.",
      "type": "array",
      "default": [],
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": ["id"],
        "properties": {
          "id": {
            "title": "ID",
            "description": "Stable identifier. Match a built-in (nvim, vim) to override, or pick a new id to define a new editor.",
            "type": "string"
          },
          "label": {
            "title": "Label",
            "description": "Tile title shown on the launcher.",
            "type": "string"
          },
          "caption": {
            "title": "Caption",
            "description": "Tooltip shown for the tile.",
            "type": "string"
          },
          "command": {
            "title": "Command",
            "description": "Literal string typed into the new terminal (e.g. `nvim`). Aliases work because shells expand them on interactive lines.",
            "type": "string"
          },
          "iconSvg": {
            "title": "Icon SVG",
            "description": "Inline SVG for the tile icon. Required only for new editors whose icon is not already shipped by xtralab.",
            "type": "string"
          },
          "rank": {
            "title": "Rank",
            "description": "Preference order (lower numbers come first). The launcher shows the first available editor by rank.",
            "type": "number"
          },
          "enabled": {
            "title": "Enabled",
            "description": "When false, hides the editor from the launcher (and the Terminals panel stops badging it).",
            "type": "boolean",
            "default": true
          },
          "requireAvailable": {
            "title": "Require available",
            "description": "When false, the launcher skips the availability check for this entry (useful for a shell alias that isn't on PATH but resolves in an interactive shell). Overriding a built-in editor's command turns this off automatically, so an aliased command still shows; set it explicitly to force the check on or off.",
            "type": "boolean",
            "default": true
          }
        }
      }
    }
  }
}
