{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "definitions": {
    "CompilerConfig": {
      "description": "Vue compiler options",
      "type": "object",
      "properties": {
        "mode": {
          "description": "Compilation mode",
          "default": "module",
          "type": "string",
          "enum": ["module", "function"]
        },
        "vapor": {
          "description": "Enable Vapor mode compilation",
          "default": false,
          "type": "boolean"
        },
        "jsxMode": {
          "description": "Default output mode for .jsx/.tsx components without a \"use vue:*\" directive",
          "default": "vdom",
          "type": "string",
          "enum": ["vdom", "vapor"]
        },
        "customRenderer": {
          "description": "Treat lowercase non-HTML tags as custom renderer elements",
          "default": false,
          "type": "boolean"
        },
        "ssr": {
          "description": "Enable SSR mode",
          "default": false,
          "type": "boolean"
        },
        "templateSyntax": {
          "description": "Template syntax compatibility mode",
          "default": "standard",
          "type": "string",
          "enum": ["standard", "strict", "quirks"]
        },
        "sourceMap": {
          "description": "Enable source map generation",
          "type": "boolean"
        },
        "prefixIdentifiers": {
          "description": "Prefix template identifiers with _ctx",
          "default": false,
          "type": "boolean"
        },
        "hoistStatic": {
          "description": "Hoist static nodes",
          "default": true,
          "type": "boolean"
        },
        "cacheHandlers": {
          "description": "Cache v-on handlers",
          "default": true,
          "type": "boolean"
        },
        "isTs": {
          "description": "Enable TypeScript parsing in <script> blocks",
          "default": true,
          "type": "boolean"
        },
        "scriptExt": {
          "description": "Script file extension for generated output",
          "default": "ts",
          "type": "string",
          "enum": ["ts", "js"]
        },
        "runtimeModuleName": {
          "description": "Module name for runtime imports",
          "default": "vue",
          "type": "string"
        },
        "runtimeGlobalName": {
          "description": "Global variable name for runtime (IIFE builds)",
          "default": "Vue",
          "type": "string"
        },
        "compatibility": {
          "$ref": "#/definitions/CompilerCompatibilityConfig"
        }
      },
      "additionalProperties": false
    },
    "VueVersion": {
      "description": "Host Vue runtime version for opt-in compatibility modes",
      "type": "string",
      "enum": ["3", "2.7", "2", "1", "0.11", "0.10"]
    },
    "CompilerCompatibilityConfig": {
      "description": "Opt-in compatibility features for unsupported host/runtime combinations",
      "type": "object",
      "properties": {
        "vueVersion": {
          "$ref": "#/definitions/VueVersion"
        },
        "hostCompiler": {
          "description": "Delegate .vue compilation to the host Vue compiler for legacy Vue runtimes",
          "type": "boolean"
        },
        "scriptSetupInStandalone": {
          "description": "Enable <script setup> when emitting function-body output for CDN/global Vue usage",
          "default": false,
          "type": "boolean"
        },
        "optionsApiVapor": {
          "description": "Allow Vapor output for Options API SFCs when Vapor mode is enabled",
          "default": false,
          "type": "boolean"
        },
        "nuxtVersion": {
          "description": "Host Nuxt major version for compatibility bridges",
          "type": "integer",
          "enum": [2, 3, 4]
        },
        "webpackVersion": {
          "description": "Host Webpack major version for compatibility bridges",
          "type": "integer",
          "enum": [4, 5]
        }
      },
      "additionalProperties": false
    },
    "VitePluginConfig": {
      "type": "object",
      "properties": {
        "include": {
          "description": "Files to include in compilation (glob patterns or strings)",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ]
        },
        "exclude": {
          "description": "Files to exclude from compilation (glob patterns or strings)",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ]
        },
        "scanPatterns": {
          "description": "Glob patterns to scan for .vue files during pre-compilation",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "ignorePatterns": {
          "description": "Glob patterns to ignore during pre-compilation",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "LinterConfig": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "preset": {
          "default": "ecosystem",
          "type": "string",
          "enum": ["happy-path", "opinionated", "essential", "incremental", "ecosystem", "nuxt"]
        },
        "typeAware": {
          "type": "boolean"
        },
        "rules": {
          "description": "Rules to enable/disable",
          "type": "object",
          "additionalProperties": {
            "type": "string",
            "enum": ["off", "warn", "error"]
          }
        },
        "categories": {
          "description": "Category-level severity overrides",
          "type": "object",
          "properties": {
            "correctness": {
              "type": "string",
              "enum": ["off", "warn", "error"]
            },
            "suspicious": {
              "type": "string",
              "enum": ["off", "warn", "error"]
            },
            "style": {
              "type": "string",
              "enum": ["off", "warn", "error"]
            },
            "perf": {
              "type": "string",
              "enum": ["off", "warn", "error"]
            },
            "a11y": {
              "type": "string",
              "enum": ["off", "warn", "error"]
            },
            "security": {
              "type": "string",
              "enum": ["off", "warn", "error"]
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "TypeCheckerConfig": {
      "type": "object",
      "properties": {
        "enabled": {
          "description": "Enable type checking",
          "default": true,
          "type": "boolean"
        },
        "strict": {
          "description": "Enable strict mode",
          "default": false,
          "type": "boolean"
        },
        "checkProps": {
          "description": "Check component props",
          "default": true,
          "type": "boolean"
        },
        "checkEmits": {
          "description": "Check component emits",
          "default": true,
          "type": "boolean"
        },
        "checkTemplateBindings": {
          "description": "Check template bindings",
          "default": true,
          "type": "boolean"
        },
        "checkReactivity": {
          "description": "Check reactivity loss patterns",
          "default": true,
          "type": "boolean"
        },
        "checkSetupContext": {
          "description": "Check setup context violations",
          "default": true,
          "type": "boolean"
        },
        "checkInvalidExports": {
          "description": "Check invalid exports in <script setup>",
          "default": true,
          "type": "boolean"
        },
        "checkFallthroughAttrs": {
          "description": "Check fallthrough attrs on multi-root templates",
          "default": true,
          "type": "boolean"
        },
        "optionsApi": {
          "description": "Resolve Vue 3 Options API template bindings (data/computed/methods/inject/setup/props) during type checking. Default-on (matches vue-tsc); set to false to opt out. Available in the standard build (not a legacy feature).",
          "default": true,
          "type": "boolean"
        },
        "legacyVue2": {
          "description": "Enable Vue 2.7 / Nuxt 2 Options API template binding support",
          "default": false,
          "type": "boolean"
        },
        "jsxTypecheck": {
          "description": "Opt-in type-checking of .jsx/.tsx Vue components (#1497). Default-off so mixed Vue/React repositories do not accidentally route React .tsx through the Vue JSX checker. Set to true to route .jsx/.tsx through the Vize JSX virtual-TS path.",
          "default": false,
          "type": "boolean"
        },
        "tsconfig": {
          "description": "Path to tsconfig.json",
          "type": "string"
        },
        "corsaPath": {
          "description": "Path to the Corsa executable. This is the canonical runtime key; tsgoPath is kept as a compatibility alias.",
          "type": "string"
        },
        "tsgoPath": {
          "description": "Deprecated alias for typeChecker.corsaPath",
          "type": "string"
        },
        "globalsFile": {
          "description": "Path to a .d.ts file that declares template globals",
          "type": "string"
        },
        "servers": {
          "description": "Reserved Corsa server count. The direct project-session runner currently supports only 1.",
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "FormatterConfig": {
      "description": "Formatter options",
      "type": "object",
      "properties": {
        "printWidth": {
          "description": "Max line width",
          "default": 100,
          "type": "integer"
        },
        "tabWidth": {
          "description": "Indentation width",
          "default": 2,
          "type": "integer"
        },
        "useTabs": {
          "description": "Use tabs for indentation",
          "default": false,
          "type": "boolean"
        },
        "semi": {
          "description": "Print semicolons",
          "default": true,
          "type": "boolean"
        },
        "singleQuote": {
          "description": "Use single quotes",
          "default": false,
          "type": "boolean"
        },
        "jsxSingleQuote": {
          "description": "Use single quotes in JSX",
          "default": false,
          "type": "boolean"
        },
        "trailingComma": {
          "description": "Trailing commas",
          "default": "all",
          "type": "string",
          "enum": ["all", "none", "es5"]
        },
        "bracketSpacing": {
          "description": "Print spaces between brackets in object literals",
          "default": true,
          "type": "boolean"
        },
        "bracketSameLine": {
          "description": "Keep > on the last line of multiline tags",
          "default": false,
          "type": "boolean"
        },
        "arrowParens": {
          "description": "Arrow parens mode",
          "default": "always",
          "type": "string",
          "enum": ["always", "avoid"]
        },
        "endOfLine": {
          "description": "End-of-line mode",
          "default": "lf",
          "type": "string",
          "enum": ["lf", "crlf", "cr", "auto"]
        },
        "quoteProps": {
          "description": "Object property quoting mode",
          "default": "as-needed",
          "type": "string",
          "enum": ["as-needed", "consistent", "preserve"]
        },
        "singleAttributePerLine": {
          "description": "Force one attribute per line",
          "default": false,
          "type": "boolean"
        },
        "vueIndentScriptAndStyle": {
          "description": "Indent script and style blocks",
          "default": false,
          "type": "boolean"
        },
        "sortAttributes": {
          "description": "Sort attributes",
          "default": true,
          "type": "boolean"
        },
        "attributeSortOrder": {
          "description": "Attribute ordering strategy",
          "default": "alphabetical",
          "type": "string",
          "enum": ["alphabetical", "as-written"]
        },
        "mergeBindAndNonBindAttrs": {
          "description": "Merge bind and non-bind attrs for sorting",
          "default": false,
          "type": "boolean"
        },
        "maxAttributesPerLine": {
          "description": "Maximum attributes per line before wrapping",
          "type": "integer"
        },
        "attributeGroups": {
          "description": "Custom attribute groups",
          "type": "array",
          "items": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "normalizeDirectiveShorthands": {
          "description": "Normalize directive shorthands",
          "default": true,
          "type": "boolean"
        },
        "sortBlocks": {
          "description": "Sort SFC blocks in canonical order",
          "default": true,
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "LanguageServerConfig": {
      "description": "Language server options",
      "type": "object",
      "properties": {
        "enabled": {
          "description": "Enable the language server",
          "type": "boolean"
        },
        "lint": {
          "description": "Enable lint diagnostics",
          "type": "boolean"
        },
        "diagnostics": {
          "description": "Deprecated alias for lint",
          "type": "boolean"
        },
        "typecheck": {
          "description": "Enable project type checking diagnostics",
          "type": "boolean"
        },
        "editor": {
          "description": "Enable editor-oriented IDE features",
          "type": "boolean"
        },
        "ecosystem": {
          "description": "Enable Vue ecosystem lint and editor helpers",
          "type": "boolean"
        },
        "legacyVue2": {
          "description": "Enable Vue 2.7 / Nuxt 2 editor and type-checking compatibility",
          "type": "boolean"
        },
        "completion": {
          "description": "Enable completions",
          "type": "boolean"
        },
        "hover": {
          "description": "Enable hover information",
          "type": "boolean"
        },
        "definition": {
          "description": "Enable go-to-definition",
          "type": "boolean"
        },
        "references": {
          "description": "Enable reference search",
          "type": "boolean"
        },
        "documentSymbols": {
          "description": "Enable document symbols",
          "type": "boolean"
        },
        "workspaceSymbols": {
          "description": "Enable workspace symbols",
          "type": "boolean"
        },
        "formatting": {
          "description": "Enable formatting via the language server",
          "type": "boolean"
        },
        "codeActions": {
          "description": "Enable code actions",
          "type": "boolean"
        },
        "rename": {
          "description": "Enable rename support",
          "type": "boolean"
        },
        "codeLens": {
          "description": "Enable code lenses",
          "type": "boolean"
        },
        "semanticTokens": {
          "description": "Enable semantic tokens",
          "type": "boolean"
        },
        "documentLinks": {
          "description": "Enable document links",
          "type": "boolean"
        },
        "foldingRanges": {
          "description": "Enable folding ranges",
          "type": "boolean"
        },
        "inlayHints": {
          "description": "Enable inlay hints",
          "type": "boolean"
        },
        "fileRename": {
          "description": "Enable file rename edits",
          "type": "boolean"
        },
        "corsa": {
          "description": "Enable Corsa-backed IDE features",
          "type": "boolean"
        },
        "tsgo": {
          "description": "Deprecated alias for corsa",
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "MuseaViewport": {
      "type": "object",
      "properties": {
        "width": {
          "description": "Viewport width",
          "type": "integer"
        },
        "height": {
          "description": "Viewport height",
          "type": "integer"
        },
        "name": {
          "description": "Viewport name",
          "type": "string"
        }
      },
      "additionalProperties": false,
      "required": ["width", "height"]
    },
    "MuseaVrtConfig": {
      "description": "VRT (Visual Regression Testing) configuration",
      "type": "object",
      "properties": {
        "threshold": {
          "description": "Threshold for pixel comparison (0-1)",
          "default": 0.1,
          "type": "number"
        },
        "outDir": {
          "description": "Output directory for screenshots",
          "default": "__musea_snapshots__",
          "type": "string"
        },
        "viewports": {
          "description": "Viewport sizes",
          "type": "array",
          "items": {
            "$ref": "#/definitions/MuseaViewport"
          }
        }
      },
      "additionalProperties": false
    },
    "MuseaA11yConfig": {
      "description": "A11y configuration",
      "type": "object",
      "properties": {
        "enabled": {
          "description": "Enable a11y checking",
          "default": false,
          "type": "boolean"
        },
        "rules": {
          "description": "Axe-core rules to enable/disable",
          "type": "object",
          "additionalProperties": {
            "type": "boolean"
          }
        }
      },
      "additionalProperties": false
    },
    "MuseaAutogenConfig": {
      "description": "Autogen configuration",
      "type": "object",
      "properties": {
        "enabled": {
          "description": "Enable auto-generation of variants",
          "default": false,
          "type": "boolean"
        },
        "maxVariants": {
          "description": "Max variants to generate per component",
          "default": 10,
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "MuseaConfig": {
      "description": "Musea component gallery options",
      "type": "object",
      "properties": {
        "include": {
          "description": "Glob patterns for art files",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "exclude": {
          "description": "Glob patterns to exclude",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "basePath": {
          "description": "Base path for gallery",
          "default": "/__musea__",
          "type": "string"
        },
        "storybookCompat": {
          "description": "Enable Storybook compatibility",
          "default": false,
          "type": "boolean"
        },
        "inlineArt": {
          "description": "Enable inline art detection in .vue files",
          "default": false,
          "type": "boolean"
        },
        "vrt": {
          "$ref": "#/definitions/MuseaVrtConfig"
        },
        "a11y": {
          "$ref": "#/definitions/MuseaA11yConfig"
        },
        "autogen": {
          "$ref": "#/definitions/MuseaAutogenConfig"
        }
      },
      "additionalProperties": false
    },
    "GlobalTypeDeclaration": {
      "description": "Global type declaration",
      "type": "object",
      "properties": {
        "type": {
          "description": "TypeScript type string",
          "type": "string"
        },
        "defaultValue": {
          "description": "Default value",
          "type": "string"
        }
      },
      "additionalProperties": false,
      "required": ["type"]
    },
    "GlobalTypesConfig": {
      "description": "Global type declarations",
      "type": "object",
      "additionalProperties": {
        "oneOf": [
          {
            "type": "string"
          },
          {
            "$ref": "#/definitions/GlobalTypeDeclaration"
          }
        ]
      }
    },
    "VizeConfigEntry": {
      "description": "Scoped Vize config entry for monorepos and workspaces",
      "type": "object",
      "properties": {
        "name": {
          "description": "Human-readable entry name for inspect output and diagnostics",
          "type": "string"
        },
        "basePath": {
          "description": "Directory used as the base for scoped file patterns and relative paths",
          "type": "string"
        },
        "files": {
          "description": "Glob patterns this entry applies to",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "ignores": {
          "description": "Glob patterns this entry excludes",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "extends": {
          "description": "Base config files or presets to compose",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ]
        },
        "dialect": {
          "description": "Vue dialect profile for standalone HTML documents; when absent the dialect is detected structurally per document",
          "type": "string",
          "enum": ["vue", "petite-vue"]
        },
        "compiler": {
          "$ref": "#/definitions/CompilerConfig"
        },
        "experimentals": { "type": "object" },
        "vite": {
          "$ref": "#/definitions/VitePluginConfig"
        },
        "linter": {
          "$ref": "#/definitions/LinterConfig"
        },
        "typeChecker": {
          "$ref": "#/definitions/TypeCheckerConfig"
        },
        "formatter": {
          "$ref": "#/definitions/FormatterConfig"
        },
        "languageServer": {
          "$ref": "#/definitions/LanguageServerConfig"
        },
        "lsp": {
          "$ref": "#/definitions/LanguageServerConfig"
        },
        "musea": {
          "$ref": "#/definitions/MuseaConfig"
        },
        "globalTypes": {
          "$ref": "#/definitions/GlobalTypesConfig"
        }
      },
      "additionalProperties": false
    }
  },
  "title": "VizeConfig",
  "description": "Configuration file for vize - High-performance Vue.js toolchain",
  "type": "object",
  "properties": {
    "$schema": {
      "description": "JSON Schema reference for editor autocompletion",
      "type": "string"
    },
    "name": {
      "description": "Human-readable entry name for inspect output and diagnostics",
      "type": "string"
    },
    "basePath": {
      "description": "Directory used as the base for scoped file patterns and relative paths",
      "type": "string"
    },
    "files": {
      "description": "Glob patterns this config applies to",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "ignores": {
      "description": "Glob patterns this config excludes",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "extends": {
      "description": "Base config files or presets to compose",
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      ]
    },
    "dialect": {
      "description": "Vue dialect profile for standalone HTML documents; when absent the dialect is detected structurally per document",
      "type": "string",
      "enum": ["vue", "petite-vue"]
    },
    "compiler": {
      "$ref": "#/definitions/CompilerConfig"
    },
    "experimentals": { "type": "object" },
    "vite": {
      "$ref": "#/definitions/VitePluginConfig"
    },
    "linter": {
      "$ref": "#/definitions/LinterConfig"
    },
    "typeChecker": {
      "$ref": "#/definitions/TypeCheckerConfig"
    },
    "formatter": {
      "$ref": "#/definitions/FormatterConfig"
    },
    "languageServer": {
      "$ref": "#/definitions/LanguageServerConfig"
    },
    "lsp": {
      "$ref": "#/definitions/LanguageServerConfig"
    },
    "musea": {
      "$ref": "#/definitions/MuseaConfig"
    },
    "globalTypes": {
      "$ref": "#/definitions/GlobalTypesConfig"
    },
    "entries": {
      "description": "Scoped config entries for monorepos and workspaces",
      "type": "array",
      "items": {
        "$ref": "#/definitions/VizeConfigEntry"
      }
    }
  },
  "additionalProperties": false
}
