|
{ |
|
"$schema": "http://json-schema.org/draft-07/schema#", |
|
"definitions": { |
|
"client-config-schema": { |
|
"description": "a JSON schema to configure the Language Server or extension behavior from the client", |
|
"title": "Client Configuration Schema", |
|
"type": "object" |
|
}, |
|
"current-version": { |
|
"description": "which version of the spec this implements", |
|
"enum": [2], |
|
"title": "Spec Schema Version", |
|
"type": "number" |
|
}, |
|
"env-var": { |
|
"title": "an environment variable. may contain python `string.Template` evaluated against the existing environment, e.g ${HOME}", |
|
"type": "string" |
|
}, |
|
"install-bundle": { |
|
"additionalProperties": { |
|
"$ref": "#/definitions/install-help" |
|
}, |
|
"description": "a list of installation approaches keyed by package manager, e.g. pip, npm, yarn, apt", |
|
"patternProperties": { |
|
".+": { |
|
"$ref": "#/definitions/install-help" |
|
} |
|
}, |
|
"title": "Installation", |
|
"type": "object" |
|
}, |
|
"install-help": { |
|
"description": "the install commands or description for installing the language server", |
|
"type": "string" |
|
}, |
|
"language-list": { |
|
"description": "languages supported by this Language Server", |
|
"items": { |
|
"type": "string" |
|
}, |
|
"minItems": 1, |
|
"type": "array", |
|
"uniqueItems": true |
|
}, |
|
"language-server-extension": { |
|
"description": "an extension which can extend the functionality of the language server and client", |
|
"properties": { |
|
"config_schema": { |
|
"$ref": "#/definitions/client-config-schema" |
|
}, |
|
"display_name": { |
|
"type": "string" |
|
}, |
|
"install": { |
|
"$ref": "#/definitions/install-bundle" |
|
} |
|
}, |
|
"title": "Language Server Extension", |
|
"type": "object" |
|
}, |
|
"language-server-spec": { |
|
"allOf": [ |
|
{ |
|
"$ref": "#/definitions/partial-language-server-spec" |
|
}, |
|
{ |
|
"required": ["argv", "languages", "version"] |
|
} |
|
], |
|
"description": "a description of a language server that could be started", |
|
"title": "Language Server Spec" |
|
}, |
|
"nullable-date-time": { |
|
"description": "a date/time that might not have been recorded", |
|
"oneOf": [ |
|
{ |
|
"format": "date-time", |
|
"type": "string" |
|
}, |
|
{ |
|
"type": "null" |
|
} |
|
] |
|
}, |
|
"partial-language-server-spec": { |
|
"description": "all properties that might be required to start and/or describe a Language Server", |
|
"properties": { |
|
"argv": { |
|
"$ref": "#/definitions/shell-args", |
|
"description": "the arguments to start the language server normally", |
|
"title": "Launch Arguments" |
|
}, |
|
"config_schema": { |
|
"$ref": "#/definitions/client-config-schema", |
|
"description": "a JSON schema to configure the Language Server behavior from the client", |
|
"title": "Client Configuration Schema" |
|
}, |
|
"debug_argv": { |
|
"$ref": "#/definitions/shell-args", |
|
"description": "the arguments to start the language server with more verbose output", |
|
"title": "Debug Arguments" |
|
}, |
|
"display_name": { |
|
"description": "name shown in the UI", |
|
"title": "Display Name", |
|
"type": "string" |
|
}, |
|
"env": { |
|
"additionalProperties": { |
|
"$ref": "#/definitions/env-var" |
|
}, |
|
"description": "additional environment variables to set when starting the language server", |
|
"patternProperties": { |
|
"[^ ]+": { |
|
"$ref": "#/definitions/env-var" |
|
} |
|
}, |
|
"title": "Environment Variables", |
|
"type": "object" |
|
}, |
|
"extend": { |
|
"description": "known extensions that can contribute to the Language Server's features", |
|
"items": { |
|
"$ref": "#/definitions/language-server-extension" |
|
}, |
|
"title": "Extensions", |
|
"type": "array" |
|
}, |
|
"requires_documents_on_disk": { |
|
"default": true, |
|
"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.", |
|
"type": "boolean" |
|
}, |
|
"install": { |
|
"$ref": "#/definitions/install-bundle", |
|
"description": "a list of installation approaches keyed by package manager, e.g. pip, npm, yarn, apt", |
|
"title": "Installation" |
|
}, |
|
"languages": { |
|
"$ref": "#/definitions/language-list" |
|
}, |
|
"mime_types": { |
|
"$ref": "#/definitions/language-list", |
|
"description": "list of MIME types supported by the language server", |
|
"title": "MIME Types" |
|
}, |
|
"troubleshoot": { |
|
"type": "string", |
|
"description": "information on troubleshooting the installation or auto-detection of the language server", |
|
"title": "Troubleshooting" |
|
}, |
|
"urls": { |
|
"additionalProperties": { |
|
"format": "uri", |
|
"type": "string" |
|
}, |
|
"description": "a collection of urls keyed by type, e.g. home, issues", |
|
"patternProperties": { |
|
".+": { |
|
"format": "uri", |
|
"type": "string" |
|
} |
|
}, |
|
"title": "URLs", |
|
"type": "object" |
|
}, |
|
"version": { |
|
"$ref": "#/definitions/current-version" |
|
}, |
|
"workspace_configuration": { |
|
"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).", |
|
"title": "Workspace configuration", |
|
"type": "object" |
|
} |
|
}, |
|
"title": "Server Spec Properties" |
|
}, |
|
"servers-response": { |
|
"properties": { |
|
"sessions": { |
|
"$ref": "#/definitions/sessions" |
|
}, |
|
"specs": { |
|
"$ref": "#/definitions/language-server-specs-implementation-map" |
|
}, |
|
"version": { |
|
"$ref": "#/definitions/current-version" |
|
} |
|
}, |
|
"required": ["sessions", "version"], |
|
"type": "object" |
|
}, |
|
"sessions": { |
|
"description": "named server sessions that are, could be, or were running", |
|
"patternProperties": { |
|
".*": { |
|
"$ref": "#/definitions/session" |
|
} |
|
}, |
|
"additionalProperties": { |
|
"$ref": "#/definitions/session" |
|
}, |
|
"type": "object" |
|
}, |
|
"session": { |
|
"additionalProperties": false, |
|
"description": "a language server session", |
|
"properties": { |
|
"handler_count": { |
|
"description": "the count of currently-connected WebSocket handlers", |
|
"minValue": 0, |
|
"title": "handler count", |
|
"type": "integer" |
|
}, |
|
"last_handler_message_at": { |
|
"$ref": "#/definitions/nullable-date-time", |
|
"description": "date-time of last seen message from a WebSocket handler" |
|
}, |
|
"last_server_message_at": { |
|
"$ref": "#/definitions/nullable-date-time", |
|
"description": "date-time of last seen message from the language server" |
|
}, |
|
"spec": { |
|
"$ref": "#/definitions/partial-language-server-spec" |
|
}, |
|
"status": { |
|
"description": "a string describing the current state of the server", |
|
"enum": ["not_started", "starting", "started", "stopping", "stopped"], |
|
"type": "string" |
|
} |
|
}, |
|
"required": [ |
|
"handler_count", |
|
"status", |
|
"last_server_message_at", |
|
"last_handler_message_at", |
|
"spec" |
|
], |
|
"title": "Language Server Session" |
|
}, |
|
"shell-args": { |
|
"description": "a list of tokens for running a command", |
|
"items": { |
|
"type": "string" |
|
}, |
|
"type": "array" |
|
}, |
|
"language-server-specs-implementation-map": { |
|
"title": "Language Server Specs Map", |
|
"description": "a set of language servers keyed by their implementation name", |
|
"patternProperties": { |
|
".*": { |
|
"$ref": "#/definitions/language-server-spec" |
|
} |
|
}, |
|
"additionalProperties": { |
|
"$ref": "#/definitions/language-server-spec" |
|
}, |
|
"type": "object" |
|
} |
|
}, |
|
"description": "describes the current state of (potentially) running language servers", |
|
"title": "jupyter_lsp server status response" |
|
} |
|
|