diff --git a/lua/lspconfig/types/lsp/angularls.lua b/lua/lspconfig/types/lsp/angularls.lua
new file mode 100644
index 00000000..d9de6492
--- /dev/null
+++ b/lua/lspconfig/types/lsp/angularls.lua
@@ -0,0 +1,270 @@
+---@meta
+
+---@class _.lspconfig.settings.angularls.Angular.DocumentSymbols
+---Enable Angular-specific document symbols in the Outline view and breadcrumbs. Shows control flow blocks (`@if`, `@for`, `@defer`), elements, variables, and structural directives.
+---
+---```lua
+---default = true
+---```
+---@field enabled? boolean
+---Show all implicit `@for` loop variables (`$index`, `$count`, `$first`, `$last`, `$even`, `$odd`) in document symbols. When disabled (default), only explicitly aliased variables like `let i = $index` are shown.
+---@field showImplicitForVariables? boolean
+
+---@class _.lspconfig.settings.angularls.Angular.InlayHints.BindingHints
+---Show type hints for pipe output types.
+---
+---Example:
+---
+---```html
+---{{ value | async /* : User | null */ }}
+---```
+---@field pipeOutputTypes? boolean
+---Show type hints for property/input bindings.
+---
+---Example:
+---
+---```html
+---
+---```
+---@field propertyBindingTypes? boolean
+---Visual indicator for required inputs. `'asterisk'` shows `*`, `'exclamation'` shows `!` after the type.
+---
+---Example:
+---
+---```html
+---
+---```
+---
+---```lua
+---default = "none"
+---```
+---@field requiredInputIndicator? "none" | "asterisk" | "exclamation"
+---Show signal type hints for two-way bindings.
+---
+---Example:
+---
+---```html
+--- */)]="model" />
+---```
+---@field twoWayBindingSignalTypes? boolean
+
+---@class _.lspconfig.settings.angularls.Angular.InlayHints.ControlFlowHints
+---Show type hints for `@defer` `when` trigger expressions. The expression is evaluated by truthiness, so its type is not always `boolean`.
+---
+---Example:
+---
+---```html
+---@defer (when user /* : User | null */) { ... }
+---```
+---@field deferTriggerTypes? boolean
+---Show type hints for `@switch` expression types.
+---
+---Example:
+---
+---```html
+---@switch (status /* : Status */) { ... }
+---```
+---@field switchExpressionTypes? boolean
+
+---@class _.lspconfig.settings.angularls.Angular.InlayHints.EventHints
+---Show type hints for host listener handler arguments.
+---
+---Examples:
+---
+---```ts
+---@HostListener('keydown', ['$event', '$event.target'])
+---onHostKey(event /* : KeyboardEvent */, target /* : EventTarget | null */) {}
+---```
+---
+---```ts
+---host: {
+--- '(keydown)': 'onHostKey($event /* : KeyboardEvent */, $event.target /* : EventTarget | null */)',
+---}
+---```
+---@field hostListenerArgumentTypes? boolean
+---Show type hints for event binding `$event` parameter.
+---
+---Example:
+---
+---```html
+---
+---```
+---@field parameterTypes? boolean
+
+---@class _.lspconfig.settings.angularls.Angular.InlayHints.FunctionTypes
+---Show type hints for arrow function parameters in templates.
+---
+---Example:
+---
+---```html
+---{{ value | apply : (x /* : number */) => x * 2 }}
+---```
+---@field arrowFunctionParameterTypes? boolean
+---Show return type hints for arrow functions in templates.
+---
+---Example:
+---
+---```html
+---{{ value | apply : (x) /* : number */ => x * 2 }}
+---```
+---@field arrowFunctionReturnTypes? boolean
+
+---@class _.lspconfig.settings.angularls.Angular.InlayHints.Interaction
+---Enable interactive inlay hints that navigate to definitions when clicked.
+---
+---Example:
+---
+---```html
+---{{ formatAmount(/* precision: */ 2) }}
+---```
+---
+---With this enabled, hint parts can be navigated.
+---@field interactiveInlayHints? boolean
+
+---@class _.lspconfig.settings.angularls.Angular.InlayHints.ParameterHints
+---Show parameter name hints for function/method calls. `'literals'` shows hints only for literal arguments.
+---
+---Example:
+---
+---```html
+---{{ formatAmount(/* value: */ amount, /* precision: */ 2) }}
+---```
+---
+---```lua
+---default = "all"
+---```
+---@field nameHints? "none" | "literals" | "all"
+---Suppress parameter name hints when argument name matches parameter name.
+---
+---Example:
+---
+---```html
+---{{ onClick(user) }}
+---```
+---
+---When enabled, suppresses hints where argument text already conveys the same name.
+---
+---```lua
+---default = true
+---```
+---@field suppressWhenArgumentMatchesName? boolean
+
+---@class _.lspconfig.settings.angularls.Angular.InlayHints.VariableTypes
+---Show type hints for `@for` loop variables.
+---
+---Example:
+---
+---```html
+---@for (user /* : User */ of users) { ... }
+---```
+---@field forLoopVariableTypes? boolean
+---Show type hints for `@if` alias variables. Set to `'complex'` to only show hints for complex expressions.
+---
+---Examples:
+---
+---```html
+---@if (user; as u) { {{ u.name }} } // simple expression
+---@if (user.profile; as profile /* : Profile */) { {{ profile.name }} } // complex expression
+---```
+---@field ifAliasTypes? true | false | "complex"
+---Show type hints for `@let` declarations.
+---
+---Example:
+---
+---```html
+---@let count /* : number */ = items.length
+---```
+---@field letDeclarationTypes? boolean
+---Show type hints for template reference variables.
+---
+---Example:
+---
+---```html
+---
+---```
+---@field referenceVariableTypes? boolean
+---Suppress variable type hints when variable name matches type name (case-insensitive).
+---
+---Example:
+---
+---```html
+---@let user = getUser()
+---```
+---
+---When enabled, suppresses `/* : User */` for names like `user: User`.
+---@field suppressWhenTypeMatchesName? boolean
+
+---@class _.lspconfig.settings.angularls.Angular.InlayHints
+---@field bindingHints? _.lspconfig.settings.angularls.Angular.InlayHints.BindingHints
+---@field controlFlowHints? _.lspconfig.settings.angularls.Angular.InlayHints.ControlFlowHints
+---@field eventHints? _.lspconfig.settings.angularls.Angular.InlayHints.EventHints
+---@field functionTypes? _.lspconfig.settings.angularls.Angular.InlayHints.FunctionTypes
+---@field interaction? _.lspconfig.settings.angularls.Angular.InlayHints.Interaction
+---@field parameterHints? _.lspconfig.settings.angularls.Angular.InlayHints.ParameterHints
+---@field variableTypes? _.lspconfig.settings.angularls.Angular.InlayHints.VariableTypes
+
+---@class _.lspconfig.settings.angularls.Angular.Server
+---When enabled, the Angular Language Service will delegate file watching to VS Code instead of creating its own internal file watchers. This can significantly improve performance (greater than 10x faster initialization) and reduce resource usage in large repositories.
+---
+---```lua
+---default = true
+---```
+---@field useClientSideFileWatcher? boolean
+
+---@class _.lspconfig.settings.angularls.Angular.Suggest
+---Enable/disable auto import suggestions for the exported Angular components from the current project.
+---
+---```lua
+---default = true
+---```
+---@field autoImports? boolean
+---Enable showing completions on potentially undefined values that insert an optional chain call. Requires TS 3.7+ and strict null checks to be enabled.
+---
+---```lua
+---default = true
+---```
+---@field includeAutomaticOptionalChainCompletions? boolean
+---Enable snippet completions from Angular language server. Requires using TypeScript 4.3+ in the workspace.
+---
+---```lua
+---default = true
+---```
+---@field includeCompletionsWithSnippetText? boolean
+
+---@class _.lspconfig.settings.angularls.Angular.Trace
+---Traces the communication between VS Code and the Angular language server.
+---
+---```lua
+---default = "off"
+---```
+---@field server? "off" | "messages" | "verbose"
+
+---@class _.lspconfig.settings.angularls.Angular
+---@field documentSymbols? _.lspconfig.settings.angularls.Angular.DocumentSymbols
+---Prompt to enable the [strictTemplates](https://angular.dev/reference/configs/angular-compiler-options#stricttemplates) flag in [angularCompilerOptions](https://angular.dev/reference/configs/angular-compiler-options).
+---
+---```lua
+---default = true
+---```
+---@field ["enable-strict-mode-prompt"]? boolean
+---Enabling this option will force the language service to use [strictTemplates](https://angular.dev/reference/configs/angular-compiler-options#stricttemplates) and ignore the user settings in the `tsconfig.json`.
+---@field forceStrictTemplates? boolean
+---@field inlayHints? _.lspconfig.settings.angularls.Angular.InlayHints
+---Enables logging of the Angular server to a file. This log can be used to diagnose Angular Server issues. The log may contain file paths, source code, and other potentially sensitive information from your project.
+---
+---```lua
+---default = "off"
+---```
+---@field log? "off" | "terse" | "normal" | "verbose"
+---@field server? _.lspconfig.settings.angularls.Angular.Server
+---@field suggest? _.lspconfig.settings.angularls.Angular.Suggest
+---A comma-separated list of error codes in templates whose diagnostics should be ignored.
+---
+---```lua
+---default = ""
+---```
+---@field suppressAngularDiagnosticCodes? string
+---@field trace? _.lspconfig.settings.angularls.Angular.Trace
+
+---@class lspconfig.settings.angularls
+---@field angular? _.lspconfig.settings.angularls.Angular
diff --git a/lua/lspconfig/types/lsp/ansiblels.lua b/lua/lspconfig/types/lsp/ansiblels.lua
new file mode 100644
index 00000000..031d2525
--- /dev/null
+++ b/lua/lspconfig/types/lsp/ansiblels.lua
@@ -0,0 +1,230 @@
+---@meta
+
+---@class _.lspconfig.settings.ansiblels.Ansible.Ansible
+---Path to the ansible executable. All subcommands are expected to have adjacent locations.
+---
+---```lua
+---default = "ansible"
+---```
+---@field path? string
+---Enabling this will cause ansible commands run through VS Code to reuse the same Ansible Terminal.
+---@field reuseTerminal? boolean
+---Always use fully qualified collection names (FQCN) when inserting a module name. Disabling it will only use FQCNs when necessary.
+---
+---```lua
+---default = true
+---```
+---@field useFullyQualifiedCollectionNames? boolean
+
+---@class _.lspconfig.settings.ansiblels.Ansible.AnsibleNavigator
+---%configuration.navigate.executablePath%
+---
+---```lua
+---default = "ansible-navigator"
+---```
+---@field path? string
+
+---@class _.lspconfig.settings.ansiblels.Ansible.Completion
+---Toggle alias provider when completing module options.
+---
+---```lua
+---default = true
+---```
+---@field provideModuleOptionAliases? boolean
+---Toggle redirected module provider when completing modules.
+---
+---```lua
+---default = true
+---```
+---@field provideRedirectModules? boolean
+
+---@class _.lspconfig.settings.ansiblels.Ansible.ExecutionEnvironment.Pull
+---Specify any additional parameters that should be added to the pull command when pulling an execution environment from a container registry. e.g. `–-tls-verify=false`.
+---
+---```lua
+---default = ""
+---```
+---@field arguments? string
+---Specify the image pull policy.
+---**always**: Always pull the image when extension is activated or reloaded
+---**missing**: Pull if not locally available
+---**never**: Never pull the image
+---**tag**: If the image tag is `latest`, always pull the image, otherwise pull if not locally available.
+---
+---```lua
+---default = "missing"
+---```
+---@field policy? "always" | "missing" | "never" | "tag"
+
+---@class _.lspconfig.settings.ansiblels.Ansible.ExecutionEnvironment
+---Specify the container engine (auto=podman then docker).
+---
+---```lua
+---default = "auto"
+---```
+---@field containerEngine? "auto" | "podman" | "docker"
+---Extra parameters passed to the container engine command example: `--net=host`.
+---
+---```lua
+---default = ""
+---```
+---@field containerOptions? string
+---Enable or disable the use of an execution environment.
+---@field enabled? boolean
+---Specify the name of the execution environment image.
+---
+---```lua
+---default = "ghcr.io/ansible/community-ansible-dev-tools:latest"
+---```
+---@field image? string
+---@field pull? _.lspconfig.settings.ansiblels.Ansible.ExecutionEnvironment.Pull
+---Add a dictionary entry to the array with the volume mount source path (key: 'src'), destination (key: 'dest'), and options (key: 'options')
+---
+---```lua
+---default = {}
+---```
+---@field volumeMounts? any[]
+
+---@class _.lspconfig.settings.ansiblels.Ansible.Lightspeed.Suggestions
+---Enable inline suggestions. Note: Currently only supported with WCA provider.
+---
+---```lua
+---default = true
+---```
+---@field enabled? boolean
+---Delay (in msecs) prior to sending an inline suggestion request.
+---
+---```lua
+---default = 0
+---```
+---@field waitWindow? number
+
+---@class _.lspconfig.settings.ansiblels.Ansible.Lightspeed
+---API endpoint URL for the selected provider.
+---
+---```lua
+---default = ""
+---```
+---@field apiEndpoint? string
+---API key for authentication.
+---
+---```lua
+---default = ""
+---```
+---@field apiKey? string
+---Enable Ansible Lightspeed.
+---
+---```lua
+---default = true
+---```
+---@field enabled? boolean
+---Model name/ID to use.
+---
+---```lua
+---default = ""
+---```
+---@field modelName? string
+---LLM provider to use.
+---
+---```lua
+---default = "wca"
+---```
+---@field provider? "wca" | "google"
+---@field suggestions? _.lspconfig.settings.ansiblels.Ansible.Lightspeed.Suggestions
+---Request timeout in milliseconds for API calls.
+---
+---```lua
+---default = 30000
+---```
+---@field timeout? number
+
+---@class _.lspconfig.settings.ansiblels.Ansible.McpServer
+---Enable the Ansible Development Tools MCP (Model Context Protocol) server for AI assistant integration.
+---@field enabled? boolean
+
+---@class _.lspconfig.settings.ansiblels.Ansible.Playbook
+---%configuration.playbook.arguments%
+---
+---```lua
+---default = ""
+---```
+---@field arguments? string
+
+---@class _.lspconfig.settings.ansiblels.Ansible.Python
+---Path to the virtual environment activation script. Use only if you have a custom activation script. It will be sourced using bash before executing Ansible commands. When set, the Interpreter Path setting is ignored.
+---
+---```lua
+---default = ""
+---```
+---@field activationScript? string
+---Path to the Python interpreter executable. Particularly important if you are using a Python virtual environment. Leave blank to use Python from PATH.
+---
+---```lua
+---default = ""
+---```
+---@field interpreterPath? string
+
+---@class _.lspconfig.settings.ansiblels.Ansible.Validation.Lint
+---Command line arguments to be passed to ansible-lint.
+---
+---```lua
+---default = ""
+---```
+---@field arguments? string
+---Specifies whether `ansible-lint --fix` should run automatically when you save a file. [Learn more](https://ansible.readthedocs.io/projects/lint/autofix/)
+---@field autoFixOnSave? boolean
+---Enables `ansible-lint`. If disabled only `ansible-playbook --syntax-check` will run. Requires `#ansible.validation.enabled#` to be enabled.
+---
+---```lua
+---default = true
+---```
+---@field enabled? boolean
+---Path to the ansible-lint executable.
+---
+---```lua
+---default = "ansible-lint"
+---```
+---@field path? string
+
+---@class _.lspconfig.settings.ansiblels.Ansible.Validation
+---If disabled no validation will be performed.
+---
+---```lua
+---default = true
+---```
+---@field enabled? boolean
+---@field lint? _.lspconfig.settings.ansiblels.Ansible.Validation.Lint
+
+---@class _.lspconfig.settings.ansiblels.Ansible
+---@field ansible? _.lspconfig.settings.ansiblels.Ansible.Ansible
+---@field ansibleNavigator? _.lspconfig.settings.ansiblels.Ansible.AnsibleNavigator
+---@field completion? _.lspconfig.settings.ansiblels.Ansible.Completion
+---@field executionEnvironment? _.lspconfig.settings.ansiblels.Ansible.ExecutionEnvironment
+---@field lightspeed? _.lspconfig.settings.ansiblels.Ansible.Lightspeed
+---@field mcpServer? _.lspconfig.settings.ansiblels.Ansible.McpServer
+---@field playbook? _.lspconfig.settings.ansiblels.Ansible.Playbook
+---@field python? _.lspconfig.settings.ansiblels.Ansible.Python
+---@field validation? _.lspconfig.settings.ansiblels.Ansible.Validation
+
+---@class _.lspconfig.settings.ansiblels.AnsibleServer.Trace
+---Traces the communication between editor and the ansible language server.
+---
+---```lua
+---default = "off"
+---```
+---@field server? "off" | "messages" | "verbose"
+
+---@class _.lspconfig.settings.ansiblels.AnsibleServer
+---@field trace? _.lspconfig.settings.ansiblels.AnsibleServer.Trace
+
+---@class _.lspconfig.settings.ansiblels.Redhat.Telemetry
+---Enable usage data and errors to be sent to Red Hat servers. Read our [privacy statement](https://developers.redhat.com/article/tool-data-collection).
+---@field enabled? boolean
+
+---@class _.lspconfig.settings.ansiblels.Redhat
+---@field telemetry? _.lspconfig.settings.ansiblels.Redhat.Telemetry
+
+---@class lspconfig.settings.ansiblels
+---@field ansible? _.lspconfig.settings.ansiblels.Ansible
+---@field ansibleServer? _.lspconfig.settings.ansiblels.AnsibleServer
+---@field redhat? _.lspconfig.settings.ansiblels.Redhat
diff --git a/lua/lspconfig/types/lsp/nickel_ls.lua b/lua/lspconfig/types/lsp/nickel_ls.lua
new file mode 100644
index 00000000..7e1d90b6
--- /dev/null
+++ b/lua/lspconfig/types/lsp/nickel_ls.lua
@@ -0,0 +1,19 @@
+---@meta
+
+---@class _.lspconfig.settings.nickel_ls.Nls.Server
+---Logs the communication between VS Code and the language server.
+---@field debugLog? boolean
+---Path to nickel language server
+---
+---```lua
+---default = "nls"
+---```
+---@field path? string
+---Enables performance tracing to the given file
+---@field trace? string
+
+---@class _.lspconfig.settings.nickel_ls.Nls
+---@field server? _.lspconfig.settings.nickel_ls.Nls.Server
+
+---@class lspconfig.settings.nickel_ls
+---@field nls? _.lspconfig.settings.nickel_ls.Nls
diff --git a/lua/lspconfig/types/lsp/nil_ls.lua b/lua/lspconfig/types/lsp/nil_ls.lua
new file mode 100644
index 00000000..133bb222
--- /dev/null
+++ b/lua/lspconfig/types/lsp/nil_ls.lua
@@ -0,0 +1,50 @@
+---@meta
+
+---@class _.lspconfig.settings.nil_ls.Nil.Diagnostics
+---File globs to exclude from showing diagnostics
+---
+---```lua
+---default = {}
+---```
+---@field excludedFiles? string
+---Ignored diagnostic kinds
+---
+---```lua
+---default = {}
+---```
+---@field ignored? string
+
+---@class _.lspconfig.settings.nil_ls.Nil.Formatting
+---External formatter command with arguments
+---@field command? string[]
+
+---@class _.lspconfig.settings.nil_ls.Nil.Nix
+---The path to the `nix` binary
+---
+---```lua
+---default = "nix"
+---```
+---@field binary? string
+
+---@class _.lspconfig.settings.nil_ls.Nil.Server
+---Path to the `nil` LSP server
+---
+---```lua
+---default = "nil"
+---```
+---@field path? string
+
+---@class _.lspconfig.settings.nil_ls.Nil
+---@field diagnostics? _.lspconfig.settings.nil_ls.Nil.Diagnostics
+---Enable `coc-nil` extension
+---
+---```lua
+---default = true
+---```
+---@field enable? boolean
+---@field formatting? _.lspconfig.settings.nil_ls.Nil.Formatting
+---@field nix? _.lspconfig.settings.nil_ls.Nil.Nix
+---@field server? _.lspconfig.settings.nil_ls.Nil.Server
+
+---@class lspconfig.settings.nil_ls
+---@field ["nil"]? _.lspconfig.settings.nil_ls.Nil
diff --git a/lua/lspconfig/types/lsp/nixd.lua b/lua/lspconfig/types/lsp/nixd.lua
new file mode 100644
index 00000000..7ca24db7
--- /dev/null
+++ b/lua/lspconfig/types/lsp/nixd.lua
@@ -0,0 +1,30 @@
+---@meta
+
+---The evaluation section, provide auto completion for dynamic bindings.
+---@class _.lspconfig.settings.nixd.Eval
+---Extra depth for evaluation
+---
+---```lua
+---default = 0
+---```
+---@field depth? integer
+---@field target? any
+---The number of workers for evaluation task. defaults to std::thread::hardware_concurrency
+---@field workers? integer
+
+---Tell the language server your desired option set, for completion. This is lazily evaluated.
+---@class _.lspconfig.settings.nixd.Options
+---Enable option completion task. If you are writing a package, disable this
+---
+---```lua
+---default = "false"
+---```
+---@field enable? boolean
+---@field target? any
+
+---@class lspconfig.settings.nixd
+---The evaluation section, provide auto completion for dynamic bindings.
+---@field eval? _.lspconfig.settings.nixd.Eval
+---@field formatting? any
+---Tell the language server your desired option set, for completion. This is lazily evaluated.
+---@field options? _.lspconfig.settings.nixd.Options
diff --git a/lua/lspconfig/types/lsp/powershell_es.lua b/lua/lspconfig/types/lsp/powershell_es.lua
index 3b4292fc..53944a23 100644
--- a/lua/lspconfig/types/lsp/powershell_es.lua
+++ b/lua/lspconfig/types/lsp/powershell_es.lua
@@ -109,12 +109,6 @@
---default = true
---```
---@field whitespaceAroundOperator? boolean
----**Deprecated:** Please use the `#powershell.codeFormatting.addWhitespaceAroundPipe#` setting instead. If you've used this setting before, we have moved it for you automatically.
----
----```lua
----default = true
----```
----@field whitespaceAroundPipe? boolean
---Adds a space between a keyword and its associated script-block expression.
---
---```lua
diff --git a/lua/lspconfig/types/lsp/ruby_lsp.lua b/lua/lspconfig/types/lsp/ruby_lsp.lua
new file mode 100644
index 00000000..538a43cb
--- /dev/null
+++ b/lua/lspconfig/types/lsp/ruby_lsp.lua
@@ -0,0 +1,307 @@
+---@meta
+
+---List of enabled LSP features
+---
+---```lua
+---default = {
+--- codeActions = true,
+--- codeLens = true,
+--- completion = true,
+--- definition = true,
+--- diagnostics = true,
+--- documentHighlights = true,
+--- documentLink = true,
+--- documentSymbols = true,
+--- foldingRanges = true,
+--- formatting = true,
+--- hover = true,
+--- inlayHint = true,
+--- onTypeFormatting = true,
+--- selectionRanges = true,
+--- semanticHighlighting = true,
+--- signatureHelp = true,
+--- typeHierarchy = true,
+--- workspaceSymbol = true
+---}
+---```
+---@class _.lspconfig.settings.ruby_lsp.RubyLsp.EnabledFeatures
+---Enable code actions, like RuboCop quick fixes
+---
+---```lua
+---default = true
+---```
+---@field codeActions? boolean
+---Enable code lens, which generates clickable text to enrich editor experience
+---
+---```lua
+---default = true
+---```
+---@field codeLens? boolean
+---Enable completion, which provides suggestions for code completion
+---
+---```lua
+---default = true
+---```
+---@field completion? boolean
+---Enable go to definition, which navigates to the definition of the symbol under the cursor
+---
+---```lua
+---default = true
+---```
+---@field definition? boolean
+---Enable diagnostics, like RuboCop violations
+---
+---```lua
+---default = true
+---```
+---@field diagnostics? boolean
+---Enable document highlight, which highlights the occurrences of the entity at cursor position
+---
+---```lua
+---default = true
+---```
+---@field documentHighlights? boolean
+---Enable document link, which generates clickable link to 'PATH' based on '# source://PATH' comments
+---
+---```lua
+---default = true
+---```
+---@field documentLink? boolean
+---Enable document symbols, which populates the file outline and breadcrumbs
+---
+---```lua
+---default = true
+---```
+---@field documentSymbols? boolean
+---Enable folding ranges, which populates the places where code can be folded
+---
+---```lua
+---default = true
+---```
+---@field foldingRanges? boolean
+---Enable formatting
+---
+---```lua
+---default = true
+---```
+---@field formatting? boolean
+---Enable hover, which displays a widget with extra information when hovering over certain code
+---
+---```lua
+---default = true
+---```
+---@field hover? boolean
+---Enable inlay hints
+---
+---```lua
+---default = true
+---```
+---@field inlayHint? boolean
+---Enable on type formatting
+---
+---```lua
+---default = true
+---```
+---@field onTypeFormatting? boolean
+---Enable selection ranges, which selects code based on the position of the cursor(s)
+---
+---```lua
+---default = true
+---```
+---@field selectionRanges? boolean
+---Enable semantic highlighting, which highlights code based on Ruby's understanding of it
+---
+---```lua
+---default = true
+---```
+---@field semanticHighlighting? boolean
+---Enable signature help, which shows the parameters and documentation for the method being invoked
+---
+---```lua
+---default = true
+---```
+---@field signatureHelp? boolean
+---Enable type hierarchy lookup, which shows the supertypes and subtypes of the selected symbol
+---
+---```lua
+---default = true
+---```
+---@field typeHierarchy? boolean
+---Enable workspace symbol, which allows fuzzy searching for symbols in the entire project with CTRL/CMD + T
+---
+---```lua
+---default = true
+---```
+---@field workspaceSymbol? boolean
+
+---Allows opting in or out of feature flags
+---
+---```lua
+---default = {}
+---```
+---@class _.lspconfig.settings.ruby_lsp.RubyLsp.FeatureFlags
+---Opt-into all available feature flags
+---@field all? boolean
+---Opt-in/out of beta server versions
+---@field betaServer? boolean
+---UNDER DEVEOPMENT. Opt-in/out of the full test discovery experience
+---@field fullTestDiscovery? boolean
+---Opt-in/out of the new launcher mode
+---@field launcher? boolean
+---Opt-in/out of the Tapioca add-on
+---@field tapiocaAddon? boolean
+
+---Customize code lens features
+---@class _.lspconfig.settings.ruby_lsp.RubyLsp.FeaturesConfiguration.CodeLens
+---@field enableAll? boolean
+---Enable the run, run in terminal, debug code and other test related code lenses
+---
+---```lua
+---default = true
+---```
+---@field enableTestCodeLens? boolean
+
+---Customize inlay hint features
+---@class _.lspconfig.settings.ruby_lsp.RubyLsp.FeaturesConfiguration.InlayHint
+---@field enableAll? boolean
+---Enable inlay hints for omitted hash values
+---@field implicitHashValue? boolean
+---Enable inlay hints for bare rescues
+---@field implicitRescue? boolean
+
+---Turn on/off specific features from request
+---@class _.lspconfig.settings.ruby_lsp.RubyLsp.FeaturesConfiguration
+---Customize code lens features
+---@field codeLens? _.lspconfig.settings.ruby_lsp.RubyLsp.FeaturesConfiguration.CodeLens
+---Customize inlay hint features
+---@field inlayHint? _.lspconfig.settings.ruby_lsp.RubyLsp.FeaturesConfiguration.InlayHint
+
+---Indexing configurations. Modifying these will impact which declarations are available for definition, completion and other features
+---@class _.lspconfig.settings.ruby_lsp.RubyLsp.Indexing
+---List of gems to exclude from indexing. For example, gems that are not intended to have their declarations referenced from the application.
+---@field excludedGems? string[]
+---List of magic comments that should not be considered as documentation for declarations.
+---@field excludedMagicComments? string[]
+---List of glob patterns to exclude from indexing. For excluding gems, use excludedGems instead.
+---@field excludedPatterns? string[]
+---List of gems to include when indexing. You should only use this setting to include development gems in indexing (which are auto excluded).
+---@field includedGems? string[]
+---List of glob patterns to include when indexing. For example, Ruby files that do not have the .rb extension.
+---@field includedPatterns? string[]
+
+---```lua
+---default = {
+--- identifier = "auto"
+---}
+---```
+---@class _.lspconfig.settings.ruby_lsp.RubyLsp.RubyVersionManager
+---The path to the asdf executable script, if not installed on one of the standard locations
+---@field asdfExecutablePath? string
+---An array of extra directories to search for Ruby installations when using chruby. Equivalent to the RUBIES environment variable
+---@field chrubyRubies? any[]
+---The Ruby version manager to use
+---
+---```lua
+---default = "auto"
+---```
+---@field identifier? "asdf" | "auto" | "chruby" | "none" | "rbenv" | "rvm" | "rv" | "shadowenv" | "mise" | "custom"
+---The path to the Mise executable, if not installed in ~/.local/bin/mise
+---@field miseExecutablePath? string
+---The path to the rbenv executable, if not installed on one of the standard locations
+---@field rbenvExecutablePath? string
+---The path to the rv executable, if not installed on one of the standard locations
+---@field rvExecutablePath? string
+
+---@class _.lspconfig.settings.ruby_lsp.RubyLsp
+---Settings that will be forwarded to configure the behavior of Ruby LSP addons. Keys are addon names, values are objects of settings
+---@field addonSettings? table
+---Relative or absolute path to the Gemfile to use for bundling the Ruby LSP server. Do not use this if you're working on a monorepo or your project's Gemfile is in a subdirectory (look into multiroot workspaces instead). Only necessary when using a separate Gemfile for the Ruby LSP
+---
+---```lua
+---default = ""
+---```
+---@field bundleGemfile? string
+---Ignores if the project uses a typechecker. Only intended to be used while working on the Ruby LSP itself
+---@field bypassTypechecker? boolean
+---A shell command to activate the right Ruby version or add a custom Ruby bin folder to the PATH. Only used if rubyVersionManager is set to 'custom'
+---@field customRubyCommand? string
+---List of enabled LSP features
+---
+---```lua
+---default = {
+--- codeActions = true,
+--- codeLens = true,
+--- completion = true,
+--- definition = true,
+--- diagnostics = true,
+--- documentHighlights = true,
+--- documentLink = true,
+--- documentSymbols = true,
+--- foldingRanges = true,
+--- formatting = true,
+--- hover = true,
+--- inlayHint = true,
+--- onTypeFormatting = true,
+--- selectionRanges = true,
+--- semanticHighlighting = true,
+--- signatureHelp = true,
+--- typeHierarchy = true,
+--- workspaceSymbol = true
+---}
+---```
+---@field enabledFeatures? _.lspconfig.settings.ruby_lsp.RubyLsp.EnabledFeatures
+---Enable ERB support. This can only work with server versions v0.17.5 or above
+---
+---```lua
+---default = true
+---```
+---@field erbSupport? boolean
+---Allows opting in or out of feature flags
+---
+---```lua
+---default = {}
+---```
+---@field featureFlags? _.lspconfig.settings.ruby_lsp.RubyLsp.FeatureFlags
+---Turn on/off specific features from request
+---@field featuresConfiguration? _.lspconfig.settings.ruby_lsp.RubyLsp.FeaturesConfiguration
+---Which tool the Ruby LSP should use for formatting files
+---
+---```lua
+---default = "auto"
+---```
+---@field formatter? "auto" | "rubocop" | "rubocop_internal" | "syntax_tree" | "standard" | "rubyfmt" | "none"
+---Indexing configurations. Modifying these will impact which declarations are available for definition, completion and other features
+---@field indexing? _.lspconfig.settings.ruby_lsp.RubyLsp.Indexing
+---List of linter tools that the Ruby LSP should use for diagnostics
+---@field linters? any[]
+---When to pull diagnostics from the server (on change, save or both). Selecting 'save' may significantly improve performance on large files
+---
+---```lua
+---default = "both"
+---```
+---@field pullDiagnosticsOn? "change" | "save" | "both"
+---Path to the Ruby installation. This is used as a fallback if version manager activation fails
+---@field rubyExecutablePath? string
+---```lua
+---default = {
+--- identifier = "auto"
+---}
+---```
+---@field rubyVersionManager? _.lspconfig.settings.ruby_lsp.RubyLsp.RubyVersionManager
+---Controls the level of opacity for inline RBS comment signatures
+---
+---```lua
+---default = "1"
+---```
+---@field sigOpacityLevel? string
+---The amount of time in seconds to wait for a test to finish before timing out. Only used when running tests from the test explorer
+---
+---```lua
+---default = 30
+---```
+---@field testTimeout? integer
+---This is a temporary setting for testing purposes, do not use it! Replace the composed bundle logic by bundler-compose.
+---@field useBundlerCompose? boolean
+
+---@class lspconfig.settings.ruby_lsp
+---@field rubyLsp? _.lspconfig.settings.ruby_lsp.RubyLsp
diff --git a/lua/lspconfig/types/lsp/ruff.lua b/lua/lspconfig/types/lsp/ruff.lua
new file mode 100644
index 00000000..cef5ef36
--- /dev/null
+++ b/lua/lspconfig/types/lsp/ruff.lua
@@ -0,0 +1,430 @@
+---@meta
+
+---@class lspconfig.settings.ruff
+---A list of allowed "confusable" Unicode characters to ignore when
+---enforcing `RUF001`, `RUF002`, and `RUF003`.
+---@field ["allowed-confusables"]? string[]
+---Options to configure import map generation.
+---@field analyze? any|any
+---A list of builtins to treat as defined references, in addition to the
+---system builtins.
+---@field builtins? string[]
+---A path to the cache directory.
+---
+---By default, Ruff stores cache results in a `.ruff_cache` directory in
+---the current project root.
+---
+---However, Ruff will also respect the `RUFF_CACHE_DIR` environment
+---variable, which takes precedence over that default.
+---
+---This setting will override even the `RUFF_CACHE_DIR` environment
+---variable, if set.
+---@field ["cache-dir"]? string
+---A regular expression used to identify "dummy" variables, or those which
+---should be ignored when enforcing (e.g.) unused-variable rules. The
+---default expression matches `_`, `__`, and `_var`, but not `_var_`.
+---@field ["dummy-variable-rgx"]? string
+---A list of file patterns to exclude from formatting and linting.
+---
+---Exclusions are based on globs, and can be either:
+---
+---- Single-path patterns, like `.mypy_cache` (to exclude any directory
+--- named `.mypy_cache` in the tree), `foo.py` (to exclude any file named
+--- `foo.py`), or `foo_*.py` (to exclude any file matching `foo_*.py` ).
+---- Relative patterns, like `directory/foo.py` (to exclude that specific
+--- file) or `directory/*.py` (to exclude any Python files in
+--- `directory`). Note that these paths are relative to the project root
+--- (e.g., the directory containing your `pyproject.toml`).
+---
+---For more information on the glob syntax, refer to the [`globset` documentation](https://docs.rs/globset/latest/globset/#syntax).
+---
+---Note that you'll typically want to use
+---[`extend-exclude`](#extend-exclude) to modify the excluded paths.
+---@field exclude? string[]
+---Whether to require exact codes to select preview rules. When enabled,
+---preview rules will not be selected by prefixes — the full code of each
+---preview rule will be required to enable the rule.
+---@field ["explicit-preview-rules"]? boolean
+---A path to a local `pyproject.toml` or `ruff.toml` file to merge into this
+---configuration. User home directory and environment variables will be
+---expanded.
+---
+---To resolve the current configuration file, Ruff will first load
+---this base configuration file, then merge in properties defined
+---in the current configuration file. Most settings follow simple override
+---behavior where the child value replaces the parent value. However,
+---rule selection (`lint.select` and `lint.ignore`) has special merging
+---behavior: if the child configuration specifies `lint.select`, it
+---establishes a new baseline rule set and the parent's `lint.ignore`
+---rules are discarded; if the child configuration omits `lint.select`,
+---the parent's rule selection is inherited and both parent and child
+---`lint.ignore` rules are accumulated together.
+---@field extend? string
+---A list of file patterns to omit from formatting and linting, in addition to those
+---specified by [`exclude`](#exclude).
+---
+---Exclusions are based on globs, and can be either:
+---
+---- Single-path patterns, like `.mypy_cache` (to exclude any directory
+--- named `.mypy_cache` in the tree), `foo.py` (to exclude any file named
+--- `foo.py`), or `foo_*.py` (to exclude any file matching `foo_*.py` ).
+---- Relative patterns, like `directory/foo.py` (to exclude that specific
+--- file) or `directory/*.py` (to exclude any Python files in
+--- `directory`). Note that these paths are relative to the project root
+--- (e.g., the directory containing your `pyproject.toml`).
+---
+---For more information on the glob syntax, refer to the [`globset` documentation](https://docs.rs/globset/latest/globset/#syntax).
+---@field ["extend-exclude"]? string[]
+---A list of rule codes or prefixes to consider fixable, in addition to those
+---specified by [`fixable`](#lint_fixable).
+---@field ["extend-fixable"]? any[]
+---A list of rule codes or prefixes to ignore, in addition to those
+---specified by `ignore`.
+---
+---This option is deprecated because it is now interchangeable with
+---[`ignore`](#lint_ignore). In earlier versions of Ruff, `ignore` would
+---_replace_ the set of ignored rules when using configuration inheritance
+---(via the top-level [`extend`](https://docs.astral.sh/ruff/settings/#extend)
+---setting), while `extend-ignore` would _add_ to the inherited set. Ruff
+---now merges both `ignore` and `extend-ignore` into a single set, so the
+---distinction no longer applies. Use [`ignore`](#lint_ignore) instead.
+---@field ["extend-ignore"]? any[]
+---A list of file patterns to include when linting, in addition to those
+---specified by [`include`](#include).
+---
+---Inclusion are based on globs, and should be single-path patterns, like
+---`*.pyw`, to include any file with the `.pyw` extension.
+---
+---For more information on the glob syntax, refer to the [`globset` documentation](https://docs.rs/globset/latest/globset/#syntax).
+---@field ["extend-include"]? string[]
+---A list of mappings from file pattern to rule codes or prefixes to
+---exclude, in addition to any rules excluded by [`per-file-ignores`](#lint_per-file-ignores).
+---@field ["extend-per-file-ignores"]? table
+---A list of rule codes or prefixes for which unsafe fixes should be considered
+---safe.
+---@field ["extend-safe-fixes"]? any[]
+---A list of rule codes or prefixes to enable, in addition to those
+---specified by [`select`](#lint_select).
+---
+---Unlike [`select`](#lint_select), which _replaces_ the default rule set
+---when specified, `extend-select` _adds_ to whatever rules are already
+---active. This makes `extend-select` the preferred option when you want
+---to enable additional rules on top of the defaults without having to
+---enumerate them.
+---
+---For example, to enable the defaults plus flake8-bugbear:
+---
+---```toml
+---[tool.ruff.lint]
+---# Adds flake8-bugbear on top of the default rules (E4, E7, E9, F).
+---extend-select = ["B"]
+---```
+---
+---Using `select = ["B"]` instead would _replace_ the defaults, enabling
+---only flake8-bugbear.
+---@field ["extend-select"]? any[]
+---A list of rule codes or prefixes to consider non-auto-fixable, in addition to those
+---specified by [`unfixable`](#lint_unfixable).
+---@field ["extend-unfixable"]? any[]
+---A list of rule codes or prefixes for which safe fixes should be considered
+---unsafe.
+---@field ["extend-unsafe-fixes"]? any[]
+---A mapping of custom file extensions to known file types (overridden
+---by the `--extension` command-line flag).
+---
+---Supported file types include `python`, `pyi`, `ipynb`, and `markdown`.
+---
+---Any file extensions listed here will be automatically added to the
+---default `include` list as a `*.{ext}` glob, so that they are linted
+---and formatted without needing any additional configuration settings.
+---@field extension? table
+---A list of rule codes or prefixes that are unsupported by Ruff, but should be
+---preserved when (e.g.) validating `# noqa` directives. Useful for
+---retaining `# noqa` directives that cover plugins not yet implemented
+---by Ruff.
+---@field external? string[]
+---Enable fix behavior by-default when running `ruff` (overridden
+---by the `--fix` and `--no-fix` command-line flags).
+---Only includes automatic fixes unless `--unsafe-fixes` is provided.
+---@field fix? boolean
+---Like [`fix`](#fix), but disables reporting on leftover violation. Implies [`fix`](#fix).
+---@field ["fix-only"]? boolean
+---A list of rule codes or prefixes to consider fixable. By default,
+---all rules are considered fixable.
+---@field fixable? any[]
+---Options for the `flake8-annotations` plugin.
+---@field ["flake8-annotations"]? any|any
+---Options for the `flake8-bandit` plugin.
+---@field ["flake8-bandit"]? any|any
+---Options for the `flake8-boolean-trap` plugin.
+---@field ["flake8-boolean-trap"]? any|any
+---Options for the `flake8-bugbear` plugin.
+---@field ["flake8-bugbear"]? any|any
+---Options for the `flake8-builtins` plugin.
+---@field ["flake8-builtins"]? any|any
+---Options for the `flake8-comprehensions` plugin.
+---@field ["flake8-comprehensions"]? any|any
+---Options for the `flake8-copyright` plugin.
+---@field ["flake8-copyright"]? any|any
+---Options for the `flake8-errmsg` plugin.
+---@field ["flake8-errmsg"]? any|any
+---Options for the `flake8-gettext` plugin.
+---@field ["flake8-gettext"]? any|any
+---Options for the `flake8-implicit-str-concat` plugin.
+---@field ["flake8-implicit-str-concat"]? any|any
+---Options for the `flake8-import-conventions` plugin.
+---@field ["flake8-import-conventions"]? any|any
+---Options for the `flake8-pytest-style` plugin.
+---@field ["flake8-pytest-style"]? any|any
+---Options for the `flake8-quotes` plugin.
+---@field ["flake8-quotes"]? any|any
+---Options for the `flake8_self` plugin.
+---@field ["flake8-self"]? any|any
+---Options for the `flake8-tidy-imports` plugin.
+---@field ["flake8-tidy-imports"]? any|any
+---Options for the `flake8-type-checking` plugin.
+---@field ["flake8-type-checking"]? any|any
+---Options for the `flake8-unused-arguments` plugin.
+---@field ["flake8-unused-arguments"]? any|any
+---Whether to enforce [`exclude`](#exclude) and [`extend-exclude`](#extend-exclude) patterns,
+---even for paths that are passed to Ruff explicitly. Typically, Ruff will lint
+---any paths passed in directly, even if they would typically be
+---excluded. Setting `force-exclude = true` will cause Ruff to
+---respect these exclusions unequivocally.
+---
+---This is useful for [`pre-commit`](https://pre-commit.com/), which explicitly passes all
+---changed files to the [`ruff-pre-commit`](https://github.com/astral-sh/ruff-pre-commit)
+---plugin, regardless of whether they're marked as excluded by Ruff's own
+---settings.
+---@field ["force-exclude"]? boolean
+---Options to configure code formatting.
+---@field format? any|any
+---A list of rule codes or prefixes to ignore. Prefixes can specify exact
+---rules (like `F841`), entire categories (like `F`), or anything in
+---between.
+---
+---When breaking ties between enabled and disabled rules (via `select` and
+---`ignore`, respectively), more specific prefixes override less
+---specific prefixes. `ignore` takes precedence over `select` if the same
+---prefix appears in both.
+---@field ignore? any[]
+---Avoid automatically removing unused imports in `__init__.py` files. Such
+---imports will still be flagged, but with a dedicated message suggesting
+---that the import is either added to the module's `__all__` symbol, or
+---re-exported with a redundant alias (e.g., `import os as os`).
+---
+---This option is enabled by default, but you can opt-in to removal of imports
+---via an unsafe fix.
+---@field ["ignore-init-module-imports"]? boolean
+---A list of file patterns to include when linting.
+---
+---Inclusion are based on globs, and should be single-path patterns, like
+---`*.pyw`, to include any file with the `.pyw` extension. `pyproject.toml` is
+---included here not for configuration but because we lint whether e.g. the
+---`[project]` matches the schema.
+---
+---Notebook files (`.ipynb` extension) are included by default on Ruff 0.6.0+.
+---
+---For more information on the glob syntax, refer to the [`globset` documentation](https://docs.rs/globset/latest/globset/#syntax).
+---@field include? string[]
+---The number of spaces per indentation level (tab).
+---
+---Used by the formatter and when enforcing long-line violations (like `E501`) to determine the visual
+---width of a tab.
+---
+---This option changes the number of spaces the formatter inserts when
+---using soft-tabs (`indent-style = space`).
+---
+---PEP 8 recommends using 4 spaces per [indentation level](https://peps.python.org/pep-0008/#indentation).
+---@field ["indent-width"]? any|any
+---Options for the `isort` plugin.
+---@field isort? any|any
+---The line length to use when enforcing long-lines violations (like `E501`)
+---and at which `isort` and the formatter prefers to wrap lines.
+---
+---The length is determined by the number of characters per line, except for lines containing East Asian characters or emojis.
+---For these lines, the [unicode width](https://unicode.org/reports/tr11/) of each character is added up to determine the length.
+---
+---The value must be greater than `0` and less than or equal to `320`.
+---
+---Note: While the formatter will attempt to format lines such that they remain
+---within the `line-length`, it isn't a hard upper bound, and formatted lines may
+---exceed the `line-length`.
+---
+---See [`pycodestyle.max-line-length`](#lint_pycodestyle_max-line-length) to configure different lengths for `E501` and the formatter.
+---@field ["line-length"]? any|any
+---@field lint? any|any
+---A list of objects that should be treated equivalently to a
+---`logging.Logger` object.
+---
+---This is useful for ensuring proper diagnostics (e.g., to identify
+---`logging` deprecations and other best-practices) for projects that
+---re-export a `logging.Logger` object from a common module.
+---
+---For example, if you have a module `logging_setup.py` with the following
+---contents:
+---```python
+---import logging
+---
+---logger = logging.getLogger(__name__)
+---```
+---
+---Adding `"logging_setup.logger"` to `logger-objects` will ensure that
+---`logging_setup.logger` is treated as a `logging.Logger` object when
+---imported from other modules (e.g., `from logging_setup import logger`).
+---@field ["logger-objects"]? string[]
+---Options for the `mccabe` plugin.
+---@field mccabe? any|any
+---Mark the specified directories as namespace packages. For the purpose of
+---module resolution, Ruff will treat those directories and all their subdirectories
+---as if they contained an `__init__.py` file.
+---@field ["namespace-packages"]? string[]
+---The style in which violation messages should be formatted: `"full"` (default)
+---(shows source), `"concise"`, `"grouped"` (group messages by file), `"json"`
+---(machine-readable), `"junit"` (machine-readable XML), `"github"` (GitHub
+---Actions annotations), `"gitlab"` (GitLab CI code quality report),
+---`"pylint"` (Pylint text format) or `"azure"` (Azure Pipeline logging commands).
+---@field ["output-format"]? any|any
+---Options for the `pep8-naming` plugin.
+---@field ["pep8-naming"]? any|any
+---A list of mappings from file pattern to rule codes or prefixes to
+---exclude, when considering any matching files. An initial '!' negates
+---the file pattern.
+---@field ["per-file-ignores"]? table
+---A list of mappings from glob-style file pattern to Python version to use when checking the
+---corresponding file(s).
+---
+---This may be useful for overriding the global Python version settings in `target-version` or
+---`requires-python` for a subset of files. For example, if you have a project with a minimum
+---supported Python version of 3.9 but a subdirectory of developer scripts that want to use a
+---newer feature like the `match` statement from Python 3.10, you can use
+---`per-file-target-version` to specify `"developer_scripts/*.py" = "py310"`.
+---
+---This setting is used by the linter to enforce any enabled version-specific lint rules, as
+---well as by the formatter for any version-specific formatting options, such as parenthesizing
+---context managers on Python 3.10+.
+---@field ["per-file-target-version"]? table
+---Whether to enable preview mode. When preview mode is enabled, Ruff will
+---use unstable rules, fixes, and formatting.
+---@field preview? boolean
+---Options for the `pycodestyle` plugin.
+---@field pycodestyle? any|any
+---Options for the `pydocstyle` plugin.
+---@field pydocstyle? any|any
+---Options for the `pyflakes` plugin.
+---@field pyflakes? any|any
+---Options for the `pylint` plugin.
+---@field pylint? any|any
+---Options for the `pyupgrade` plugin.
+---@field pyupgrade? any|any
+---Enforce a requirement on the version of Ruff, to enforce at runtime.
+---If the version of Ruff does not meet the requirement, Ruff will exit
+---with an error.
+---
+---Useful for unifying results across many environments, e.g., with a
+---`pyproject.toml` file.
+---
+---Accepts a [PEP 440](https://peps.python.org/pep-0440/) specifier, like `==0.3.1` or `>=0.3.1`.
+---@field ["required-version"]? any|any
+---Whether to automatically exclude files that are ignored by `.ignore`,
+---`.gitignore`, `.git/info/exclude`, and global `gitignore` files.
+---Enabled by default.
+---@field ["respect-gitignore"]? boolean
+---A list of rule codes or prefixes to enable. Prefixes can specify exact
+---rules (like `F841`), entire categories (like `F`), or anything in
+---between.
+---
+---When breaking ties between enabled and disabled rules (via `select` and
+---`ignore`, respectively), more specific prefixes override less
+---specific prefixes. `ignore` takes precedence over `select` if the
+---same prefix appears in both.
+---@field select? any[]
+---Whether to show an enumeration of all fixed lint violations
+---(overridden by the `--show-fixes` command-line flag).
+---@field ["show-fixes"]? boolean
+---The directories to consider when resolving first- vs. third-party
+---imports.
+---
+---When omitted, the `src` directory will typically default to including both:
+---
+---1. The directory containing the nearest `pyproject.toml`, `ruff.toml`, or `.ruff.toml` file (the "project root").
+---2. The `"src"` subdirectory of the project root.
+---
+---These defaults ensure that Ruff supports both flat layouts and `src` layouts out-of-the-box.
+---(If a configuration file is explicitly provided (e.g., via the `--config` command-line
+---flag), the current working directory will be considered the project root.)
+---
+---As an example, consider an alternative project structure, like:
+---
+---```text
+---my_project
+---├── pyproject.toml
+---└── lib
+--- └── my_package
+--- ├── __init__.py
+--- ├── foo.py
+--- └── bar.py
+---```
+---
+---In this case, the `./lib` directory should be included in the `src` option
+---(e.g., `src = ["lib"]`), such that when resolving imports, `my_package.foo`
+---is considered first-party.
+---
+---This field supports globs. For example, if you have a series of Python
+---packages in a `python_modules` directory, `src = ["python_modules/*"]`
+---would expand to incorporate all packages in that directory. User home
+---directory and environment variables will also be expanded.
+---@field src? string[]
+---The minimum Python version to target, e.g., when considering automatic
+---code upgrades, like rewriting type annotations. Ruff will not propose
+---changes using features that are not available in the given version.
+---
+---For example, to represent supporting Python >=3.11 or ==3.11
+---specify `target-version = "py311"`.
+---
+---If you're already using a `pyproject.toml` file, we recommend
+---`project.requires-python` instead, as it's based on Python packaging
+---standards, and will be respected by other tools. For example, Ruff
+---treats the following as identical to `target-version = "py38"`:
+---
+---```toml
+---[project]
+---requires-python = ">=3.8"
+---```
+---
+---If both are specified, `target-version` takes precedence over
+---`requires-python`. See [_Inferring the Python version_](https://docs.astral.sh/ruff/configuration/#inferring-the-python-version)
+---for a complete description of how the `target-version` is determined
+---when left unspecified.
+---
+---Note that a stub file can [sometimes make use of a typing feature](https://typing.python.org/en/latest/spec/distributing.html#syntax)
+---before it is available at runtime, as long as the stub does not make
+---use of new *syntax*. For example, a type checker will understand
+---`int | str` in a stub as being a `Union` type annotation, even if the
+---type checker is run using Python 3.9, despite the fact that the `|`
+---operator can only be used to create union types at runtime on Python
+---3.10+. As such, Ruff will often recommend newer features in a stub
+---file than it would for an equivalent runtime file with the same target
+---version.
+---@field ["target-version"]? any|any
+---A list of task tags to recognize (e.g., "TODO", "FIXME", "XXX").
+---
+---Comments starting with these tags will be ignored by commented-out code
+---detection (`ERA`), and skipped by line-length rules (`E501`) if
+---[`ignore-overlong-task-comments`](#lint_pycodestyle_ignore-overlong-task-comments) is set to `true`.
+---@field ["task-tags"]? string[]
+---A list of modules whose exports should be treated equivalently to
+---members of the `typing` module.
+---
+---This is useful for ensuring proper type annotation inference for
+---projects that re-export `typing` and `typing_extensions` members
+---from a compatibility module. If omitted, any members imported from
+---modules apart from `typing` and `typing_extensions` will be treated
+---as ordinary Python objects.
+---@field ["typing-modules"]? string[]
+---A list of rule codes or prefixes to consider non-fixable.
+---@field unfixable? any[]
+---Enable application of unsafe fixes.
+---If excluded, a hint will be displayed when unsafe fixes are available.
+---If set to false, the hint will be hidden.
+---@field ["unsafe-fixes"]? boolean
diff --git a/lua/lspconfig/types/lsp/sqlls.lua b/lua/lspconfig/types/lsp/sqlls.lua
new file mode 100644
index 00000000..ccfdae26
--- /dev/null
+++ b/lua/lspconfig/types/lsp/sqlls.lua
@@ -0,0 +1,18 @@
+---@meta
+
+---@class _.lspconfig.settings.sqlls.SqlLanguageServer
+---connection setting
+---
+---```lua
+---default = {}
+---```
+---@field connections? any[]
+---lint setting
+---
+---```lua
+---default = {}
+---```
+---@field lint? table
+
+---@class lspconfig.settings.sqlls
+---@field sqlLanguageServer? _.lspconfig.settings.sqlls.SqlLanguageServer
diff --git a/lua/lspconfig/types/lsp/stylua.lua b/lua/lspconfig/types/lsp/stylua.lua
new file mode 100644
index 00000000..0ecad6b0
--- /dev/null
+++ b/lua/lspconfig/types/lsp/stylua.lua
@@ -0,0 +1,34 @@
+---@meta
+
+---@class _.lspconfig.settings.stylua.Stylua
+---Path to a `stylua.toml` configuration file. NOTE: this will override workspace configuration lookup
+---
+---```lua
+---default = ""
+---```
+---@field configPath? string
+---Disable checking the version of stylua for newer versions. Useful if you do not want network requests.
+---@field disableVersionCheck? boolean
+---The release version to install. This is overridden by `#stylua.targetReleaseVersion#`.
+---
+---```lua
+---default = "latest"
+---```
+---@field releaseVersion? "latest" | "v0.17" | "v0.16" | "v0.15" | "v0.14" | "v0.13" | "v0.12" | "v0.11" | "v0.10" | "v0.9" | "v0.8" | "v0.7" | "v0.6" | "v0.5"
+---Search for the StyLua binary in the `PATH` environment variable, and use this if available. If disabled, falls back to a bundled binary
+---@field searchBinaryInPATH? boolean
+---Search parent directories for a stylua configuration file if one is not directly available.
+---@field searchParentDirectories? boolean
+---Specifies the path of StyLua. If not specified, will automatically download one from the GitHub releases.
+---@field styluaPath? string
+---Target a specific release version tag such as `v0.9.1` or `v0.9`. This overrides the version set by `#stylua.releaseVersion#`.
+---
+---```lua
+---default = ""
+---```
+---@field targetReleaseVersion? string
+---Pass the `--verify` flag to StyLua to enforce output verification
+---@field verify? boolean
+
+---@class lspconfig.settings.stylua
+---@field stylua? _.lspconfig.settings.stylua.Stylua