{
	"name": "si-debug-1",
	"displayName": "SuperIDE Debug",
	"description": "GDB, LLDB & Mago-MI Debugger support for SuperIDE",
	"keywords": [
		"gdb",
		"lldb",
		"mago-mi",
		"native",
		"debug"
	],
	"license": "public domain",
	"version": "0.27.1",
	"author": {
		"name": "PlatformIO.Org"
	  },
	"icon": "images/icon.png",
	"engines": {
		"vscode": "^1.55.0"
	},
	"main": "./out/src/frontend/extension",
	"activationEvents": [
		"onCommand:code-debug.examineMemoryLocation",
		"onCommand:code-debug.getFileNameNoExt",
		"onCommand:code-debug.getFileBasenameNoExt"
	],
	"categories": [
		"Debuggers"
	],
	"repository": {
		"type": "git",
		"url": "https://gitee.com/SuperIDE/si-debug.git"
	},
	"capabilities": {
		"untrustedWorkspaces": {
			"supported": true
		}
	},
	"contributes": {
		"commands": [
			{
				"command": "code-debug.examineMemoryLocation",
				"title": "Code-Debug: Examine memory location"
			}
		],
		"breakpoints": [
			{
				"language": "c"
			},
			{
				"language": "cpp"
			},
			{
				"language": "d"
			},
			{
				"language": "objective-c"
			},
			{
				"language": "fortran"
			},
			{
				"language": "fortran-modern"
			},
			{
				"language": "fortran90"
			},
			{
				"language": "fortran_free-form"
			},
			{
				"language": "fortran_fixed-form"
			},
			{
				"language": "rust"
			},
			{
				"language": "pascal"
			},
			{
				"language": "objectpascal"
			},
			{
				"language": "ada"
			},
			{
				"language": "nim"
			},
			{
				"language": "arm"
			},
			{
				"language": "asm"
			},
			{
				"language": "vala"
			},
			{
				"language": "crystal"
			},
			{
				"language": "kotlin"
			},
			{
				"language": "zig"
			},
			{
				"language": "riscv"
			}
		],
		"debuggers": [
			{
				"type": "gdb-mi",
				"program": "./out/src/gdb.js",
				"runtime": "node",
				"label": "GDB",
				"languages": [
					"c",
					"cpp",
					"d",
					"objective-c",
					"fortran",
					"fortran-modern",
					"fortran90",
					"fortran_free-form",
					"fortran_fixed-form",
					"rust",
					"pascal",
					"objectpascal",
					"ada",
					"nim",
					"arm",
					"asm",
					"vala",
					"crystal",
					"kotlin",
					"zig",
					"riscv"
				],
				"variables": {
					"FileBasenameNoExt": "code-debug.getFileBasenameNoExt",
					"FileNameNoExt": "code-debug.getFileNameNoExt"
				},
				"configurationAttributes": {
					"launch": {
						"required": [
							"target",
							"cwd"
						],
						"properties": {
							"target": {
								"type": "string",
								"description": "Path of executable"
							},
							"arguments": {
								"type": "string",
								"description": "Arguments to append after the executable. You can also use pipes."
							},
							"terminal": {
								"type": "string",
								"description": "Leave this field undefined to keep program output in the vscode console at the bottom. If this is set to empty string the program will spawn in a new console using x-terminal-emulator on linux, otherwise with the specified terminal. On windows setting this to an empty string spawns the program in a console, but no other console is supported."
							},
							"cwd": {
								"type": "string",
								"description": "project path"
							},
							"gdbpath": {
								"type": "string",
								"description": "Path to the gdb executable or the command if in PATH",
								"default": "gdb"
							},
							"env": {
								"type": "object",
								"description": "Environment overriding the gdb (and in turn also the process) environment",
								"default": null
							},
							"debugger_args": {
								"type": "array",
								"description": "Additional arguments to pass to GDB",
								"default": []
							},
							"pathSubstitutions": {
								"type": "object",
								"description": "Help GDB find your source using path substitutions (GDB `substitute-path)` variable",
								"default": {
									"<fromPath>": "<toPath>"
								}
							},
							"valuesFormatting": {
								"type": "string",
								"description": "Set the way of showing variable values. 'disabled' - show value as is, 'parseText' - parse debuggers output text into structure, 'prettyPrinters' - enable debuggers custom pretty-printers if there are any",
								"default": "prettyPrinters",
								"enum": [
									"disabled",
									"parseText",
									"prettyPrinters"
								]
							},
							"printCalls": {
								"type": "boolean",
								"description": "Prints all GDB calls to the console",
								"default": false
							},
							"showDevDebugOutput": {
								"type": "boolean",
								"description": "Prints all GDB responses to the console",
								"default": false
							},
							"autorun": {
								"type": "array",
								"description": "GDB commands to run when starting to debug",
								"default": []
							},
							"stopAtEntry": {
								"type": [
									"boolean",
									"string"
								],
								"description": "Whether debugger should stop at application entry point",
								"default": false
							},
							"ssh": {
								"required": [
									"host",
									"user",
									"cwd"
								],
								"type": "object",
								"description": "If this is set then the extension will connect to an ssh host and run GDB there",
								"properties": {
									"host": {
										"type": "string",
										"description": "Remote host name/ip to connect to"
									},
									"port": {
										"type": [
											"number",
											"string"
										],
										"description": "Remote port number",
										"default": 22
									},
									"user": {
										"type": "string",
										"description": "Username to connect as"
									},
									"password": {
										"type": "string",
										"description": "Plain text password (unsafe; if possible use keyfile instead)"
									},
									"keyfile": {
										"type": "string",
										"description": "Absolute path to private key"
									},
									"useAgent": {
										"type": "boolean",
										"description": "Auto-detect the running SSH agent (via SSH_AUTH_SOCK environment variable) and use it to perform authentication",
										"default": false
									},
									"sourceFileMap": {
										"type": "object",
										"description": "Mapping of source paths (from GDB on ssh remote) to local (IDE) paths.",
										"default": {
											"<sourcePath>": "<localPath>"
										}
									},
									"cwd": {
										"type": "string",
										"description": "Working directory for the debugger.\nIf `ssh.sourceFileMap` is not set, then this is also the project path on the remote for mapping with `cwd`."
									},
									"forwardX11": {
										"type": "boolean",
										"description": "If true, the server will redirect x11 to the local host",
										"default": true
									},
									"x11port": {
										"type": [
											"number",
											"string"
										],
										"description": "Port to redirect X11 data to (by default port = display + 6000)",
										"default": 6000
									},
									"x11host": {
										"type": "string",
										"description": "Hostname/ip to redirect X11 data to",
										"default": "localhost"
									},
									"remotex11screen": {
										"type": "number",
										"description": "Screen to start the application on the remote side",
										"default": 0
									},
									"bootstrap": {
										"type": "string",
										"description": "Content will be executed on the SSH host before the debugger call."
									}
								}
							}
						}
					},
					"attach": {
						"required": [
							"target",
							"cwd"
						],
						"properties": {
							"target": {
								"type": "string",
								"description": "PID of running program or program name or connection arguments (eg :2345) if remote is true"
							},
							"remote": {
								"type": "boolean",
								"description": "If true this will connect to a gdbserver instead of attaching to a PID",
								"default": false
							},
							"valuesFormatting": {
								"type": "string",
								"description": "Set the way of showing variable values. 'disabled' - show value as is, 'parseText' - parse debuggers output text into structure, 'prettyPrinters' - enable debuggers custom pretty-printers if there are any",
								"default": "parseText",
								"enum": [
									"disabled",
									"parseText",
									"prettyPrinters"
								]
							},
							"printCalls": {
								"type": "boolean",
								"description": "Prints all GDB calls to the console",
								"default": false
							},
							"showDevDebugOutput": {
								"type": "boolean",
								"description": "Prints all GDB responses to the console",
								"default": false
							},
							"executable": {
								"type": "string",
								"description": "Path of executable for debugging symbols"
							},
							"gdbpath": {
								"type": "string",
								"description": "Path to the gdb executable or the command if in PATH",
								"default": "gdb"
							},
							"env": {
								"type": "object",
								"description": "Environment overriding the gdb (and in turn also the process) environment",
								"default": null
							},
							"debugger_args": {
								"type": "array",
								"description": "Additional arguments to pass to GDB",
								"default": []
							},
							"pathSubstitutions": {
								"type": "object",
								"description": "Help GDB find your source using path substitutions (GDB `substitute-path)` variable",
								"default": {
									"<fromPath>": "<toPath>"
								}
							},
							"cwd": {
								"type": "string",
								"description": "project path",
								"default": "${workspaceRoot}"
							},
							"autorun": {
								"type": "array",
								"description": "GDB commands to run when starting to debug",
								"default": []
							},
							"stopAtConnect": {
								"type": "boolean",
								"description": "Whether debugger should stop after connecting to target",
								"default": false
							},
							"stopAtEntry": {
								"type": [
									"boolean",
									"string"
								],
								"description": "Whether debugger should stop at application entry point",
								"default": false
							},
							"ssh": {
								"required": [
									"host",
									"cwd",
									"user"
								],
								"type": "object",
								"description": "If this is set then the extension will connect to an ssh host and run GDB there",
								"properties": {
									"host": {
										"type": "string",
										"description": "Remote host name/ip to connect to"
									},
									"port": {
										"type": [
											"number",
											"string"
										],
										"description": "Remote port number",
										"default": 22
									},
									"user": {
										"type": "string",
										"description": "Username to connect as"
									},
									"password": {
										"type": "string",
										"description": "Plain text password (unsafe; if possible use keyfile instead)"
									},
									"keyfile": {
										"type": "string",
										"description": "Absolute path to private key"
									},
									"useAgent": {
										"type": "boolean",
										"description": "Auto-detect the running SSH agent (via SSH_AUTH_SOCK environment variable) and use it to perform authentication",
										"default": false
									},
									"sourceFileMap": {
										"type": "object",
										"description": "Mapping of source paths (from GDB on ssh remote) to local (IDE) paths.",
										"default": {
											"<sourcePath>": "<localPath>"
										}
									},
									"cwd": {
										"type": "string",
										"description": "Working directory for the debugger.\nIf `ssh.sourceFileMap` is not set, then this is also the project path on the remote for mapping with `cwd`."
									},
									"forwardX11": {
										"type": "boolean",
										"description": "If true, the server will redirect x11 to the local host",
										"default": true
									},
									"x11port": {
										"type": [
											"number",
											"string"
										],
										"description": "Port to redirect X11 data to (by default port = display + 6000)",
										"default": 6000
									},
									"x11host": {
										"type": "string",
										"description": "Hostname/ip to redirect X11 data to",
										"default": "localhost"
									},
									"remotex11screen": {
										"type": "number",
										"description": "Screen to start the application on the remote side",
										"default": 0
									},
									"bootstrap": {
										"type": "string",
										"description": "Content will be executed on the SSH host before the debugger call."
									}
								}
							}
						}
					}
				},
				"initialConfigurations": [
					{
						"name": "Debug",
						"type": "gdb-mi",
						"request": "launch",
						"target": "./bin/executable",
						"cwd": "${workspaceRoot}",
						"valuesFormatting": "parseText"
					}
				],
				"configurationSnippets": [
					{
						"label": "GDB: Launch Program",
						"description": "Starts the program using gdb",
						"body": {
							"type": "gdb-mi",
							"request": "launch",
							"name": "${2:Launch Program}",
							"target": "${1:./bin/executable}",
							"cwd": "^\"\\${workspaceRoot}\"",
							"valuesFormatting": "parseText"
						}
					},
					{
						"label": "GDB: Attach to PID",
						"description": "Attaches to a running program pid using gdb",
						"body": {
							"type": "gdb-mi",
							"request": "attach",
							"name": "${2:Attach to PID}",
							"target": "${1:[PID]}",
							"cwd": "^\"\\${workspaceRoot}\"",
							"valuesFormatting": "parseText"
						}
					},
					{
						"label": "GDB: Connect to gdbserver",
						"description": "Connects to a gdbserver for debugging",
						"body": {
							"type": "gdb-mi",
							"request": "attach",
							"name": "${3:Attach to gdbserver}",
							"executable": "${1:./bin/executable}",
							"target": ":${2:2345}",
							"remote": true,
							"cwd": "^\"\\${workspaceRoot}\"",
							"valuesFormatting": "parseText"
						}
					},
					{
						"label": "GDB: Launch over SSH",
						"description": "Remotely starts the program using gdb",
						"body": {
							"type": "gdb-mi",
							"request": "launch",
							"name": "${6:Launch Program (SSH)}",
							"target": "${1:./bin/executable}",
							"cwd": "^\"\\${workspaceRoot}\"",
							"ssh": {
								"host": "${2:127.0.0.1}",
								"cwd": "${3:/tmp/working}",
								"keyfile": "${4:/home/my_user/.ssh/id_rsa}",
								"user": "${5:remote_user}",
								"sourceFileMap": {
									"${6:/home/remote_user/project/}": "^\"\\${workspaceRoot}\""
								}
							},
							"valuesFormatting": "parseText"
						}
					},
					{
						"label": "GDB: Launch GUI over SSH with X11 forwarding",
						"description": "Remotely starts the program using gdb with X11 forwarding",
						"body": {
							"type": "gdb-mi",
							"request": "launch",
							"name": "${6:Launch Program (SSH + X11)}",
							"target": "${1:./bin/executable}",
							"cwd": "^\"\\${workspaceRoot}\"",
							"ssh": {
								"host": "${2:127.0.0.1}",
								"cwd": "${3:/home/remote_user/project/}",
								"keyfile": "${4:/home/my_user/.ssh/id_rsa}",
								"user": "${5:remote_user}",
								"forwardX11": true,
								"x11host": "localhost",
								"x11port": 6000
							},
							"valuesFormatting": "parseText"
						}
					},
					{
						"label": "GDB: Debug external embedded device",
						"description": "Debugs an embedded microcontroller supported by GDB by attaching over extended-remote",
						"body": {
							"type": "gdb-mi",
							"request": "attach",
							"name": "${6:Debug Microcontroller}",
							"target": "extended-remote ${2:/dev/cu.usbmodem00000000}",
							"executable": "${1:./bin/executable.elf}",
							"cwd": "^\"\\${workspaceRoot}\"",
							"autorun": [
								"monitor tpwr enable",
								"monitor swdp_scan",
								"attach 1",
								"load ${1:./bin/executable.elf}"
							]
						},
						"valuesFormatting": "parseText"
					}
				]
			},
			{
				"type": "lldb-mi",
				"program": "./out/src/lldb.js",
				"runtime": "node",
				"label": "LLDB",
				"languages": [
					"c",
					"cpp",
					"d",
					"objective-c",
					"fortran",
					"fortran-modern",
					"fortran90",
					"fortran_free-form",
					"fortran_fixed-form",
					"rust",
					"pascal",
					"objectpascal",
					"ada",
					"nim",
					"arm",
					"asm",
					"vala",
					"crystal",
					"kotlin",
					"zig",
					"riscv"
				],
				"variables": {
					"FileBasenameNoExt": "code-debug.getFileBasenameNoExt",
					"FileNameNoExt": "code-debug.getFileNameNoExt"
				},
				"configurationAttributes": {
					"launch": {
						"required": [
							"target"
						],
						"properties": {
							"target": {
								"type": "string",
								"description": "Path of executable"
							},
							"arguments": {
								"type": "string",
								"description": "Arguments to append after the executable"
							},
							"cwd": {
								"type": "string",
								"description": "project path"
							},
							"lldbmipath": {
								"type": "string",
								"description": "Path to the lldb-mi executable or the command if in PATH",
								"default": "lldb-mi"
							},
							"env": {
								"type": "object",
								"description": "Environment overriding the lldb-mi (and in turn also the process) environment",
								"default": null
							},
							"debugger_args": {
								"type": "array",
								"description": "Additional arguments to pass to LLDB",
								"default": []
							},
							"pathSubstitutions": {
								"type": "object",
								"description": "Help LLDB find your source using path substitutions (LLDB `target.source-map)` variable",
								"default": {
									"<fromPath>": "<toPath>"
								}
							},
							"valuesFormatting": {
								"type": "string",
								"description": "Set the way of showing variable values. 'disabled' - show value as is, 'parseText' - parse debuggers output text into structure, 'prettyPrinters' - enable debuggers custom pretty-printers if there are any",
								"default": "parseText",
								"enum": [
									"disabled",
									"parseText",
									"prettyPrinters"
								]
							},
							"printCalls": {
								"type": "boolean",
								"description": "Prints all lldb calls to the console",
								"default": false
							},
							"showDevDebugOutput": {
								"type": "boolean",
								"description": "Prints all lldb responses to the console",
								"default": false
							},
							"autorun": {
								"type": "array",
								"description": "lldb commands to run when starting to debug",
								"default": []
							},
							"stopAtEntry": {
								"type": [
									"boolean",
									"string"
								],
								"description": "Whether debugger should stop at application entry point",
								"default": false
							},
							"ssh": {
								"required": [
									"host",
									"cwd",
									"user"
								],
								"type": "object",
								"description": "If this is set then the extension will connect to an ssh host and run lldb there",
								"properties": {
									"host": {
										"type": "string",
										"description": "Remote host name/ip to connect to"
									},
									"port": {
										"type": [
											"number",
											"string"
										],
										"description": "Remote port number",
										"default": 22
									},
									"user": {
										"type": "string",
										"description": "Username to connect as"
									},
									"password": {
										"type": "string",
										"description": "Plain text password (unsafe; if possible use keyfile instead)"
									},
									"keyfile": {
										"type": "string",
										"description": "Absolute path to private key"
									},
									"useAgent": {
										"type": "boolean",
										"description": "Auto-detect the running SSH agent (via SSH_AUTH_SOCK environment variable) and use it to perform authentication",
										"default": false
									},
									"sourceFileMap": {
										"type": "object",
										"description": "Mapping of source paths (from GDB on ssh remote) to local (IDE) paths.",
										"default": {
											"<sourcePath>": "<localPath>"
										}
									},
									"cwd": {
										"type": "string",
										"description": "Working directory for the debugger.\nIf `ssh.sourceFileMap` is not set, then this is also the project path on the remote for mapping with `cwd`."
									},
									"forwardX11": {
										"type": "boolean",
										"description": "If true, the server will redirect x11 to the local host",
										"default": true
									},
									"x11host": {
										"type": "string",
										"description": "Hostname/ip to redirect X11 data to",
										"default": "localhost"
									},
									"x11port": {
										"type": [
											"number",
											"string"
										],
										"description": "Port to redirect X11 data to (by default port = display + 6000)",
										"default": 6000
									},
									"remotex11screen": {
										"type": "number",
										"description": "Screen to start the application on the remote side",
										"default": 0
									},
									"bootstrap": {
										"type": "string",
										"description": "Content will be executed on the SSH host before the debugger call."
									}
								}
							}
						}
					},
					"attach": {
						"required": [
							"target"
						],
						"properties": {
							"target": {
								"type": "string",
								"description": "PID of running program or program name"
							},
							"valuesFormatting": {
								"type": "string",
								"description": "Set the way of showing variable values. 'disabled' - show value as is, 'parseText' - parse debuggers output text into structure, 'prettyPrinters' - enable debuggers custom pretty-printers if there are any",
								"default": "parseText",
								"enum": [
									"disabled",
									"parseText",
									"prettyPrinters"
								]
							},
							"printCalls": {
								"type": "boolean",
								"description": "Prints all LLDB calls to the console",
								"default": false
							},
							"showDevDebugOutput": {
								"type": "boolean",
								"description": "Prints all LLDB responses to the console",
								"default": false
							},
							"executable": {
								"type": "string",
								"description": "Path of executable for debugging symbols"
							},
							"lldbmipath": {
								"type": "string",
								"description": "Path to the lldb-mi executable or the command if in PATH",
								"default": "lldb-mi"
							},
							"env": {
								"type": "object",
								"description": "Environment overriding the lldb-mi (and in turn also the process) environment",
								"default": null
							},
							"debugger_args": {
								"type": "array",
								"description": "Additional arguments to pass to LLDB",
								"default": []
							},
							"pathSubstitutions": {
								"type": "object",
								"description": "Help LLDB find your source using path substitutions (LLDB `target.source-map)` variable",
								"default": {
									"<fromPath>": "<toPath>"
								}
							},
							"cwd": {
								"type": "string",
								"description": "project path",
								"default": "${workspaceRoot}"
							},
							"autorun": {
								"type": "array",
								"description": "lldb commands to run when starting to debug",
								"default": []
							},
							"stopAtConnect": {
								"type": "boolean",
								"description": "Whether debugger should stop after connecting to target",
								"default": false
							},
							"stopAtEntry": {
								"type": [
									"boolean",
									"string"
								],
								"description": "Whether debugger should stop at application entry point",
								"default": false
							}
						}
					}
				},
				"initialConfigurations": [
					{
						"name": "Debug",
						"type": "lldb-mi",
						"request": "launch",
						"target": "./bin/executable",
						"cwd": "${workspaceRoot}",
						"valuesFormatting": "parseText"
					}
				],
				"configurationSnippets": [
					{
						"label": "LLDB: Launch Program",
						"description": "Starts the program using lldb-mi",
						"body": {
							"type": "lldb-mi",
							"request": "launch",
							"name": "${2:Launch Program}",
							"target": "${1:./bin/executable}",
							"cwd": "^\"\\${workspaceRoot}\"",
							"valuesFormatting": "parseText"
						}
					},
					{
						"label": "LLDB: Attach to PID",
						"description": "Attaches to a running program pid using lldb-mi",
						"body": {
							"type": "lldb-mi",
							"request": "attach",
							"name": "${2:Attach to PID}",
							"target": "${1:[PID]}",
							"cwd": "^\"\\${workspaceRoot}\"",
							"valuesFormatting": "parseText"
						}
					},
					{
						"label": "LLDB: Launch over SSH",
						"description": "Remotely starts the program using lldb-mi",
						"body": {
							"type": "lldb-mi",
							"request": "launch",
							"name": "${6:Launch Program (SSH)}",
							"target": "${1:./bin/executable}",
							"cwd": "^\"\\${workspaceRoot}\"",
							"ssh": {
								"host": "${2:127.0.0.1}",
								"cwd": "${3:/home/remote_user/project/}",
								"keyfile": "${4:/home/my_user/.ssh/id_rsa}",
								"user": "${5:remote_user}"
							},
							"valuesFormatting": "parseText"
						}
					},
					{
						"label": "LLDB: Launch GUI over SSH with X11 forwarding",
						"description": "Remotely starts the program using lldb-mi with X11 forwarding",
						"body": {
							"type": "lldb-mi",
							"request": "launch",
							"name": "${6:Launch Program (SSH + X11)}",
							"target": "${1:./bin/executable}",
							"cwd": "^\"\\${workspaceRoot}\"",
							"ssh": {
								"host": "${2:127.0.0.1}",
								"cwd": "${3:/home/remote_user/project/}",
								"keyfile": "${4:/home/my_user/.ssh/id_rsa}",
								"user": "${5:remote_user}",
								"forwardX11": true,
								"x11host": "localhost",
								"x11port": 6000
							},
							"valuesFormatting": "parseText"
						}
					}
				]
			},
			{
				"type": "mago-mi",
				"program": "./out/src/mago.js",
				"runtime": "node",
				"label": "Mago-MI",
				"variables": {
					"FileBasenameNoExt": "code-debug.getFileBasenameNoExt",
					"FileNameNoExt": "code-debug.getFileNameNoExt"
				},
				"configurationAttributes": {
					"launch": {
						"required": [
							"target"
						],
						"properties": {
							"target": {
								"type": "string",
								"description": "Path of executable"
							},
							"arguments": {
								"type": "string",
								"description": "Arguments to append after the executable"
							},
							"cwd": {
								"type": "string",
								"description": "project path"
							},
							"magomipath": {
								"type": "string",
								"description": "Path to the mago-mi executable or the command if in PATH",
								"default": "mago-mi"
							},
							"env": {
								"type": "object",
								"description": "Environment overriding the mago-mi (and in turn also the process) environment",
								"default": null
							},
							"debugger_args": {
								"type": "array",
								"description": "Additional arguments to pass to mago",
								"default": []
							},
							"valuesFormatting": {
								"type": "string",
								"description": "Set the way of showing variable values. 'disabled' - show value as is, 'parseText' - parse debuggers output text into structure, 'prettyPrinters' - enable debuggers custom pretty-printers if there are any",
								"default": "parseText",
								"enum": [
									"disabled",
									"parseText",
									"prettyPrinters"
								]
							},
							"printCalls": {
								"type": "boolean",
								"description": "Prints all mago calls to the console",
								"default": false
							},
							"showDevDebugOutput": {
								"type": "boolean",
								"description": "Prints all mago responses to the console",
								"default": false
							},
							"autorun": {
								"type": "array",
								"description": "mago commands to run when starting to debug",
								"default": []
							}
						}
					},
					"attach": {
						"required": [
							"target"
						],
						"properties": {
							"target": {
								"type": "string",
								"description": "PID of running program or program name"
							},
							"valuesFormatting": {
								"type": "string",
								"description": "Set the way of showing variable values. 'disabled' - show value as is, 'parseText' - parse debuggers output text into structure, 'prettyPrinters' - enable debuggers custom pretty-printers if there are any",
								"default": "parseText",
								"enum": [
									"disabled",
									"parseText",
									"prettyPrinters"
								]
							},
							"printCalls": {
								"type": "boolean",
								"description": "Prints all mago calls to the console",
								"default": false
							},
							"showDevDebugOutput": {
								"type": "boolean",
								"description": "Prints all mago responses to the console",
								"default": false
							},
							"executable": {
								"type": "string",
								"description": "Path of executable for debugging symbols"
							},
							"magomipath": {
								"type": "string",
								"description": "Path to the mago-mi executable or the command if in PATH",
								"default": "mago-mi"
							},
							"env": {
								"type": "object",
								"description": "Environment overriding the mago-mi (and in turn also the process) environment",
								"default": null
							},
							"debugger_args": {
								"type": "array",
								"description": "Additional arguments to pass to mago",
								"default": []
							},
							"cwd": {
								"type": "string",
								"description": "project path",
								"default": "${workspaceRoot}"
							},
							"autorun": {
								"type": "array",
								"description": "mago commands to run when starting to debug",
								"default": []
							},
							"stopAtConnect": {
								"type": "boolean",
								"description": "Whether debugger should stop after connecting to target",
								"default": false
							}
						}
					}
				},
				"initialConfigurations": [
					{
						"name": "Debug",
						"type": "mago-mi",
						"request": "launch",
						"target": "./bin/executable",
						"cwd": "${workspaceRoot}",
						"valuesFormatting": "parseText"
					}
				],
				"configurationSnippets": [
					{
						"label": "Mago: Launch Program",
						"description": "Starts the program using mago-mi",
						"body": {
							"type": "mago-mi",
							"request": "launch",
							"name": "${2:Launch Program}",
							"target": "${1:./bin/executable}",
							"cwd": "^\"\\${workspaceRoot}\"",
							"valuesFormatting": "parseText"
						}
					},
					{
						"label": "Mago: Attach to PID",
						"description": "Attaches to a running program pid using mago-mi",
						"body": {
							"type": "mago-mi",
							"request": "attach",
							"name": "${2:Attach to PID}",
							"target": "${1:[PID]}",
							"cwd": "^\"\\${workspaceRoot}\"",
							"valuesFormatting": "parseText"
						}
					}
				]
			}
		]
	},
	"scripts": {
		"vscode:prepublish": "tsc -p ./",
		"test": "mocha",
		"coverage": "nyc npm test",
		"compile": "tsc -watch -p ./",
		"lint": "eslint . --ext .ts --format compact",
		"lint-and-fix": "eslint . --ext .ts --fix --format compact",
		"spellcheck-docs": "cspell lint **/*.md",
		"lint-docs": "markdownlint **/*.md",
		"link-check": "markdown-link-check *.md",
		"prettier-write-docs": "prettier --write **/*.md",
		"prettier-check-docs": "prettier --check **/*.md"
	},
	"dependencies": {
		"ssh2": "^1.6.0",
		"vscode-debugadapter": "^1.45.0",
		"vscode-debugprotocol": "^1.45.0"
	},
	"devDependencies": {
		"@istanbuljs/nyc-config-typescript": "^1.0.2",
		"@types/mocha": "^5.2.6",
		"@types/node": "^11.11.3",
		"@types/vscode": "^1.55.0",
		"@typescript-eslint/eslint-plugin": "^5.22.0",
		"@typescript-eslint/parser": "^5.22.0",
		"cspell": "^6.0.0",
		"eslint": "^8.14.0",
		"eslint-plugin-deprecation": "^1.3.2",
		"eslint-plugin-no-null": "^1.0.2",
		"markdown-link-check": "^3.10.3",
		"markdownlint-cli": "^0.31.1",
		"mocha": "^9.1.3",
		"nyc": "^15.1.0",
		"prettier": "^2.6.2",
		"ts-node": "^10.8.0",
		"typescript": "^4.3.2"
	},
	"__metadata": {
		"id": "2fd22b8e-b3b8-4e7f-9a28-a5e2d1bdd0d4",
		"publisherDisplayName": "WebFreak",
		"publisherId": "e054f80a-50f9-4d80-85c8-6ff87eef6c35"
	}
}
