schema.json 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. {
  2. "$schema": "http://json-schema.org/draft-07/schema#",
  3. "definitions": {
  4. "client-config-schema": {
  5. "description": "a JSON schema to configure the Language Server or extension behavior from the client",
  6. "title": "Client Configuration Schema",
  7. "type": "object"
  8. },
  9. "current-version": {
  10. "description": "which version of the spec this implements",
  11. "enum": [2],
  12. "title": "Spec Schema Version",
  13. "type": "number"
  14. },
  15. "env-var": {
  16. "title": "an environment variable. may contain python `string.Template` evaluated against the existing environment, e.g ${HOME}",
  17. "type": "string"
  18. },
  19. "install-bundle": {
  20. "additionalProperties": {
  21. "$ref": "#/definitions/install-help"
  22. },
  23. "description": "a list of installation approaches keyed by package manager, e.g. pip, npm, yarn, apt",
  24. "patternProperties": {
  25. ".+": {
  26. "$ref": "#/definitions/install-help"
  27. }
  28. },
  29. "title": "Installation",
  30. "type": "object"
  31. },
  32. "install-help": {
  33. "description": "the install commands or description for installing the language server",
  34. "type": "string"
  35. },
  36. "language-list": {
  37. "description": "languages supported by this Language Server",
  38. "items": {
  39. "type": "string"
  40. },
  41. "minItems": 1,
  42. "type": "array",
  43. "uniqueItems": true
  44. },
  45. "language-server-extension": {
  46. "description": "an extension which can extend the functionality of the language server and client",
  47. "properties": {
  48. "config_schema": {
  49. "$ref": "#/definitions/client-config-schema"
  50. },
  51. "display_name": {
  52. "type": "string"
  53. },
  54. "install": {
  55. "$ref": "#/definitions/install-bundle"
  56. }
  57. },
  58. "title": "Language Server Extension",
  59. "type": "object"
  60. },
  61. "language-server-spec": {
  62. "allOf": [
  63. {
  64. "$ref": "#/definitions/partial-language-server-spec"
  65. },
  66. {
  67. "required": ["argv", "languages", "version"]
  68. }
  69. ],
  70. "description": "a description of a language server that could be started",
  71. "title": "Language Server Spec"
  72. },
  73. "nullable-date-time": {
  74. "description": "a date/time that might not have been recorded",
  75. "oneOf": [
  76. {
  77. "format": "date-time",
  78. "type": "string"
  79. },
  80. {
  81. "type": "null"
  82. }
  83. ]
  84. },
  85. "partial-language-server-spec": {
  86. "description": "all properties that might be required to start and/or describe a Language Server",
  87. "properties": {
  88. "argv": {
  89. "$ref": "#/definitions/shell-args",
  90. "description": "the arguments to start the language server normally",
  91. "title": "Launch Arguments"
  92. },
  93. "config_schema": {
  94. "$ref": "#/definitions/client-config-schema",
  95. "description": "a JSON schema to configure the Language Server behavior from the client",
  96. "title": "Client Configuration Schema"
  97. },
  98. "debug_argv": {
  99. "$ref": "#/definitions/shell-args",
  100. "description": "the arguments to start the language server with more verbose output",
  101. "title": "Debug Arguments"
  102. },
  103. "display_name": {
  104. "description": "name shown in the UI",
  105. "title": "Display Name",
  106. "type": "string"
  107. },
  108. "env": {
  109. "additionalProperties": {
  110. "$ref": "#/definitions/env-var"
  111. },
  112. "description": "additional environment variables to set when starting the language server",
  113. "patternProperties": {
  114. "[^ ]+": {
  115. "$ref": "#/definitions/env-var"
  116. }
  117. },
  118. "title": "Environment Variables",
  119. "type": "object"
  120. },
  121. "extend": {
  122. "description": "known extensions that can contribute to the Language Server's features",
  123. "items": {
  124. "$ref": "#/definitions/language-server-extension"
  125. },
  126. "title": "Extensions",
  127. "type": "array"
  128. },
  129. "requires_documents_on_disk": {
  130. "default": true,
  131. "description": "Whether to write un-saved documents to disk in a transient `.virtual_documents` directory. Well-behaved language servers that work against in-memory files should set this to `false`, which will become the default in the future.",
  132. "type": "boolean"
  133. },
  134. "install": {
  135. "$ref": "#/definitions/install-bundle",
  136. "description": "a list of installation approaches keyed by package manager, e.g. pip, npm, yarn, apt",
  137. "title": "Installation"
  138. },
  139. "languages": {
  140. "$ref": "#/definitions/language-list"
  141. },
  142. "mime_types": {
  143. "$ref": "#/definitions/language-list",
  144. "description": "list of MIME types supported by the language server",
  145. "title": "MIME Types"
  146. },
  147. "troubleshoot": {
  148. "type": "string",
  149. "description": "information on troubleshooting the installation or auto-detection of the language server",
  150. "title": "Troubleshooting"
  151. },
  152. "urls": {
  153. "additionalProperties": {
  154. "format": "uri",
  155. "type": "string"
  156. },
  157. "description": "a collection of urls keyed by type, e.g. home, issues",
  158. "patternProperties": {
  159. ".+": {
  160. "format": "uri",
  161. "type": "string"
  162. }
  163. },
  164. "title": "URLs",
  165. "type": "object"
  166. },
  167. "version": {
  168. "$ref": "#/definitions/current-version"
  169. },
  170. "workspace_configuration": {
  171. "description": "default values to include in the client `workspace/configuration` reply (also known as `serverSettings`). User may override these defaults. The keys should be fully qualified (dotted) names of settings (nested specification is not supported).",
  172. "title": "Workspace configuration",
  173. "type": "object"
  174. }
  175. },
  176. "title": "Server Spec Properties"
  177. },
  178. "servers-response": {
  179. "properties": {
  180. "sessions": {
  181. "$ref": "#/definitions/sessions"
  182. },
  183. "specs": {
  184. "$ref": "#/definitions/language-server-specs-implementation-map"
  185. },
  186. "version": {
  187. "$ref": "#/definitions/current-version"
  188. }
  189. },
  190. "required": ["sessions", "version"],
  191. "type": "object"
  192. },
  193. "sessions": {
  194. "description": "named server sessions that are, could be, or were running",
  195. "patternProperties": {
  196. ".*": {
  197. "$ref": "#/definitions/session"
  198. }
  199. },
  200. "additionalProperties": {
  201. "$ref": "#/definitions/session"
  202. },
  203. "type": "object"
  204. },
  205. "session": {
  206. "additionalProperties": false,
  207. "description": "a language server session",
  208. "properties": {
  209. "handler_count": {
  210. "description": "the count of currently-connected WebSocket handlers",
  211. "minValue": 0,
  212. "title": "handler count",
  213. "type": "integer"
  214. },
  215. "last_handler_message_at": {
  216. "$ref": "#/definitions/nullable-date-time",
  217. "description": "date-time of last seen message from a WebSocket handler"
  218. },
  219. "last_server_message_at": {
  220. "$ref": "#/definitions/nullable-date-time",
  221. "description": "date-time of last seen message from the language server"
  222. },
  223. "spec": {
  224. "$ref": "#/definitions/partial-language-server-spec"
  225. },
  226. "status": {
  227. "description": "a string describing the current state of the server",
  228. "enum": ["not_started", "starting", "started", "stopping", "stopped"],
  229. "type": "string"
  230. }
  231. },
  232. "required": [
  233. "handler_count",
  234. "status",
  235. "last_server_message_at",
  236. "last_handler_message_at",
  237. "spec"
  238. ],
  239. "title": "Language Server Session"
  240. },
  241. "shell-args": {
  242. "description": "a list of tokens for running a command",
  243. "items": {
  244. "type": "string"
  245. },
  246. "type": "array"
  247. },
  248. "language-server-specs-implementation-map": {
  249. "title": "Language Server Specs Map",
  250. "description": "a set of language servers keyed by their implementation name",
  251. "patternProperties": {
  252. ".*": {
  253. "$ref": "#/definitions/language-server-spec"
  254. }
  255. },
  256. "additionalProperties": {
  257. "$ref": "#/definitions/language-server-spec"
  258. },
  259. "type": "object"
  260. }
  261. },
  262. "description": "describes the current state of (potentially) running language servers",
  263. "title": "jupyter_lsp server status response"
  264. }