{
	"name": "ruby-lsp",
	"displayName": "Ruby LSP",
	"description": "VS Code plugin for connecting with the Ruby LSP",
	"version": "0.10.2",
	"publisher": "Shopify",
	"repository": {
		"type": "git",
		"url": "https://github.com/Shopify/ruby-lsp.git"
	},
	"license": "MIT",
	"icon": "icon.png",
	"engines": {
		"vscode": "^1.91.0"
	},
	"categories": [
		"Programming Languages",
		"Snippets",
		"Testing",
		"AI",
		"Chat"
	],
	"activationEvents": [
		"workspaceContains:Gemfile.lock",
		"workspaceContains:gems.locked"
	],
	"extensionDependencies": [
		"vscode.git"
	],
	"main": "./out/extension.js",
	"contributes": {
		"chatParticipants": [
			{
				"id": "rubyLsp.chatAgent",
				"fullName": "Ruby",
				"name": "ruby",
				"description": "How can I help with your Ruby on Rails application?",
				"isSticky": true,
				"commands": [
					{
						"name": "design",
						"description": "Explain what you're trying to build and I will suggest possible ways to model the domain"
					}
				]
			}
		],
		"menus": {
			"editor/context": [
				{
					"when": "resourceLangId == ruby",
					"command": "workbench.action.terminal.runSelectedText",
					"group": "9_cutcopypaste"
				}
			],
			"editor/title": [
				{
					"command": "rubyLsp.goToRelevantFile",
					"when": "rubyLsp.activated",
					"group": "navigation"
				},
				{
					"command": "rubyLsp.profileCurrentFile",
					"when": "editorTextFocus && resourceLangId == ruby",
					"group": "navigation",
					"icon": "$(record)"
				}
			],
			"view/title": [
				{
					"command": "rubyLsp.fileOperation",
					"when": "rubyLsp.activated && view == 'workbench.explorer.fileView'",
					"group": "navigation"
				}
			],
			"explorer/context": [
				{
					"command": "rubyLsp.fileOperation",
					"when": "rubyLsp.activated",
					"group": "2_workspace"
				},
				{
					"command": "rubyLsp.goToRelevantFile",
					"when": "rubyLsp.activated",
					"group": "2_workspace"
				}
			]
		},
		"commands": [
			{
				"command": "rubyLsp.start",
				"title": "Start",
				"category": "Ruby LSP"
			},
			{
				"command": "rubyLsp.restart",
				"title": "Restart",
				"category": "Ruby LSP"
			},
			{
				"command": "rubyLsp.stop",
				"title": "Stop",
				"category": "Ruby LSP"
			},
			{
				"command": "rubyLsp.showServerChangelog",
				"title": "Open server changelog in browser",
				"category": "Ruby LSP"
			},
			{
				"command": "rubyLsp.startServerInDebugMode",
				"title": "Debug the Ruby LSP server",
				"category": "Ruby LSP"
			},
			{
				"command": "rubyLsp.update",
				"title": "Update language server gem",
				"category": "Ruby LSP"
			},
			{
				"command": "rubyLsp.selectRubyVersionManager",
				"title": "Select Ruby version manager",
				"category": "Ruby LSP"
			},
			{
				"command": "rubyLsp.toggleFeatures",
				"title": "Toggle features",
				"category": "Ruby LSP"
			},
			{
				"command": "rubyLsp.displayAddons",
				"title": "Display addons",
				"category": "Ruby LSP"
			},
			{
				"command": "rubyLsp.runTest",
				"title": "Run current test",
				"category": "Ruby LSP",
				"when": "editorActive && editorLangId == ruby"
			},
			{
				"command": "rubyLsp.runTestInTerminal",
				"title": "Run current test in terminal",
				"category": "Ruby LSP",
				"when": "editorActive && editorLangId == ruby"
			},
			{
				"command": "rubyLsp.debugTest",
				"title": "Debug current test",
				"category": "Ruby LSP",
				"when": "editorActive && editorLangId == ruby"
			},
			{
				"command": "rubyLsp.showSyntaxTree",
				"title": "Show syntax tree",
				"category": "Ruby LSP"
			},
			{
				"command": "rubyLsp.diagnoseState",
				"title": "Diagnose language server state",
				"category": "Ruby LSP"
			},
			{
				"command": "rubyLsp.railsGenerate",
				"title": "Rails generate",
				"category": "Ruby LSP"
			},
			{
				"command": "rubyLsp.railsDestroy",
				"title": "Rails destroy",
				"category": "Ruby LSP"
			},
			{
				"command": "rubyLsp.fileOperation",
				"title": "Ruby file operations",
				"category": "Ruby LSP",
				"icon": "$(ruby)"
			},
			{
				"command": "rubyLsp.goToRelevantFile",
				"title": "Go to relevant file (test <> source code)",
				"category": "Ruby LSP",
				"icon": "$(arrow-swap)"
			},
			{
				"command": "rubyLsp.collectRubyLspInfo",
				"title": "Collect Ruby LSP information for issue reporting",
				"category": "Ruby LSP"
			},
			{
				"command": "rubyLsp.migrateLaunchConfiguration",
				"title": "Migrate launch.json configurations from rdbg to ruby_lsp",
				"category": "Ruby LSP"
			},
			{
				"command": "rubyLsp.showOutput",
				"title": "Show output channel",
				"category": "Ruby LSP"
			},
			{
				"command": "rubyLsp.profileCurrentFile",
				"title": "Profile current file",
				"category": "Ruby LSP",
				"icon": "$(record)"
			}
		],
		"configuration": {
			"title": "Ruby LSP",
			"properties": {
				"rubyLsp.enabledFeatures": {
					"description": "List of enabled LSP features",
					"type": "object",
					"properties": {
						"codeActions": {
							"description": "Enable code actions, like RuboCop quick fixes",
							"type": "boolean",
							"default": true
						},
						"diagnostics": {
							"description": "Enable diagnostics, like RuboCop violations",
							"type": "boolean",
							"default": true
						},
						"documentHighlights": {
							"description": "Enable document highlight, which highlights the occurrences of the entity at cursor position",
							"type": "boolean",
							"default": true
						},
						"documentLink": {
							"description": "Enable document link, which generates clickable link to 'PATH' based on '# source://PATH' comments",
							"type": "boolean",
							"default": true
						},
						"documentSymbols": {
							"description": "Enable document symbols, which populates the file outline and breadcrumbs",
							"type": "boolean",
							"default": true
						},
						"foldingRanges": {
							"description": "Enable folding ranges, which populates the places where code can be folded",
							"type": "boolean",
							"default": true
						},
						"formatting": {
							"description": "Enable formatting",
							"type": "boolean",
							"default": true
						},
						"hover": {
							"description": "Enable hover, which displays a widget with extra information when hovering over certain code",
							"type": "boolean",
							"default": true
						},
						"inlayHint": {
							"description": "Enable inlay hints",
							"type": "boolean",
							"default": true
						},
						"onTypeFormatting": {
							"description": "Enable on type formatting",
							"type": "boolean",
							"default": true
						},
						"selectionRanges": {
							"description": "Enable selection ranges, which selects code based on the position of the cursor(s)",
							"type": "boolean",
							"default": true
						},
						"semanticHighlighting": {
							"description": "Enable semantic highlighting, which highlights code based on Ruby's understanding of it",
							"type": "boolean",
							"default": true
						},
						"completion": {
							"description": "Enable completion, which provides suggestions for code completion",
							"type": "boolean",
							"default": true
						},
						"codeLens": {
							"description": "Enable code lens, which generates clickable text to enrich editor experience",
							"type": "boolean",
							"default": true
						},
						"definition": {
							"description": "Enable go to definition, which navigates to the definition of the symbol under the cursor",
							"type": "boolean",
							"default": true
						},
						"workspaceSymbol": {
							"description": "Enable workspace symbol, which allows fuzzy searching for symbols in the entire project with CTRL/CMD + T",
							"type": "boolean",
							"default": true
						},
						"signatureHelp": {
							"description": "Enable signature help, which shows the parameters and documentation for the method being invoked",
							"type": "boolean",
							"default": true
						},
						"typeHierarchy": {
							"description": "Enable type hierarchy lookup, which shows the supertypes and subtypes of the selected symbol",
							"type": "boolean",
							"default": true
						}
					},
					"default": {
						"codeActions": true,
						"diagnostics": true,
						"documentHighlights": true,
						"documentLink": true,
						"documentSymbols": true,
						"foldingRanges": true,
						"formatting": true,
						"hover": true,
						"inlayHint": true,
						"onTypeFormatting": true,
						"selectionRanges": true,
						"semanticHighlighting": true,
						"completion": true,
						"codeLens": true,
						"definition": true,
						"workspaceSymbol": true,
						"signatureHelp": true,
						"typeHierarchy": true
					}
				},
				"rubyLsp.featuresConfiguration": {
					"description": "Turn on/off specific features from request",
					"type": "object",
					"properties": {
						"inlayHint": {
							"description": "Customize inlay hint features",
							"type": "object",
							"properties": {
								"enableAll": {
									"type": "boolean"
								},
								"implicitRescue": {
									"description": "Enable inlay hints for bare rescues",
									"type": "boolean"
								},
								"implicitHashValue": {
									"description": "Enable inlay hints for omitted hash values",
									"type": "boolean"
								}
							}
						},
						"codeLens": {
							"description": "Customize code lens features",
							"type": "object",
							"properties": {
								"enableAll": {
									"type": "boolean"
								},
								"enableTestCodeLens": {
									"description": "Enable the run, run in terminal, debug code and other test related code lenses",
									"type": "boolean",
									"default": true
								}
							}
						}
					}
				},
				"rubyLsp.addonSettings": {
					"description": "Settings that will be forwarded to configure the behavior of Ruby LSP addons. Keys are addon names, values are objects of settings",
					"type": "object",
					"examples": [
						{
							"Ruby LSP Rails": {
								"something": true
							}
						},
						{
							"Standard Ruby": {
								"something": true
							}
						}
					]
				},
				"rubyLsp.rubyVersionManager": {
					"type": "object",
					"properties": {
						"identifier": {
							"description": "The Ruby version manager to use",
							"type": "string",
							"enum": [
								"asdf",
								"auto",
								"chruby",
								"none",
								"rbenv",
								"rvm",
								"rv",
								"shadowenv",
								"mise",
								"custom"
							],
							"default": "auto"
						},
						"asdfExecutablePath": {
							"description": "The path to the asdf executable script, if not installed on one of the standard locations",
							"type": "string"
						},
						"miseExecutablePath": {
							"description": "The path to the Mise executable, if not installed in ~/.local/bin/mise",
							"type": "string"
						},
						"rbenvExecutablePath": {
							"description": "The path to the rbenv executable, if not installed on one of the standard locations",
							"type": "string"
						},
						"rvExecutablePath": {
							"description": "The path to the rv executable, if not installed on one of the standard locations",
							"type": "string"
						},
						"chrubyRubies": {
							"description": "An array of extra directories to search for Ruby installations when using chruby. Equivalent to the RUBIES environment variable",
							"type": "array"
						}
					},
					"default": {
						"identifier": "auto"
					}
				},
				"rubyLsp.customRubyCommand": {
					"description": "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'",
					"type": "string",
					"scope": "machine"
				},
				"rubyLsp.formatter": {
					"description": "Which tool the Ruby LSP should use for formatting files",
					"type": "string",
					"enum": [
						"auto",
						"rubocop",
						"rubocop_internal",
						"syntax_tree",
						"standard",
						"rubyfmt",
						"none"
					],
					"enumDescriptions": [
						"Automatically detect formatter",
						"RuboCop",
						"Ruby LSP RuboCop integration",
						"Syntax Tree",
						"Standard (supported by community addon)",
						"Rubyfmt (supported by community addon)",
						"Do not use a formatter"
					],
					"default": "auto"
				},
				"rubyLsp.linters": {
					"description": "List of linter tools that the Ruby LSP should use for diagnostics",
					"type": "array",
					"examples": [
						[
							"rubocop_internal"
						]
					],
					"default": null
				},
				"rubyLsp.bundleGemfile": {
					"description": "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",
					"type": "string",
					"default": ""
				},
				"rubyLsp.testTimeout": {
					"description": "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",
					"type": "integer",
					"default": 30
				},
				"rubyLsp.pullDiagnosticsOn": {
					"description": "When to pull diagnostics from the server (on change, save or both). Selecting 'save' may significantly improve performance on large files",
					"type": "string",
					"enum": [
						"change",
						"save",
						"both"
					],
					"default": "both"
				},
				"rubyLsp.useBundlerCompose": {
					"description": "This is a temporary setting for testing purposes, do not use it! Replace the composed bundle logic by bundler-compose.",
					"type": "boolean",
					"default": false
				},
				"rubyLsp.bypassTypechecker": {
					"description": "Ignores if the project uses a typechecker. Only intended to be used while working on the Ruby LSP itself",
					"type": "boolean",
					"default": false
				},
				"rubyLsp.rubyExecutablePath": {
					"description": "Path to the Ruby installation. This is used as a fallback if version manager activation fails",
					"type": "string"
				},
				"rubyLsp.indexing": {
					"description": "Indexing configurations. Modifying these will impact which declarations are available for definition, completion and other features",
					"type": "object",
					"properties": {
						"excludedPatterns": {
							"type": "array",
							"description": "List of glob patterns to exclude from indexing. For excluding gems, use excludedGems instead.",
							"items": {
								"type": "string"
							}
						},
						"includedPatterns": {
							"type": "array",
							"description": "List of glob patterns to include when indexing. For example, Ruby files that do not have the .rb extension.",
							"items": {
								"type": "string"
							}
						},
						"includedGems": {
							"type": "array",
							"description": "List of gems to include when indexing. You should only use this setting to include development gems in indexing (which are auto excluded).",
							"items": {
								"type": "string"
							}
						},
						"excludedGems": {
							"type": "array",
							"description": "List of gems to exclude from indexing. For example, gems that are not intended to have their declarations referenced from the application.",
							"items": {
								"type": "string"
							}
						},
						"excludedMagicComments": {
							"type": "array",
							"description": "List of magic comments that should not be considered as documentation for declarations.",
							"items": {
								"type": "string"
							}
						}
					}
				},
				"rubyLsp.erbSupport": {
					"description": "Enable ERB support. This can only work with server versions v0.17.5 or above",
					"type": "boolean",
					"default": true
				},
				"rubyLsp.featureFlags": {
					"description": "Allows opting in or out of feature flags",
					"type": "object",
					"properties": {
						"all": {
							"description": "Opt-into all available feature flags",
							"type": "boolean"
						},
						"tapiocaAddon": {
							"description": "Opt-in/out of the Tapioca add-on",
							"type": "boolean"
						},
						"fullTestDiscovery": {
							"description": "UNDER DEVEOPMENT. Opt-in/out of the full test discovery experience",
							"type": "boolean"
						},
						"launcher": {
							"description": "Opt-in/out of the new launcher mode",
							"type": "boolean"
						},
						"betaServer": {
							"description": "Opt-in/out of beta server versions",
							"type": "boolean"
						}
					},
					"default": {}
				},
				"rubyLsp.sigOpacityLevel": {
					"description": "Controls the level of opacity for inline RBS comment signatures",
					"type": "string",
					"default": "1"
				}
			}
		},
		"views": {
			"explorer": [
				{
					"id": "dependencies",
					"name": "Dependencies",
					"icon": "$(package)",
					"description": "View and manage dependencies",
					"contextualTitle": "Dependencies",
					"when": "rubyLsp.activated"
				}
			]
		},
		"breakpoints": [
			{
				"language": "ruby"
			}
		],
		"debuggers": [
			{
				"type": "ruby_lsp",
				"label": "Ruby LSP debug client",
				"languages": [
					"ruby"
				],
				"configurationAttributes": {
					"launch": {
						"required": [
							"program"
						],
						"properties": {
							"program": {
								"type": "string",
								"description": "The program to debug"
							},
							"env": {
								"type": "object",
								"description": "Environment variables defined as a key value pair. Example: { \"BACKTRACE\": \"1\" }",
								"additionalProperties": {
									"type": "string"
								}
							}
						}
					},
					"attach": {
						"properties": {
							"debugSocketPath": {
								"type": "string",
								"description": "The path to the debug socket. This is used to connect to the debugger"
							},
							"debugPort": {
								"type": "number",
								"description": "The port to use to connect to the debugger"
							},
							"debugHost": {
								"type": "string",
								"description": "The host to use to connect to the debugger"
							}
						}
					}
				},
				"configurationSnippets": [
					{
						"label": "Ruby: Debug program",
						"description": "New configuration for debugging a Ruby program",
						"body": {
							"type": "ruby_lsp",
							"request": "launch",
							"name": "Debug program",
							"program": "ruby ${file}"
						}
					},
					{
						"label": "Ruby: Debug a Minitest / Test Unit file",
						"description": "New configuration for debugging a Minitest / Test Unit file",
						"body": {
							"type": "ruby_lsp",
							"request": "launch",
							"name": "Debug test file",
							"program": "ruby -Itest ${relativeFile}"
						}
					},
					{
						"label": "Ruby: Attach the debugger to a running process",
						"description": "New configuration for attaching the debugger to a process that was started with the debugger",
						"body": {
							"type": "ruby_lsp",
							"request": "attach",
							"name": "Attach to a debuggee"
						}
					}
				]
			}
		],
		"snippets": [
			{
				"language": "ruby",
				"path": "./snippets.json"
			}
		],
		"grammars": [
			{
				"language": "ruby",
				"scopeName": "source.ruby",
				"path": "./grammars/ruby.cson.json"
			},
			{
				"language": "erb",
				"scopeName": "text.html.erb",
				"path": "./grammars/erb.cson.json",
				"embeddedLanguages": {
					"source.css": "css",
					"source.js": "javascript",
					"source.ruby": "ruby"
				}
			},
			{
				"path": "./grammars/rbs.injection.json",
				"scopeName": "rbs-comment.injection",
				"injectTo": [
					"source.ruby"
				],
				"embeddedLanguages": {
					"meta.type.signature.rbs": "rbs"
				}
			}
		],
		"languages": [
			{
				"id": "ruby",
				"aliases": [
					"Ruby",
					"ruby"
				],
				"firstLine": "^#!\\s*/.*(?:ruby|rbx|rake)\\b",
				"extensions": [
					".rb",
					".builder",
					".eye",
					".fcgi",
					".gemspec",
					".god",
					".irbrc",
					".jbuilder",
					".mspec",
					".pluginspec",
					".podspec",
					".prawn",
					".pryrc",
					".rabl",
					".rake",
					".rbi",
					".rbuild",
					".rbw",
					".rbx",
					".ru",
					".ruby",
					".spec",
					".thor",
					".watchr"
				],
				"filenames": [
					".irbrc",
					".pryrc",
					".simplecov",
					"Appraisals",
					"Berksfile",
					"Brewfile",
					"Buildfile",
					"Capfile",
					"Dangerfile",
					"Deliverfile",
					"Fastfile",
					"Gemfile",
					"Guardfile",
					"Jarfile",
					"Mavenfile",
					"Podfile",
					"Puppetfile",
					"Rakefile",
					"Snapfile",
					"Steepfile",
					"Thorfile",
					"Vagrantfile"
				],
				"configuration": "./languages/ruby.json"
			},
			{
				"id": "erb",
				"extensions": [
					".erb",
					".rhtml",
					".rhtm"
				],
				"configuration": "./languages/erb.json"
			},
			{
				"id": "rbs",
				"configuration": "./languages/rbs.json"
			}
		],
		"configurationDefaults": {
			"files.exclude": {
				"**/.git": true,
				"**/.svn": true,
				"**/.hg": true,
				"**/CVS": true,
				"**/.DS_Store": true,
				"**/Thumbs.db": true,
				"**/.ruby-lsp": true
			},
			"search.exclude": {
				"**/node_modules": true,
				"**/bower_components": true,
				"**/*.code-search": true,
				"**/.ruby-lsp": true
			},
			"[ruby]": {
				"editor.defaultFormatter": "Shopify.ruby-lsp",
				"editor.formatOnSave": true,
				"editor.tabSize": 2,
				"editor.insertSpaces": true,
				"editor.semanticHighlighting.enabled": true,
				"editor.formatOnType": true,
				"editor.wordSeparators": "`~@#$%^&*()-=+[{]}\\|;:'\",.<>/"
			}
		}
	},
	"scripts": {
		"vscode:prepublish": "yarn run esbuild-base --minify",
		"package": "vsce package --out vscode-ruby-lsp.vsix --baseImagesUrl https://github.com/Shopify/ruby-lsp/raw/HEAD/vscode",
		"package_prerelease": "vsce package --pre-release --out vscode-ruby-lsp.vsix --baseImagesUrl https://github.com/Shopify/ruby-lsp/raw/HEAD/vscode",
		"esbuild-base": "esbuild ./src/extension.ts --bundle --outfile=out/extension.js --external:vscode --format=cjs --platform=node",
		"compile": "tsc -p ./",
		"watch": "tsc -watch -p ./",
		"pretest": "yarn run compile",
		"format": "eslint . --fix && prettier '**/*.{ts,json,md,yaml,yml}' --write",
		"lint": "eslint . && prettier '**/*.{ts,json,md,yaml,yml}' --check",
		"test": "node ./out/test/runTest.js"
	},
	"resolutions": {
		"node-fetch": ">= 2.6.7",
		"cross-fetch": ">= 3.1.5",
		"ws": ">= 7.4.6"
	},
	"devDependencies": {
		"@babel/core": "^7.29.0",
		"@eslint/js": "^9.39.2",
		"@types/mocha": "^10.0.10",
		"@types/node": "25.x",
		"@types/sinon": "^21.0.0",
		"@types/vscode": "^1.91.0",
		"@vscode/test-electron": "^2.5.2",
		"@vscode/vsce": "^3.7.1",
		"esbuild": "^0.27.4",
		"eslint": "^9.30.1",
		"eslint-plugin-prettier": "^5.5.5",
		"glob": "^13.0.6",
		"mocha": "^11.7.5",
		"ovsx": "^0.10.9",
		"prettier": "^3.8.1",
		"sinon": "^21.0.3",
		"typescript": "^5.9.3",
		"typescript-eslint": "^8.57.1",
		"vscode-oniguruma": "^2.0.1",
		"vscode-textmate": "^9.3.2"
	},
	"dependencies": {
		"vscode-languageclient": "^9.0.1",
		"vscode-jsonrpc": "^8.2.1"
	},
	"__metadata": {
		"installedTimestamp": 1774550878346,
		"targetPlatform": "universal",
		"size": 719985
	}
}