{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/qwen-code-settings/latest.json",
  "title": "Qwen Code Settings",
  "description": "Configuration file for Qwen Code",
  "x-lintel": {
    "source": "https://www.schemastore.org/qwen-code-settings.json",
    "sourceSha256": "6450f6420fd567d1915e79d0240d491973540885718e48289910824f97def196",
    "fileMatch": [
      "**/.qwen/settings.json"
    ],
    "parsers": [
      "json"
    ]
  },
  "type": "object",
  "properties": {
    "$schema": {
      "type": "string",
      "description": "URL or path to the JSON schema for this configuration file"
    },
    "$version": {
      "type": "integer",
      "description": "Schema version identifier"
    },
    "general": {
      "type": "object",
      "description": "General configuration options",
      "properties": {
        "preferredEditor": {
          "type": "string",
          "description": "The preferred editor to open files in"
        },
        "vimMode": {
          "type": "boolean",
          "description": "Enable Vim keybindings",
          "default": false
        },
        "enableAutoUpdate": {
          "type": "boolean",
          "description": "Enable automatic update checks and installations on startup",
          "default": true
        },
        "gitCoAuthor": {
          "type": "boolean",
          "description": "Automatically add a Co-authored-by trailer to git commit messages",
          "default": true
        },
        "checkpointing": {
          "type": "object",
          "description": "Session checkpointing configuration",
          "properties": {
            "enabled": {
              "type": "boolean",
              "description": "Enable session checkpointing for recovery",
              "default": false
            }
          }
        },
        "defaultFileEncoding": {
          "type": "string",
          "description": "Default encoding for new files",
          "default": "utf-8",
          "enum": [
            "utf-8",
            "utf-8-bom"
          ]
        }
      },
      "additionalProperties": false
    },
    "output": {
      "type": "object",
      "description": "Output configuration",
      "properties": {
        "format": {
          "type": "string",
          "description": "The format of the CLI output",
          "default": "text",
          "enum": [
            "text",
            "json"
          ]
        }
      },
      "additionalProperties": false
    },
    "ui": {
      "type": "object",
      "description": "User interface configuration",
      "properties": {
        "theme": {
          "type": "string",
          "description": "The color theme for the UI"
        },
        "customThemes": {
          "type": "object",
          "description": "Custom theme definitions",
          "additionalProperties": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "type": {
                "type": "string",
                "const": "custom"
              },
              "Background": {
                "type": "string",
                "pattern": "^#[0-9a-fA-F]{6}$"
              },
              "Foreground": {
                "type": "string",
                "pattern": "^#[0-9a-fA-F]{6}$"
              },
              "AccentBlue": {
                "type": "string",
                "pattern": "^#[0-9a-fA-F]{6}$"
              },
              "AccentPurple": {
                "type": "string",
                "pattern": "^#[0-9a-fA-F]{6}$"
              },
              "AccentCyan": {
                "type": "string",
                "pattern": "^#[0-9a-fA-F]{6}$"
              },
              "AccentGreen": {
                "type": "string",
                "pattern": "^#[0-9a-fA-F]{6}$"
              },
              "AccentYellow": {
                "type": "string",
                "pattern": "^#[0-9a-fA-F]{6}$"
              },
              "AccentRed": {
                "type": "string",
                "pattern": "^#[0-9a-fA-F]{6}$"
              },
              "LightBlue": {
                "type": "string",
                "pattern": "^#[0-9a-fA-F]{6}$"
              },
              "Comment": {
                "type": "string",
                "pattern": "^#[0-9a-fA-F]{6}$"
              },
              "Gray": {
                "type": "string",
                "pattern": "^#[0-9a-fA-F]{6}$"
              },
              "DiffAdded": {
                "type": "string",
                "pattern": "^#[0-9a-fA-F]{6}$"
              },
              "DiffRemoved": {
                "type": "string",
                "pattern": "^#[0-9a-fA-F]{6}$"
              },
              "DiffModified": {
                "type": "string",
                "pattern": "^#[0-9a-fA-F]{6}$"
              },
              "GradientColors": {
                "type": "array",
                "items": {
                  "type": "string",
                  "pattern": "^#[0-9a-fA-F]{6}$"
                }
              }
            },
            "required": [
              "name",
              "type"
            ]
          }
        },
        "hideWindowTitle": {
          "type": "boolean",
          "description": "Hide the window title bar",
          "default": false
        },
        "hideTips": {
          "type": "boolean",
          "description": "Hide helpful tips in the UI",
          "default": false
        },
        "hideBanner": {
          "type": "boolean",
          "description": "Hide the application banner",
          "default": false
        },
        "hideFooter": {
          "type": "boolean",
          "description": "Hide the footer from the UI",
          "default": false
        },
        "showMemoryUsage": {
          "type": "boolean",
          "description": "Display memory usage information in the UI",
          "default": false
        },
        "showLineNumbers": {
          "type": "boolean",
          "description": "Show line numbers in code blocks in the CLI output",
          "default": true
        },
        "showCitations": {
          "type": "boolean",
          "description": "Show citations for generated text in the chat",
          "default": true
        },
        "enableWelcomeBack": {
          "type": "boolean",
          "description": "Show welcome back dialog when returning to a project with conversation history",
          "default": true
        },
        "accessibility": {
          "type": "object",
          "description": "Accessibility configuration",
          "properties": {
            "enableLoadingPhrases": {
              "type": "boolean",
              "description": "Enable loading phrases (disable for accessibility)",
              "default": true
            },
            "screenReader": {
              "type": "boolean",
              "description": "Enables screen reader mode, adjusting the TUI for better compatibility",
              "default": false
            }
          },
          "additionalProperties": false
        },
        "customWittyPhrases": {
          "type": "array",
          "description": "Custom phrases to display during loading states",
          "items": {
            "type": "string"
          },
          "default": []
        }
      },
      "additionalProperties": false
    },
    "ide": {
      "type": "object",
      "description": "IDE integration configuration",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Enable IDE integration mode",
          "default": false
        },
        "hasSeenNudge": {
          "type": "boolean",
          "description": "Whether the user has seen the IDE integration nudge",
          "default": false
        }
      },
      "additionalProperties": false
    },
    "privacy": {
      "type": "object",
      "description": "Privacy configuration",
      "properties": {
        "usageStatisticsEnabled": {
          "type": "boolean",
          "description": "Enable collection of usage statistics",
          "default": true
        }
      },
      "additionalProperties": false
    },
    "model": {
      "type": "object",
      "description": "Model configuration",
      "properties": {
        "name": {
          "type": "string",
          "description": "The Qwen model to use for conversations"
        },
        "maxSessionTurns": {
          "type": "integer",
          "description": "Maximum number of turns to keep in a session (-1 is unlimited)",
          "default": -1
        },
        "chatCompression": {
          "type": "object",
          "description": "Chat history compression configuration",
          "properties": {
            "contextPercentageThreshold": {
              "type": "number",
              "description": "Threshold for chat history compression as a percentage of token limit",
              "default": 0.7,
              "minimum": 0,
              "maximum": 1
            }
          },
          "additionalProperties": false
        },
        "skipNextSpeakerCheck": {
          "type": "boolean",
          "description": "Skip the next speaker check",
          "default": false
        },
        "skipLoopDetection": {
          "type": "boolean",
          "description": "Disables loop detection checks (use if false positives occur)",
          "default": false
        },
        "skipStartupContext": {
          "type": "boolean",
          "description": "Skips sending the startup workspace context at session start",
          "default": false
        },
        "enableOpenAILogging": {
          "type": "boolean",
          "description": "Enables logging of OpenAI API calls for debugging",
          "default": false
        },
        "openAILoggingDir": {
          "type": "string",
          "description": "Custom directory path for OpenAI API logs"
        },
        "generationConfig": {
          "type": "object",
          "description": "Generation configuration parameters",
          "properties": {
            "timeout": {
              "type": "number",
              "description": "Request timeout"
            },
            "contextWindowSize": {
              "type": "integer",
              "description": "Override model's maximum assumed context capacity"
            },
            "enableCacheControl": {
              "type": "boolean",
              "description": "Enable cache control"
            },
            "modalities": {
              "type": "object",
              "description": "Override auto-detected input modalities",
              "properties": {
                "image": {
                  "type": "boolean"
                },
                "pdf": {
                  "type": "boolean"
                },
                "audio": {
                  "type": "boolean"
                },
                "video": {
                  "type": "boolean"
                }
              },
              "additionalProperties": false
            },
            "customHeaders": {
              "type": "object",
              "description": "Custom HTTP headers for API requests",
              "additionalProperties": {
                "type": "string"
              }
            },
            "extra_body": {
              "type": "object",
              "description": "Additional body parameters (OpenAI-compatible providers only)"
            },
            "samplingParams": {
              "type": "object",
              "description": "Fine-tuning knobs (e.g., temperature, top_p, max_tokens)",
              "properties": {
                "temperature": {
                  "type": "number"
                },
                "top_p": {
                  "type": "number"
                },
                "max_tokens": {
                  "type": "integer"
                }
              }
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "context": {
      "type": "object",
      "description": "Context configuration",
      "properties": {
        "fileName": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ],
          "description": "The name of the context file(s)"
        },
        "importFormat": {
          "type": "string",
          "description": "The format to use when importing memory"
        },
        "includeDirectories": {
          "type": "array",
          "description": "Additional directories to include in the workspace context",
          "items": {
            "type": "string"
          },
          "default": []
        },
        "loadFromIncludeDirectories": {
          "type": "boolean",
          "description": "Controls behavior of /memory refresh for included directories",
          "default": false
        },
        "fileFiltering": {
          "type": "object",
          "description": "File filtering configuration",
          "properties": {
            "respectGitIgnore": {
              "type": "boolean",
              "description": "Respect .gitignore files when searching",
              "default": true
            },
            "respectQwenIgnore": {
              "type": "boolean",
              "description": "Respect .qwenignore files when searching",
              "default": true
            },
            "enableRecursiveFileSearch": {
              "type": "boolean",
              "description": "Enable recursive file searching for @ completions",
              "default": true
            },
            "enableFuzzySearch": {
              "type": "boolean",
              "description": "Enable fuzzy search capabilities",
              "default": true
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "tools": {
      "type": "object",
      "description": "Tools configuration",
      "properties": {
        "sandbox": {
          "oneOf": [
            {
              "type": "boolean"
            },
            {
              "type": "string"
            }
          ],
          "description": "Sandbox execution environment (boolean or custom path string)"
        },
        "shell": {
          "type": "object",
          "description": "Shell configuration",
          "properties": {
            "enableInteractiveShell": {
              "type": "boolean",
              "description": "Use node-pty for an interactive shell experience",
              "default": false
            }
          },
          "additionalProperties": false
        },
        "core": {
          "type": "array",
          "description": "Allowlist of built-in tools",
          "items": {
            "type": "string"
          }
        },
        "exclude": {
          "type": "array",
          "description": "Tool names to exclude from discovery",
          "items": {
            "type": "string"
          }
        },
        "allowed": {
          "type": "array",
          "description": "Tools that bypass the confirmation dialog",
          "items": {
            "type": "string"
          }
        },
        "approvalMode": {
          "type": "string",
          "description": "Default approval mode for tool usage",
          "default": "default",
          "enum": [
            "plan",
            "default",
            "auto-edit",
            "yolo"
          ]
        },
        "discoveryCommand": {
          "type": "string",
          "description": "Command to run for tool discovery"
        },
        "callCommand": {
          "type": "string",
          "description": "Custom shell command for calling a specific discovered tool"
        },
        "useRipgrep": {
          "type": "boolean",
          "description": "Use ripgrep for file content search",
          "default": true
        },
        "useBuiltinRipgrep": {
          "type": "boolean",
          "description": "Use the bundled ripgrep binary (requires tools.useRipgrep: true)",
          "default": true
        },
        "truncateToolOutputThreshold": {
          "type": "integer",
          "description": "Truncate output if larger than this many characters",
          "default": 25000
        },
        "truncateToolOutputLines": {
          "type": "integer",
          "description": "Maximum lines/entries kept when truncating output",
          "default": 1000
        }
      },
      "additionalProperties": false
    },
    "mcp": {
      "type": "object",
      "description": "MCP (Model Context Protocol) configuration",
      "properties": {
        "serverCommand": {
          "type": "string",
          "description": "Command to start an MCP server"
        },
        "allowed": {
          "type": "array",
          "description": "Allowlist of MCP server names",
          "items": {
            "type": "string"
          }
        },
        "excluded": {
          "type": "array",
          "description": "Denylist of MCP server names",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "security": {
      "type": "object",
      "description": "Security configuration",
      "properties": {
        "folderTrust": {
          "type": "object",
          "description": "Folder trust configuration",
          "properties": {
            "enabled": {
              "type": "boolean",
              "description": "Setting to track whether Folder trust is enabled",
              "default": false
            }
          },
          "additionalProperties": false
        },
        "auth": {
          "type": "object",
          "description": "Authentication configuration",
          "properties": {
            "selectedType": {
              "type": "string",
              "description": "The currently selected authentication type"
            },
            "enforcedType": {
              "type": "string",
              "description": "The required auth type (useful for enterprises)"
            },
            "useExternal": {
              "type": "boolean",
              "description": "Whether to use an external authentication flow"
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "advanced": {
      "type": "object",
      "description": "Advanced configuration options",
      "properties": {
        "autoConfigureMemory": {
          "type": "boolean",
          "description": "Automatically configure Node.js memory limits",
          "default": false
        },
        "dnsResolutionOrder": {
          "type": "string",
          "description": "The DNS resolution order"
        },
        "excludedEnvVars": {
          "type": "array",
          "description": "Environment variables to exclude from project context",
          "items": {
            "type": "string"
          },
          "default": [
            "DEBUG",
            "DEBUG_MODE"
          ]
        },
        "tavilyApiKey": {
          "type": "string",
          "description": "API key for Tavily web search service"
        },
        "bugCommand": {
          "type": "object",
          "description": "Bug command configuration",
          "properties": {
            "urlTemplate": {
              "type": "string",
              "description": "A URL that can contain {title} and {info} placeholders for the /bug command"
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "mcpServers": {
      "type": "object",
      "description": "Model-Context Protocol server configurations",
      "additionalProperties": {
        "type": "object",
        "description": "MCP server configuration",
        "properties": {
          "command": {
            "type": "string",
            "description": "The command to execute to start the MCP server via stdio"
          },
          "args": {
            "type": "array",
            "description": "Arguments to pass to the command",
            "items": {
              "type": "string"
            }
          },
          "env": {
            "type": "object",
            "description": "Environment variables to set for the server process",
            "additionalProperties": {
              "type": "string"
            }
          },
          "cwd": {
            "type": "string",
            "description": "The working directory in which to start the server"
          },
          "url": {
            "type": "string",
            "description": "The URL of an MCP server using Server-Sent Events (SSE)"
          },
          "httpUrl": {
            "type": "string",
            "description": "The URL of an MCP server using streamable HTTP"
          },
          "headers": {
            "type": "object",
            "description": "A map of HTTP headers to send with requests to url or httpUrl",
            "additionalProperties": {
              "type": "string"
            }
          },
          "timeout": {
            "type": "number",
            "description": "Timeout in milliseconds for requests to this MCP server"
          },
          "trust": {
            "type": "boolean",
            "description": "Trust this server and bypass all tool call confirmations"
          },
          "description": {
            "type": "string",
            "description": "A brief description of the server"
          },
          "includeTools": {
            "type": "array",
            "description": "Allowlist of tool names from this MCP server",
            "items": {
              "type": "string"
            }
          },
          "excludeTools": {
            "type": "array",
            "description": "Denylist of tool names from this MCP server (takes precedence over includeTools)",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      }
    },
    "telemetry": {
      "type": "object",
      "description": "Telemetry configuration",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether or not telemetry is enabled"
        },
        "target": {
          "type": "string",
          "description": "The destination for collected telemetry",
          "enum": [
            "local",
            "gcp"
          ]
        },
        "otlpEndpoint": {
          "type": "string",
          "description": "The endpoint for the OTLP Exporter"
        },
        "otlpProtocol": {
          "type": "string",
          "description": "The protocol for the OTLP Exporter",
          "enum": [
            "grpc",
            "http"
          ]
        },
        "logPrompts": {
          "type": "boolean",
          "description": "Whether or not to include the content of user prompts in the logs"
        },
        "outfile": {
          "type": "string",
          "description": "The file to write telemetry to when target is local"
        },
        "useCollector": {
          "type": "boolean",
          "description": "Whether to use an external OTLP collector"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
