2132 lines
76 KiB
JSON
2132 lines
76 KiB
JSON
|
|
{
|
||
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||
|
|
"$id": "https://netcatty.com/schemas/plugins/0.1.0-internal/plugin-contract.schema.json",
|
||
|
|
"title": "Netcatty Plugin Contract",
|
||
|
|
"description": "Canonical public contract for Netcatty plugin manifests and host RPC messages.",
|
||
|
|
"$ref": "#/$defs/PluginManifest",
|
||
|
|
"$defs": {
|
||
|
|
"JsonPrimitive": {
|
||
|
|
"oneOf": [
|
||
|
|
{ "type": "string" },
|
||
|
|
{ "type": "number" },
|
||
|
|
{ "type": "boolean" },
|
||
|
|
{ "type": "null" }
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"JsonValue": {
|
||
|
|
"oneOf": [
|
||
|
|
{ "$ref": "#/$defs/JsonPrimitive" },
|
||
|
|
{ "type": "array", "items": { "$ref": "#/$defs/JsonValue" } },
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"additionalProperties": { "$ref": "#/$defs/JsonValue" }
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"JsonValueLimits": {
|
||
|
|
"description": "Host-enforced structural limits for every plugin protocol JSON value.",
|
||
|
|
"const": {
|
||
|
|
"maxDepth": 128,
|
||
|
|
"maxNodes": 100000
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"WireIntegerLimits": {
|
||
|
|
"description": "Host-enforced integer precision limit for JSON protocol fields used in identity, ordering, and correlation.",
|
||
|
|
"const": {
|
||
|
|
"maxSafeInteger": 9007199254740991
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"RpcLimits": {
|
||
|
|
"description": "Host-enforced byte limit for one JSON-RPC control message. Larger payloads must use a stream.",
|
||
|
|
"const": {
|
||
|
|
"maxJsonBytes": 1048576
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"SafeUnsignedInteger": {
|
||
|
|
"type": "integer",
|
||
|
|
"minimum": 0,
|
||
|
|
"maximum": 9007199254740991
|
||
|
|
},
|
||
|
|
"SafePositiveInteger": {
|
||
|
|
"type": "integer",
|
||
|
|
"minimum": 1,
|
||
|
|
"maximum": 9007199254740991
|
||
|
|
},
|
||
|
|
"StreamLimits": {
|
||
|
|
"description": "Host-enforced identifier and byte limits for stream frames.",
|
||
|
|
"const": {
|
||
|
|
"maxStreamIdLength": 128,
|
||
|
|
"maxChunkBytes": 16777216,
|
||
|
|
"maxFrameJsonBytes": 25165824,
|
||
|
|
"minWindowBytes": 1024,
|
||
|
|
"maxWindowBytes": 16777216,
|
||
|
|
"maxCreditBytes": 16777216
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"TerminalInterceptorLimits": {
|
||
|
|
"description": "Host-enforced byte and receive-window limits for the privileged direct terminal interceptor MessagePort.",
|
||
|
|
"const": {
|
||
|
|
"maxChunkBytes": 65536,
|
||
|
|
"maxWindowBytes": 262144
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"ImporterLimits": {
|
||
|
|
"description": "Host-enforced byte and record limits for one importer operation.",
|
||
|
|
"const": {
|
||
|
|
"maxInputBytes": 67108864,
|
||
|
|
"maxOutputBytes": 67108864,
|
||
|
|
"maxRecordBytes": 67108864,
|
||
|
|
"maxRecords": 10000
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"SyncLimits": {
|
||
|
|
"description": "Host-enforced byte and identifier limits for one encrypted sync-object operation. inlineObjectBytes is the maximum ciphertext size that may travel inline on the control plane (below the 128 KiB provider JSON budget after base64 expansion).",
|
||
|
|
"const": {
|
||
|
|
"maxObjectBytes": 67108864,
|
||
|
|
"maxObjectKeyLength": 1024,
|
||
|
|
"maxRevisionLength": 256,
|
||
|
|
"inlineObjectBytes": 92160
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"StreamId": {
|
||
|
|
"type": "string",
|
||
|
|
"minLength": 1,
|
||
|
|
"maxLength": 128
|
||
|
|
},
|
||
|
|
"StreamChunkByteLength": {
|
||
|
|
"type": "integer",
|
||
|
|
"minimum": 0,
|
||
|
|
"maximum": 16777216
|
||
|
|
},
|
||
|
|
"StreamWindowBytes": {
|
||
|
|
"type": "integer",
|
||
|
|
"minimum": 1024,
|
||
|
|
"maximum": 16777216
|
||
|
|
},
|
||
|
|
"StreamCreditBytes": {
|
||
|
|
"type": "integer",
|
||
|
|
"minimum": 1,
|
||
|
|
"maximum": 16777216
|
||
|
|
},
|
||
|
|
"RelativePackagePath": {
|
||
|
|
"type": "string",
|
||
|
|
"minLength": 1,
|
||
|
|
"maxLength": 128,
|
||
|
|
"pattern": "^(?!/)(?![A-Za-z]:)(?!.*//)(?!.*\\\\)(?!.*[\\u0000-\\u001F<>:\"|?*])(?!\\.{1,2}(?:/|$))(?!.*\\/\\.{1,2}(?:/|$))(?!(?:[Cc][Oo][Nn]|[Pp][Rr][Nn]|[Aa][Uu][Xx]|[Nn][Uu][Ll]|[Cc][Oo][Mm][1-9]|[Ll][Pp][Tt][1-9])(?:\\.[^/]*)?(?:/|$))(?!.*\\/(?:[Cc][Oo][Nn]|[Pp][Rr][Nn]|[Aa][Uu][Xx]|[Nn][Uu][Ll]|[Cc][Oo][Mm][1-9]|[Ll][Pp][Tt][1-9])(?:\\.[^/]*)?(?:/|$))(?!.*[. ](?:/|$))[^/]+(?:/[^/]+)*$"
|
||
|
|
},
|
||
|
|
"PluginId": {
|
||
|
|
"type": "string",
|
||
|
|
"minLength": 3,
|
||
|
|
"maxLength": 128,
|
||
|
|
"pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+$"
|
||
|
|
},
|
||
|
|
"ContributionId": {
|
||
|
|
"type": "string",
|
||
|
|
"minLength": 5,
|
||
|
|
"maxLength": 192,
|
||
|
|
"description": "A globally unique contribution id. Semantic validation requires the exact '<pluginId>.' prefix.",
|
||
|
|
"pattern": "^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+\\.[A-Za-z][A-Za-z0-9_-]*(?:\\.[A-Za-z][A-Za-z0-9_-]*)*$"
|
||
|
|
},
|
||
|
|
"PluginHostProtocol": {
|
||
|
|
"type": "string",
|
||
|
|
"minLength": 12,
|
||
|
|
"maxLength": 199,
|
||
|
|
"description": "A host protocol owned by a connection Provider contribution: plugin:<providerId>.",
|
||
|
|
"pattern": "^plugin:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+\\.[A-Za-z][A-Za-z0-9_-]*(?:\\.[A-Za-z][A-Za-z0-9_-]*)*$"
|
||
|
|
},
|
||
|
|
"FeatureId": {
|
||
|
|
"type": "string",
|
||
|
|
"minLength": 3,
|
||
|
|
"maxLength": 128,
|
||
|
|
"pattern": "^[a-z][a-z0-9-]*(?:\\.[a-z0-9][a-z0-9_-]*)+$"
|
||
|
|
},
|
||
|
|
"SecretRef": {
|
||
|
|
"description": "A host-issued reference to secret material. The random identifier is opaque and never sufficient authority on its own. The non-secret key binds permission authorization to the packaged manifest resource; privileged consumers must revalidate identifier ownership, key binding, and operation scope.",
|
||
|
|
"type": "object",
|
||
|
|
"required": ["kind", "id", "key"],
|
||
|
|
"properties": {
|
||
|
|
"kind": { "const": "secret" },
|
||
|
|
"id": { "type": "string", "minLength": 16, "maxLength": 256 },
|
||
|
|
"key": {
|
||
|
|
"type": "string",
|
||
|
|
"minLength": 1,
|
||
|
|
"maxLength": 256,
|
||
|
|
"pattern": "^[^\\u0000]+$"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"CredentialRef": {
|
||
|
|
"description": "An opaque host-issued reference to a Netcatty-owned credential. The host validates ownership and provider-operation scope before issuing a plaintext lease.",
|
||
|
|
"type": "object",
|
||
|
|
"required": ["kind", "id"],
|
||
|
|
"properties": {
|
||
|
|
"kind": { "const": "credential" },
|
||
|
|
"id": { "type": "string", "minLength": 16, "maxLength": 256 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"SecretLeaseRef": {
|
||
|
|
"description": "An opaque, operation-bound, single-consumption lease. Only a host capability broker can consume it after revalidating runtime identity and operation scope.",
|
||
|
|
"type": "object",
|
||
|
|
"required": ["kind", "id", "operationId", "expiresAt"],
|
||
|
|
"properties": {
|
||
|
|
"kind": { "const": "secret-lease" },
|
||
|
|
"id": { "type": "string", "minLength": 32, "maxLength": 256 },
|
||
|
|
"operationId": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"expiresAt": { "$ref": "#/$defs/SafePositiveInteger" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"SemanticVersion": {
|
||
|
|
"type": "string",
|
||
|
|
"pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-(?:0|[1-9]\\d*|\\d*[A-Za-z-][0-9A-Za-z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[A-Za-z-][0-9A-Za-z-]*))*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"
|
||
|
|
},
|
||
|
|
"SemverRange": {
|
||
|
|
"type": "string",
|
||
|
|
"minLength": 1,
|
||
|
|
"maxLength": 128,
|
||
|
|
"description": "A node-semver compatible range. Official consumers must also run semantic validation.",
|
||
|
|
"pattern": "^(?! *$)[0-9A-Za-z<>=~^*xX|.\\-+ ]+$"
|
||
|
|
},
|
||
|
|
"LocalizedText": {
|
||
|
|
"oneOf": [
|
||
|
|
{ "type": "string", "minLength": 1, "maxLength": 512 },
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"minProperties": 1,
|
||
|
|
"propertyNames": { "pattern": "^[A-Za-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$" },
|
||
|
|
"additionalProperties": { "type": "string", "minLength": 1, "maxLength": 512 }
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"PluginPermission": {
|
||
|
|
"type": "string",
|
||
|
|
"enum": [
|
||
|
|
"storage",
|
||
|
|
"runtime.advanced",
|
||
|
|
"settings.read",
|
||
|
|
"settings.write",
|
||
|
|
"commands",
|
||
|
|
"menus",
|
||
|
|
"views",
|
||
|
|
"clipboard.read",
|
||
|
|
"clipboard.write",
|
||
|
|
"terminal.metadata",
|
||
|
|
"terminal.output",
|
||
|
|
"terminal.input",
|
||
|
|
"terminal.decorate",
|
||
|
|
"terminal.complete",
|
||
|
|
"terminal.intercept.input",
|
||
|
|
"terminal.intercept.output",
|
||
|
|
"vault.metadata",
|
||
|
|
"vault.write",
|
||
|
|
"vault.credentials",
|
||
|
|
"sftp.read",
|
||
|
|
"sftp.write",
|
||
|
|
"network",
|
||
|
|
"filesystem.read",
|
||
|
|
"filesystem.write",
|
||
|
|
"secrets",
|
||
|
|
"companion.execute",
|
||
|
|
"provider.terminal",
|
||
|
|
"provider.connection",
|
||
|
|
"provider.authentication",
|
||
|
|
"provider.sync",
|
||
|
|
"provider.importer"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"NonResourceScopedPermission": {
|
||
|
|
"description": "A permission whose complete activation-time scope is represented by the permission name itself.",
|
||
|
|
"type": "string",
|
||
|
|
"enum": [
|
||
|
|
"storage",
|
||
|
|
"runtime.advanced",
|
||
|
|
"settings.read",
|
||
|
|
"settings.write",
|
||
|
|
"commands",
|
||
|
|
"menus",
|
||
|
|
"views",
|
||
|
|
"clipboard.read",
|
||
|
|
"clipboard.write",
|
||
|
|
"terminal.metadata",
|
||
|
|
"terminal.output",
|
||
|
|
"terminal.input",
|
||
|
|
"terminal.decorate",
|
||
|
|
"terminal.complete",
|
||
|
|
"terminal.intercept.input",
|
||
|
|
"terminal.intercept.output",
|
||
|
|
"vault.metadata",
|
||
|
|
"vault.write",
|
||
|
|
"vault.credentials",
|
||
|
|
"sftp.read",
|
||
|
|
"sftp.write",
|
||
|
|
"secrets",
|
||
|
|
"provider.terminal",
|
||
|
|
"provider.connection",
|
||
|
|
"provider.authentication",
|
||
|
|
"provider.sync",
|
||
|
|
"provider.importer"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"ResourceScopedPermission": {
|
||
|
|
"description": "A permission whose approval must be constrained to explicit canonical resources.",
|
||
|
|
"type": "string",
|
||
|
|
"enum": [
|
||
|
|
"network",
|
||
|
|
"filesystem.read",
|
||
|
|
"filesystem.write",
|
||
|
|
"companion.execute"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"PermissionResource": {
|
||
|
|
"description": "A host-canonicalized permission resource. Filesystem resources may be absolute platform paths; other permission kinds impose narrower runtime limits.",
|
||
|
|
"type": "string",
|
||
|
|
"minLength": 1,
|
||
|
|
"maxLength": 8192
|
||
|
|
},
|
||
|
|
"BoundedPermissionResource": {
|
||
|
|
"description": "An explicit resource bound; the all-resources wildcard is not an activation-time bound.",
|
||
|
|
"type": "string",
|
||
|
|
"minLength": 1,
|
||
|
|
"maxLength": 8192,
|
||
|
|
"not": { "const": "*" }
|
||
|
|
},
|
||
|
|
"PermissionResourceKind": {
|
||
|
|
"description": "Whether a canonical resource grant covers only that resource or a filesystem directory subtree.",
|
||
|
|
"type": "string",
|
||
|
|
"enum": ["exact", "directory"]
|
||
|
|
},
|
||
|
|
"PermissionResourceDeclaration": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["permission", "resources"],
|
||
|
|
"properties": {
|
||
|
|
"permission": { "$ref": "#/$defs/PluginPermission" },
|
||
|
|
"resources": {
|
||
|
|
"type": "array",
|
||
|
|
"minItems": 1,
|
||
|
|
"maxItems": 128,
|
||
|
|
"uniqueItems": true,
|
||
|
|
"items": { "$ref": "#/$defs/PermissionResource" }
|
||
|
|
},
|
||
|
|
"reason": { "type": "string", "maxLength": 1024 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"PermissionDeclaration": {
|
||
|
|
"oneOf": [
|
||
|
|
{ "$ref": "#/$defs/PluginPermission" },
|
||
|
|
{ "$ref": "#/$defs/PermissionResourceDeclaration" }
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"RequiredPermissionResourceDeclaration": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["permission", "resources"],
|
||
|
|
"properties": {
|
||
|
|
"permission": { "$ref": "#/$defs/ResourceScopedPermission" },
|
||
|
|
"resources": {
|
||
|
|
"type": "array",
|
||
|
|
"minItems": 1,
|
||
|
|
"maxItems": 128,
|
||
|
|
"uniqueItems": true,
|
||
|
|
"items": { "$ref": "#/$defs/BoundedPermissionResource" }
|
||
|
|
},
|
||
|
|
"reason": { "type": "string", "maxLength": 1024 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"RequiredPermissionDeclaration": {
|
||
|
|
"description": "Required resource-scoped permissions must name their complete activation-time approval bounds.",
|
||
|
|
"oneOf": [
|
||
|
|
{ "$ref": "#/$defs/NonResourceScopedPermission" },
|
||
|
|
{ "$ref": "#/$defs/RequiredPermissionResourceDeclaration" }
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"PermissionSet": {
|
||
|
|
"type": "object",
|
||
|
|
"properties": {
|
||
|
|
"required": {
|
||
|
|
"type": "array",
|
||
|
|
"maxItems": 64,
|
||
|
|
"items": { "$ref": "#/$defs/RequiredPermissionDeclaration" }
|
||
|
|
},
|
||
|
|
"optional": {
|
||
|
|
"type": "array",
|
||
|
|
"maxItems": 64,
|
||
|
|
"items": { "$ref": "#/$defs/PermissionDeclaration" }
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"PluginEntrypoints": {
|
||
|
|
"type": "object",
|
||
|
|
"properties": {
|
||
|
|
"browser": { "$ref": "#/$defs/RelativePackagePath" },
|
||
|
|
"node": { "$ref": "#/$defs/RelativePackagePath" }
|
||
|
|
},
|
||
|
|
"minProperties": 1,
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"PluginEngines": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["netcatty", "api"],
|
||
|
|
"properties": {
|
||
|
|
"netcatty": { "$ref": "#/$defs/SemverRange" },
|
||
|
|
"api": { "$ref": "#/$defs/SemverRange" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"PluginEngineHeader": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["netcatty", "api"],
|
||
|
|
"properties": {
|
||
|
|
"netcatty": { "$ref": "#/$defs/SemverRange" },
|
||
|
|
"api": { "$ref": "#/$defs/SemverRange" }
|
||
|
|
},
|
||
|
|
"additionalProperties": true
|
||
|
|
},
|
||
|
|
"PluginFeatures": {
|
||
|
|
"type": "object",
|
||
|
|
"properties": {
|
||
|
|
"required": {
|
||
|
|
"type": "array",
|
||
|
|
"maxItems": 128,
|
||
|
|
"uniqueItems": true,
|
||
|
|
"items": { "$ref": "#/$defs/FeatureId" }
|
||
|
|
},
|
||
|
|
"optional": {
|
||
|
|
"type": "array",
|
||
|
|
"maxItems": 128,
|
||
|
|
"uniqueItems": true,
|
||
|
|
"items": { "$ref": "#/$defs/FeatureId" }
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"ActivationEvent": {
|
||
|
|
"oneOf": [
|
||
|
|
{ "const": "onStartupFinished" },
|
||
|
|
{
|
||
|
|
"type": "string",
|
||
|
|
"maxLength": 256,
|
||
|
|
"pattern": "^on(?:Command|View|Provider):[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+\\.[A-Za-z][A-Za-z0-9_-]*(?:\\.[A-Za-z][A-Za-z0-9_-]*)*$"
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"ContextKeyExpression": {
|
||
|
|
"type": "string",
|
||
|
|
"minLength": 1,
|
||
|
|
"maxLength": 1024,
|
||
|
|
"description": "A host-parsed Context Key expression. Plugins must not evaluate this string themselves."
|
||
|
|
},
|
||
|
|
"ThemeIcon": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["kind", "name"],
|
||
|
|
"properties": {
|
||
|
|
"kind": { "const": "theme" },
|
||
|
|
"name": {
|
||
|
|
"type": "string",
|
||
|
|
"minLength": 1,
|
||
|
|
"maxLength": 64,
|
||
|
|
"pattern": "^[a-z][a-z0-9-]*$"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"PackageIcon": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["kind", "light"],
|
||
|
|
"properties": {
|
||
|
|
"kind": { "const": "package" },
|
||
|
|
"light": { "$ref": "#/$defs/RelativePackagePath" },
|
||
|
|
"dark": { "$ref": "#/$defs/RelativePackagePath" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"IconReference": {
|
||
|
|
"oneOf": [
|
||
|
|
{ "$ref": "#/$defs/ThemeIcon" },
|
||
|
|
{ "$ref": "#/$defs/PackageIcon" }
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"SettingScope": {
|
||
|
|
"type": "string",
|
||
|
|
"enum": ["application", "workspace", "host", "session", "device"]
|
||
|
|
},
|
||
|
|
"SettingControl": {
|
||
|
|
"type": "string",
|
||
|
|
"enum": [
|
||
|
|
"switch",
|
||
|
|
"radio",
|
||
|
|
"select",
|
||
|
|
"multiselect",
|
||
|
|
"text",
|
||
|
|
"textarea",
|
||
|
|
"number",
|
||
|
|
"slider",
|
||
|
|
"password",
|
||
|
|
"color",
|
||
|
|
"font",
|
||
|
|
"file",
|
||
|
|
"directory",
|
||
|
|
"keybinding",
|
||
|
|
"list",
|
||
|
|
"table"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"SettingOption": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["value", "label"],
|
||
|
|
"properties": {
|
||
|
|
"value": { "type": "string", "maxLength": 256 },
|
||
|
|
"label": { "$ref": "#/$defs/LocalizedText" },
|
||
|
|
"description": { "$ref": "#/$defs/LocalizedText" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"SettingContribution": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["id", "label", "control", "scope"],
|
||
|
|
"properties": {
|
||
|
|
"id": { "$ref": "#/$defs/ContributionId" },
|
||
|
|
"label": { "$ref": "#/$defs/LocalizedText" },
|
||
|
|
"description": { "$ref": "#/$defs/LocalizedText" },
|
||
|
|
"control": { "$ref": "#/$defs/SettingControl" },
|
||
|
|
"scope": { "$ref": "#/$defs/SettingScope" },
|
||
|
|
"default": { "$ref": "#/$defs/JsonValue" },
|
||
|
|
"secret": { "type": "boolean", "default": false },
|
||
|
|
"required": { "type": "boolean", "default": false },
|
||
|
|
"options": {
|
||
|
|
"type": "array",
|
||
|
|
"maxItems": 256,
|
||
|
|
"items": { "$ref": "#/$defs/SettingOption" }
|
||
|
|
},
|
||
|
|
"minimum": { "type": "number" },
|
||
|
|
"maximum": { "type": "number" },
|
||
|
|
"step": { "type": "number", "exclusiveMinimum": 0 },
|
||
|
|
"pattern": { "type": "string", "maxLength": 512 },
|
||
|
|
"placeholder": { "$ref": "#/$defs/LocalizedText" },
|
||
|
|
"when": { "$ref": "#/$defs/ContextKeyExpression" },
|
||
|
|
"restartRequired": { "type": "boolean", "default": false },
|
||
|
|
"sync": { "type": "boolean", "default": false },
|
||
|
|
"sortable": { "type": "boolean", "default": false },
|
||
|
|
"valueSchema": { "$ref": "#/$defs/JsonValue" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"CommandContribution": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["id", "title"],
|
||
|
|
"properties": {
|
||
|
|
"id": { "$ref": "#/$defs/ContributionId" },
|
||
|
|
"title": { "$ref": "#/$defs/LocalizedText" },
|
||
|
|
"category": { "$ref": "#/$defs/LocalizedText" },
|
||
|
|
"description": { "$ref": "#/$defs/LocalizedText" },
|
||
|
|
"icon": { "$ref": "#/$defs/IconReference" },
|
||
|
|
"enablement": { "$ref": "#/$defs/ContextKeyExpression" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"KeybindingContribution": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["command", "key"],
|
||
|
|
"properties": {
|
||
|
|
"command": { "$ref": "#/$defs/ContributionId" },
|
||
|
|
"key": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"mac": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"linux": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"windows": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"when": { "$ref": "#/$defs/ContextKeyExpression" },
|
||
|
|
"args": { "$ref": "#/$defs/JsonValue" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"MenuLocation": {
|
||
|
|
"type": "string",
|
||
|
|
"enum": [
|
||
|
|
"commandPalette",
|
||
|
|
"application",
|
||
|
|
"host/context",
|
||
|
|
"terminal/context",
|
||
|
|
"terminal/toolbar",
|
||
|
|
"statusBar"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"MenuContribution": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["command", "location"],
|
||
|
|
"properties": {
|
||
|
|
"command": { "$ref": "#/$defs/ContributionId" },
|
||
|
|
"alt": { "$ref": "#/$defs/ContributionId" },
|
||
|
|
"location": { "$ref": "#/$defs/MenuLocation" },
|
||
|
|
"title": { "$ref": "#/$defs/LocalizedText" },
|
||
|
|
"icon": { "$ref": "#/$defs/IconReference" },
|
||
|
|
"group": { "type": "string", "maxLength": 128 },
|
||
|
|
"order": { "type": "number" },
|
||
|
|
"when": { "$ref": "#/$defs/ContextKeyExpression" },
|
||
|
|
"enablement": { "$ref": "#/$defs/ContextKeyExpression" },
|
||
|
|
"checked": { "$ref": "#/$defs/ContextKeyExpression" },
|
||
|
|
"showKeybinding": { "type": "boolean", "default": true }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"ViewLocation": {
|
||
|
|
"type": "string",
|
||
|
|
"enum": ["aside", "panel", "tab", "modal", "settings"]
|
||
|
|
},
|
||
|
|
"ViewContribution": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["id", "title", "location", "entry"],
|
||
|
|
"properties": {
|
||
|
|
"id": { "$ref": "#/$defs/ContributionId" },
|
||
|
|
"title": { "$ref": "#/$defs/LocalizedText" },
|
||
|
|
"location": { "$ref": "#/$defs/ViewLocation" },
|
||
|
|
"entry": { "$ref": "#/$defs/RelativePackagePath" },
|
||
|
|
"icon": { "$ref": "#/$defs/IconReference" },
|
||
|
|
"order": { "type": "number" },
|
||
|
|
"when": { "$ref": "#/$defs/ContextKeyExpression" },
|
||
|
|
"retainContextWhenHidden": { "type": "boolean", "default": false }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"ProviderKind": {
|
||
|
|
"type": "string",
|
||
|
|
"enum": [
|
||
|
|
"terminal.completion",
|
||
|
|
"terminal.decoration",
|
||
|
|
"terminal.link",
|
||
|
|
"terminal.hover",
|
||
|
|
"terminal.matcher",
|
||
|
|
"terminal.semantic",
|
||
|
|
"terminal.prompt",
|
||
|
|
"terminal.background",
|
||
|
|
"terminal.theme",
|
||
|
|
"terminal.interceptor.input",
|
||
|
|
"terminal.interceptor.output",
|
||
|
|
"connection",
|
||
|
|
"authentication",
|
||
|
|
"sync",
|
||
|
|
"importer"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"ProviderContribution": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["id", "label", "kind"],
|
||
|
|
"properties": {
|
||
|
|
"id": { "$ref": "#/$defs/ContributionId" },
|
||
|
|
"label": { "$ref": "#/$defs/LocalizedText" },
|
||
|
|
"description": { "$ref": "#/$defs/LocalizedText" },
|
||
|
|
"kind": { "$ref": "#/$defs/ProviderKind" },
|
||
|
|
"capabilities": {
|
||
|
|
"type": "array",
|
||
|
|
"maxItems": 64,
|
||
|
|
"uniqueItems": true,
|
||
|
|
"items": { "$ref": "#/$defs/FeatureId" }
|
||
|
|
},
|
||
|
|
"configurationSchema": { "$ref": "#/$defs/JsonValue" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"ProviderValidationIssue": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["severity", "message"],
|
||
|
|
"properties": {
|
||
|
|
"path": { "type": "string", "maxLength": 1024 },
|
||
|
|
"severity": { "type": "string", "enum": ["warning", "error"] },
|
||
|
|
"message": { "type": "string", "minLength": 1, "maxLength": 2048 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"ConnectionConfigurationPayload": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["configuration"],
|
||
|
|
"properties": { "configuration": { "$ref": "#/$defs/JsonValue" } },
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"ConnectionValidateResult": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["valid", "issues"],
|
||
|
|
"properties": {
|
||
|
|
"valid": { "type": "boolean" },
|
||
|
|
"issues": { "type": "array", "maxItems": 256, "items": { "$ref": "#/$defs/ProviderValidationIssue" } }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"ConnectionProbeResult": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["available"],
|
||
|
|
"properties": {
|
||
|
|
"available": { "type": "boolean" },
|
||
|
|
"message": { "type": "string", "maxLength": 2048 },
|
||
|
|
"capabilities": {
|
||
|
|
"type": "object",
|
||
|
|
"maxProperties": 64,
|
||
|
|
"additionalProperties": { "$ref": "#/$defs/JsonValue" }
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"ConnectionOpenPayload": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["configuration", "operationId", "columns", "rows", "inputStreamId", "outputStreamId", "windowBytes"],
|
||
|
|
"properties": {
|
||
|
|
"configuration": { "$ref": "#/$defs/JsonValue" },
|
||
|
|
"operationId": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"columns": { "type": "integer", "minimum": 1, "maximum": 16384 },
|
||
|
|
"rows": { "type": "integer", "minimum": 1, "maximum": 16384 },
|
||
|
|
"inputStreamId": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"outputStreamId": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"windowBytes": { "type": "integer", "minimum": 1024, "maximum": 16777216 },
|
||
|
|
"credential": {
|
||
|
|
"oneOf": [
|
||
|
|
{ "$ref": "#/$defs/SecretRef" },
|
||
|
|
{ "$ref": "#/$defs/CredentialRef" },
|
||
|
|
{ "$ref": "#/$defs/SecretLeaseRef" }
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"authenticationProviderId": { "$ref": "#/$defs/ContributionId" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"ConnectionOpenResult": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["connectionId", "status"],
|
||
|
|
"properties": {
|
||
|
|
"connectionId": { "type": "string", "minLength": 1, "maxLength": 256 },
|
||
|
|
"status": { "type": "string", "enum": ["connecting", "connected"] },
|
||
|
|
"diagnostics": { "type": "array", "maxItems": 256, "items": { "$ref": "#/$defs/ProviderValidationIssue" } }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"ConnectionControlPayload": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["connectionId", "operationId"],
|
||
|
|
"properties": {
|
||
|
|
"connectionId": { "type": "string", "minLength": 1, "maxLength": 256 },
|
||
|
|
"operationId": { "type": "string", "minLength": 1, "maxLength": 128 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"ConnectionResizePayload": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["connectionId", "operationId", "columns", "rows"],
|
||
|
|
"properties": {
|
||
|
|
"connectionId": { "type": "string", "minLength": 1, "maxLength": 256 },
|
||
|
|
"operationId": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"columns": { "type": "integer", "minimum": 1, "maximum": 16384 },
|
||
|
|
"rows": { "type": "integer", "minimum": 1, "maximum": 16384 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"ConnectionSignalPayload": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["connectionId", "operationId", "signal"],
|
||
|
|
"properties": {
|
||
|
|
"connectionId": { "type": "string", "minLength": 1, "maxLength": 256 },
|
||
|
|
"operationId": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"signal": { "type": "string", "enum": ["interrupt", "terminate", "kill", "eof", "break"] }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"ConnectionControlResult": {
|
||
|
|
"description": "resize, signal, reconnect, and close are acknowledged by returning JSON null. Any object result is rejected.",
|
||
|
|
"const": null
|
||
|
|
},
|
||
|
|
"ConnectionStatusResult": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["status"],
|
||
|
|
"properties": {
|
||
|
|
"status": { "type": "string", "enum": ["connecting", "connected", "reconnecting", "closed", "error"] },
|
||
|
|
"message": { "type": "string", "maxLength": 2048 },
|
||
|
|
"retryable": { "type": "boolean" },
|
||
|
|
"diagnostics": { "type": "array", "maxItems": 256, "items": { "$ref": "#/$defs/ProviderValidationIssue" } }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"AuthenticationChallenge": {
|
||
|
|
"oneOf": [
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": ["id", "kind", "title"],
|
||
|
|
"properties": {
|
||
|
|
"id": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"kind": { "type": "string", "enum": ["text", "password", "otp"] },
|
||
|
|
"title": { "type": "string", "minLength": 1, "maxLength": 512 },
|
||
|
|
"message": { "type": "string", "maxLength": 2048 },
|
||
|
|
"placeholder": { "type": "string", "maxLength": 512 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": ["id", "kind", "title", "choices"],
|
||
|
|
"properties": {
|
||
|
|
"id": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"kind": { "const": "choice" },
|
||
|
|
"title": { "type": "string", "minLength": 1, "maxLength": 512 },
|
||
|
|
"message": { "type": "string", "maxLength": 2048 },
|
||
|
|
"choices": {
|
||
|
|
"type": "array", "minItems": 1, "maxItems": 64,
|
||
|
|
"items": {
|
||
|
|
"type": "object", "required": ["id", "label"],
|
||
|
|
"properties": {
|
||
|
|
"id": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"label": { "type": "string", "minLength": 1, "maxLength": 512 },
|
||
|
|
"description": { "type": "string", "maxLength": 2048 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"multiple": { "type": "boolean" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": ["id", "kind", "title"],
|
||
|
|
"properties": {
|
||
|
|
"id": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"kind": { "const": "confirmation" },
|
||
|
|
"title": { "type": "string", "minLength": 1, "maxLength": 512 },
|
||
|
|
"message": { "type": "string", "maxLength": 2048 },
|
||
|
|
"confirmLabel": { "type": "string", "maxLength": 128 },
|
||
|
|
"cancelLabel": { "type": "string", "maxLength": 128 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": ["id", "kind", "title", "url"],
|
||
|
|
"properties": {
|
||
|
|
"id": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"kind": { "const": "browser" },
|
||
|
|
"title": { "type": "string", "minLength": 1, "maxLength": 512 },
|
||
|
|
"url": { "type": "string", "format": "uri", "maxLength": 8192 },
|
||
|
|
"callbackUri": { "type": "string", "format": "uri", "maxLength": 8192 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": ["id", "kind", "title", "verificationUri", "userCode", "expiresAt"],
|
||
|
|
"properties": {
|
||
|
|
"id": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"kind": { "const": "deviceCode" },
|
||
|
|
"title": { "type": "string", "minLength": 1, "maxLength": 512 },
|
||
|
|
"verificationUri": { "type": "string", "format": "uri", "maxLength": 8192 },
|
||
|
|
"userCode": { "type": "string", "minLength": 1, "maxLength": 256 },
|
||
|
|
"expiresAt": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 },
|
||
|
|
"intervalMs": { "type": "integer", "minimum": 100, "maximum": 300000 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"AuthenticationBeginPayload": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["operationId", "connectionProviderId", "configuration"],
|
||
|
|
"properties": {
|
||
|
|
"operationId": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"connectionProviderId": { "$ref": "#/$defs/ContributionId" },
|
||
|
|
"configuration": { "$ref": "#/$defs/JsonValue" },
|
||
|
|
"credential": { "oneOf": [{ "$ref": "#/$defs/SecretRef" }, { "$ref": "#/$defs/CredentialRef" }, { "$ref": "#/$defs/SecretLeaseRef" }] }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"AuthenticationResponsePayload": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["operationId", "challengeId", "response"],
|
||
|
|
"properties": {
|
||
|
|
"operationId": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"challengeId": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"response": {
|
||
|
|
"oneOf": [
|
||
|
|
{ "type": "string", "minLength": 1, "maxLength": 8192 },
|
||
|
|
{ "type": "boolean" },
|
||
|
|
{ "type": "array", "maxItems": 64, "uniqueItems": true, "items": { "type": "string", "maxLength": 128 } },
|
||
|
|
{ "$ref": "#/$defs/SecretLeaseRef" }
|
||
|
|
]
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"AuthenticationResult": {
|
||
|
|
"oneOf": [
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": ["status", "challenge"],
|
||
|
|
"properties": {
|
||
|
|
"status": { "const": "challenge" },
|
||
|
|
"challenge": { "$ref": "#/$defs/AuthenticationChallenge" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": ["status"],
|
||
|
|
"properties": {
|
||
|
|
"status": { "const": "authenticated" },
|
||
|
|
"credential": { "oneOf": [{ "$ref": "#/$defs/SecretRef" }, { "$ref": "#/$defs/CredentialRef" }] }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": ["status"],
|
||
|
|
"properties": {
|
||
|
|
"status": { "const": "cancelled" },
|
||
|
|
"message": { "type": "string", "maxLength": 2048 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": ["status"],
|
||
|
|
"properties": {
|
||
|
|
"status": { "const": "failed" },
|
||
|
|
"message": { "type": "string", "maxLength": 2048 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"ImporterDetectPayload": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["sample"],
|
||
|
|
"properties": {
|
||
|
|
"fileName": { "type": "string", "maxLength": 1024 },
|
||
|
|
"mediaType": { "type": "string", "maxLength": 256 },
|
||
|
|
"sample": {
|
||
|
|
"type": "object", "required": ["encoding", "data"],
|
||
|
|
"properties": {
|
||
|
|
"encoding": { "const": "base64" },
|
||
|
|
"data": { "type": "string", "maxLength": 174764 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"ImporterDetectResult": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["confidence"],
|
||
|
|
"properties": {
|
||
|
|
"confidence": { "type": "number", "minimum": 0, "maximum": 1 },
|
||
|
|
"format": { "type": "string", "maxLength": 256 },
|
||
|
|
"reason": { "type": "string", "maxLength": 2048 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"ImporterParsePayload": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["operationId", "inputStreamId", "outputStreamId", "windowBytes"],
|
||
|
|
"properties": {
|
||
|
|
"operationId": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"fileName": { "type": "string", "maxLength": 1024 },
|
||
|
|
"mediaType": { "type": "string", "maxLength": 256 },
|
||
|
|
"inputStreamId": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"outputStreamId": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"windowBytes": { "type": "integer", "minimum": 1024, "maximum": 16777216 },
|
||
|
|
"options": { "$ref": "#/$defs/JsonValue" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"ImporterParseResult": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["parsed", "warnings", "errors"],
|
||
|
|
"properties": {
|
||
|
|
"parsed": { "type": "integer", "minimum": 0, "maximum": 10000 },
|
||
|
|
"warnings": { "type": "integer", "minimum": 0, "maximum": 10000 },
|
||
|
|
"errors": { "type": "integer", "minimum": 0, "maximum": 10000 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"ImporterPluginConnectionDraft": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["providerId", "configuration"],
|
||
|
|
"properties": {
|
||
|
|
"providerId": { "$ref": "#/$defs/ContributionId" },
|
||
|
|
"configuration": { "$ref": "#/$defs/JsonValue" },
|
||
|
|
"authenticationProviderId": { "$ref": "#/$defs/ContributionId" },
|
||
|
|
"credentialId": {
|
||
|
|
"type": "string",
|
||
|
|
"minLength": 1,
|
||
|
|
"maxLength": 256,
|
||
|
|
"description": "Source id of an identity or key draft in the same import. Netcatty maps it to the newly persisted host-owned credential id."
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"ImporterHostDraft": {
|
||
|
|
"description": "A host draft normalized by Netcatty before Vault persistence. Executable startup commands and plaintext built-in credentials are intentionally not part of this public importer shape.",
|
||
|
|
"type": "object",
|
||
|
|
"anyOf": [
|
||
|
|
{
|
||
|
|
"required": ["hostname"],
|
||
|
|
"properties": {
|
||
|
|
"hostname": { "type": "string", "minLength": 1, "maxLength": 1024 }
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"required": ["protocol", "pluginConnection"],
|
||
|
|
"properties": {
|
||
|
|
"protocol": { "$ref": "#/$defs/PluginHostProtocol" },
|
||
|
|
"pluginConnection": { "$ref": "#/$defs/ImporterPluginConnectionDraft" }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"if": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["protocol"],
|
||
|
|
"properties": { "protocol": { "$ref": "#/$defs/PluginHostProtocol" } }
|
||
|
|
},
|
||
|
|
"then": { "required": ["pluginConnection"] },
|
||
|
|
"dependentRequired": {
|
||
|
|
"pluginConnection": ["protocol"]
|
||
|
|
},
|
||
|
|
"dependentSchemas": {
|
||
|
|
"pluginConnection": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["protocol"],
|
||
|
|
"properties": { "protocol": { "$ref": "#/$defs/PluginHostProtocol" } }
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"properties": {
|
||
|
|
"id": { "type": "string", "minLength": 1, "maxLength": 256 },
|
||
|
|
"label": { "type": "string", "minLength": 1, "maxLength": 512 },
|
||
|
|
"hostname": { "type": "string", "minLength": 1, "maxLength": 1024 },
|
||
|
|
"username": { "type": "string", "maxLength": 512 },
|
||
|
|
"group": { "type": "string", "minLength": 1, "maxLength": 512 },
|
||
|
|
"tags": {
|
||
|
|
"type": "array",
|
||
|
|
"maxItems": 128,
|
||
|
|
"uniqueItems": true,
|
||
|
|
"items": { "type": "string", "minLength": 1, "maxLength": 256 }
|
||
|
|
},
|
||
|
|
"os": { "type": "string", "enum": ["linux", "windows", "macos"] },
|
||
|
|
"deviceType": { "type": "string", "enum": ["general", "network"] },
|
||
|
|
"identityId": { "type": "string", "minLength": 1, "maxLength": 256 },
|
||
|
|
"identityFileId": { "type": "string", "minLength": 1, "maxLength": 256 },
|
||
|
|
"telnetIdentityId": { "type": "string", "minLength": 1, "maxLength": 256 },
|
||
|
|
"protocol": {
|
||
|
|
"oneOf": [
|
||
|
|
{ "type": "string", "enum": ["ssh", "telnet", "mosh", "et", "local", "serial"] },
|
||
|
|
{ "$ref": "#/$defs/PluginHostProtocol" }
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"pluginConnection": { "$ref": "#/$defs/ImporterPluginConnectionDraft" },
|
||
|
|
"notes": { "type": "string", "maxLength": 65536 },
|
||
|
|
"theme": { "type": "string", "minLength": 1, "maxLength": 256 },
|
||
|
|
"sftpEncoding": { "type": "string", "minLength": 1, "maxLength": 64 },
|
||
|
|
"sftpFileProtocol": { "type": "string", "enum": ["auto", "sftp", "scp"] },
|
||
|
|
"moshEnabled": { "type": "boolean" },
|
||
|
|
"etEnabled": { "type": "boolean" },
|
||
|
|
"telnetEnabled": { "type": "boolean" },
|
||
|
|
"sftpSudo": { "type": "boolean" },
|
||
|
|
"requiresMfa": { "type": "boolean" },
|
||
|
|
"useSshAgent": { "type": "boolean" },
|
||
|
|
"identitiesOnly": { "type": "boolean" },
|
||
|
|
"agentForwarding": { "type": "boolean" },
|
||
|
|
"x11Forwarding": { "type": "boolean" },
|
||
|
|
"showLineTimestamps": { "type": "boolean" },
|
||
|
|
"disableDynamicTabTitle": { "type": "boolean" },
|
||
|
|
"pinned": { "type": "boolean" },
|
||
|
|
"autoOpenSftpPanel": { "type": "boolean" },
|
||
|
|
"sftpFollowTerminalCwd": { "type": "boolean" },
|
||
|
|
"port": { "type": "integer", "minimum": 1, "maximum": 65535 },
|
||
|
|
"telnetPort": { "type": "integer", "minimum": 1, "maximum": 65535 },
|
||
|
|
"etPort": { "type": "integer", "minimum": 1, "maximum": 65535 },
|
||
|
|
"keepaliveInterval": { "type": "integer", "minimum": 0, "maximum": 3600 },
|
||
|
|
"keepaliveCountMax": { "type": "integer", "minimum": 1, "maximum": 100 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"ImporterIdentityDraft": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["label", "username", "authMethod"],
|
||
|
|
"properties": {
|
||
|
|
"id": { "type": "string", "minLength": 1, "maxLength": 256 },
|
||
|
|
"label": { "type": "string", "minLength": 1, "maxLength": 512 },
|
||
|
|
"username": { "type": "string", "minLength": 1, "maxLength": 512 },
|
||
|
|
"authMethod": { "type": "string", "enum": ["password", "key", "certificate"] },
|
||
|
|
"password": { "type": "string", "maxLength": 65536 },
|
||
|
|
"keyId": { "type": "string", "minLength": 1, "maxLength": 256 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"ImporterKeyDraft": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["label", "type"],
|
||
|
|
"oneOf": [
|
||
|
|
{
|
||
|
|
"required": ["privateKey"],
|
||
|
|
"properties": {
|
||
|
|
"privateKey": { "type": "string", "minLength": 1, "maxLength": 2097152 }
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"required": ["filePath"],
|
||
|
|
"properties": {
|
||
|
|
"filePath": { "type": "string", "minLength": 1, "maxLength": 8192 }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"properties": {
|
||
|
|
"id": { "type": "string", "minLength": 1, "maxLength": 256 },
|
||
|
|
"label": { "type": "string", "minLength": 1, "maxLength": 512 },
|
||
|
|
"type": { "type": "string", "enum": ["RSA", "ECDSA", "ED25519"] },
|
||
|
|
"privateKey": { "type": "string", "minLength": 1, "maxLength": 2097152 },
|
||
|
|
"publicKey": { "type": "string", "maxLength": 1048576 },
|
||
|
|
"certificate": { "type": "string", "maxLength": 1048576 },
|
||
|
|
"passphrase": { "type": "string", "maxLength": 65536 },
|
||
|
|
"filePath": { "type": "string", "minLength": 1, "maxLength": 8192 },
|
||
|
|
"category": { "type": "string", "enum": ["key", "certificate", "identity"] }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"ImporterSnippetDraft": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["label", "command"],
|
||
|
|
"properties": {
|
||
|
|
"id": { "type": "string", "minLength": 1, "maxLength": 256 },
|
||
|
|
"label": { "type": "string", "minLength": 1, "maxLength": 512 },
|
||
|
|
"command": { "type": "string", "minLength": 1, "maxLength": 1048576 },
|
||
|
|
"tags": {
|
||
|
|
"type": "array",
|
||
|
|
"maxItems": 128,
|
||
|
|
"uniqueItems": true,
|
||
|
|
"items": { "type": "string", "minLength": 1, "maxLength": 256 }
|
||
|
|
},
|
||
|
|
"kind": { "type": "string", "enum": ["snippet", "script"] },
|
||
|
|
"description": { "type": "string", "maxLength": 4096 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"ImporterGroupDraft": {
|
||
|
|
"oneOf": [
|
||
|
|
{ "type": "string", "minLength": 1, "maxLength": 512 },
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"properties": {
|
||
|
|
"path": { "type": "string", "minLength": 1, "maxLength": 512 },
|
||
|
|
"label": { "type": "string", "minLength": 1, "maxLength": 512 }
|
||
|
|
},
|
||
|
|
"anyOf": [
|
||
|
|
{
|
||
|
|
"required": ["path"],
|
||
|
|
"properties": {
|
||
|
|
"path": { "type": "string", "minLength": 1, "maxLength": 512 }
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"required": ["label"],
|
||
|
|
"properties": {
|
||
|
|
"label": { "type": "string", "minLength": 1, "maxLength": 512 }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"additionalProperties": false
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"ImporterRecord": {
|
||
|
|
"oneOf": [
|
||
|
|
{
|
||
|
|
"type": "object", "required": ["type", "draft"],
|
||
|
|
"properties": {
|
||
|
|
"type": { "const": "draft" },
|
||
|
|
"draft": {
|
||
|
|
"oneOf": [
|
||
|
|
{
|
||
|
|
"type": "object", "required": ["kind", "value"],
|
||
|
|
"properties": {
|
||
|
|
"kind": { "const": "host" },
|
||
|
|
"value": { "$ref": "#/$defs/ImporterHostDraft" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object", "required": ["kind", "value"],
|
||
|
|
"properties": {
|
||
|
|
"kind": { "const": "identity" },
|
||
|
|
"value": { "$ref": "#/$defs/ImporterIdentityDraft" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object", "required": ["kind", "value"],
|
||
|
|
"properties": {
|
||
|
|
"kind": { "const": "key" },
|
||
|
|
"value": { "$ref": "#/$defs/ImporterKeyDraft" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object", "required": ["kind", "value"],
|
||
|
|
"properties": {
|
||
|
|
"kind": { "const": "snippet" },
|
||
|
|
"value": { "$ref": "#/$defs/ImporterSnippetDraft" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object", "required": ["kind", "value"],
|
||
|
|
"properties": {
|
||
|
|
"kind": { "const": "group" },
|
||
|
|
"value": { "$ref": "#/$defs/ImporterGroupDraft" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object", "required": ["type", "message"],
|
||
|
|
"properties": {
|
||
|
|
"type": { "type": "string", "enum": ["warning", "error"] },
|
||
|
|
"code": { "type": "string", "maxLength": 128 },
|
||
|
|
"message": { "type": "string", "minLength": 1, "maxLength": 2048 },
|
||
|
|
"path": { "type": "string", "maxLength": 1024 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object", "required": ["type", "completed"],
|
||
|
|
"properties": {
|
||
|
|
"type": { "const": "progress" },
|
||
|
|
"completed": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 },
|
||
|
|
"total": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 },
|
||
|
|
"message": { "type": "string", "maxLength": 2048 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
|
||
|
|
"SyncObjectKey": {
|
||
|
|
"type": "string",
|
||
|
|
"minLength": 1,
|
||
|
|
"maxLength": 1024
|
||
|
|
},
|
||
|
|
"SyncObjectRevision": {
|
||
|
|
"type": "string",
|
||
|
|
"minLength": 1,
|
||
|
|
"maxLength": 256
|
||
|
|
},
|
||
|
|
"SyncAccount": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["id"],
|
||
|
|
"properties": {
|
||
|
|
"id": { "type": "string", "minLength": 1, "maxLength": 512 },
|
||
|
|
"email": { "type": "string", "maxLength": 512 },
|
||
|
|
"name": { "type": "string", "maxLength": 512 },
|
||
|
|
"avatarUrl": { "type": "string", "maxLength": 2048 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"SyncConnectPayload": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["configuration", "operationId"],
|
||
|
|
"properties": {
|
||
|
|
"configuration": { "$ref": "#/$defs/JsonValue" },
|
||
|
|
"operationId": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"credential": {
|
||
|
|
"oneOf": [
|
||
|
|
{ "$ref": "#/$defs/SecretRef" },
|
||
|
|
{ "$ref": "#/$defs/CredentialRef" },
|
||
|
|
{ "$ref": "#/$defs/SecretLeaseRef" }
|
||
|
|
]
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"SyncConnectResult": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["account"],
|
||
|
|
"properties": {
|
||
|
|
"account": { "$ref": "#/$defs/SyncAccount" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"SyncDisconnectPayload": {
|
||
|
|
"type": "object",
|
||
|
|
"properties": {
|
||
|
|
"operationId": { "type": "string", "minLength": 1, "maxLength": 128 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"SyncDisconnectResult": {
|
||
|
|
"type": "null"
|
||
|
|
},
|
||
|
|
"SyncGetAccountPayload": {
|
||
|
|
"type": "object",
|
||
|
|
"properties": {
|
||
|
|
"operationId": { "type": "string", "minLength": 1, "maxLength": 128 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"SyncGetAccountResult": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["account"],
|
||
|
|
"properties": {
|
||
|
|
"account": {
|
||
|
|
"oneOf": [
|
||
|
|
{ "$ref": "#/$defs/SyncAccount" },
|
||
|
|
{ "type": "null" }
|
||
|
|
]
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"SyncGetCapabilitiesPayload": {
|
||
|
|
"type": "object",
|
||
|
|
"properties": {
|
||
|
|
"operationId": { "type": "string", "minLength": 1, "maxLength": 128 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"SyncCapabilitiesResult": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["revisions", "conditionalWrites", "atomicReplacement"],
|
||
|
|
"properties": {
|
||
|
|
"revisions": { "type": "boolean" },
|
||
|
|
"conditionalWrites": { "type": "boolean" },
|
||
|
|
"atomicReplacement": { "type": "boolean" },
|
||
|
|
"maxObjectBytes": { "type": "integer", "minimum": 1, "maximum": 67108864 },
|
||
|
|
"maxObjects": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"SyncReadObjectPayload": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["key", "operationId"],
|
||
|
|
"properties": {
|
||
|
|
"key": { "$ref": "#/$defs/SyncObjectKey" },
|
||
|
|
"operationId": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"outputStreamId": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"windowBytes": { "type": "integer", "minimum": 1024, "maximum": 16777216 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"SyncReadObjectResult": {
|
||
|
|
"oneOf": [
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": ["found"],
|
||
|
|
"properties": {
|
||
|
|
"found": { "const": false }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": ["found", "byteLength", "encoding", "data"],
|
||
|
|
"properties": {
|
||
|
|
"found": { "const": true },
|
||
|
|
"byteLength": { "type": "integer", "minimum": 0, "maximum": 67108864 },
|
||
|
|
"encoding": { "const": "base64" },
|
||
|
|
"data": { "type": "string", "maxLength": 9007199254740991 },
|
||
|
|
"revision": { "$ref": "#/$defs/SyncObjectRevision" },
|
||
|
|
"contentType": { "type": "string", "maxLength": 256 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": ["found", "byteLength", "streamed"],
|
||
|
|
"properties": {
|
||
|
|
"found": { "const": true },
|
||
|
|
"byteLength": { "type": "integer", "minimum": 0, "maximum": 67108864 },
|
||
|
|
"streamed": { "const": true },
|
||
|
|
"revision": { "$ref": "#/$defs/SyncObjectRevision" },
|
||
|
|
"contentType": { "type": "string", "maxLength": 256 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"SyncWriteObjectPayload": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["key", "operationId", "byteLength"],
|
||
|
|
"properties": {
|
||
|
|
"key": { "$ref": "#/$defs/SyncObjectKey" },
|
||
|
|
"operationId": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"byteLength": { "type": "integer", "minimum": 0, "maximum": 67108864 },
|
||
|
|
"expectedRevision": {
|
||
|
|
"oneOf": [
|
||
|
|
{ "$ref": "#/$defs/SyncObjectRevision" },
|
||
|
|
{ "type": "null" }
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"encoding": { "const": "base64" },
|
||
|
|
"data": { "type": "string", "maxLength": 9007199254740991 },
|
||
|
|
"inputStreamId": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"windowBytes": { "type": "integer", "minimum": 1024, "maximum": 16777216 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"SyncWriteObjectResult": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["created"],
|
||
|
|
"properties": {
|
||
|
|
"created": { "type": "boolean" },
|
||
|
|
"revision": { "$ref": "#/$defs/SyncObjectRevision" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"SyncDeleteObjectPayload": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["key", "operationId"],
|
||
|
|
"properties": {
|
||
|
|
"key": { "$ref": "#/$defs/SyncObjectKey" },
|
||
|
|
"operationId": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"expectedRevision": { "$ref": "#/$defs/SyncObjectRevision" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"SyncDeleteObjectResult": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["deleted"],
|
||
|
|
"properties": {
|
||
|
|
"deleted": { "type": "boolean" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"CompanionPlatform": {
|
||
|
|
"type": "string",
|
||
|
|
"enum": [
|
||
|
|
"darwin-arm64",
|
||
|
|
"darwin-x64",
|
||
|
|
"linux-arm64",
|
||
|
|
"linux-x64",
|
||
|
|
"win32-arm64",
|
||
|
|
"win32-x64"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"CompanionExecutableVariant": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["path", "platforms", "sha256"],
|
||
|
|
"properties": {
|
||
|
|
"path": { "$ref": "#/$defs/RelativePackagePath" },
|
||
|
|
"platforms": {
|
||
|
|
"type": "array",
|
||
|
|
"minItems": 1,
|
||
|
|
"maxItems": 6,
|
||
|
|
"uniqueItems": true,
|
||
|
|
"items": { "$ref": "#/$defs/CompanionPlatform" }
|
||
|
|
},
|
||
|
|
"sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"CompanionExecutable": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["id", "variants"],
|
||
|
|
"properties": {
|
||
|
|
"id": { "$ref": "#/$defs/ContributionId" },
|
||
|
|
"variants": {
|
||
|
|
"type": "array",
|
||
|
|
"minItems": 1,
|
||
|
|
"maxItems": 12,
|
||
|
|
"items": { "$ref": "#/$defs/CompanionExecutableVariant" }
|
||
|
|
},
|
||
|
|
"permissions": {
|
||
|
|
"type": "array",
|
||
|
|
"maxItems": 32,
|
||
|
|
"uniqueItems": true,
|
||
|
|
"items": { "$ref": "#/$defs/PluginPermission" }
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"PluginContributions": {
|
||
|
|
"type": "object",
|
||
|
|
"properties": {
|
||
|
|
"settings": { "type": "array", "maxItems": 512, "items": { "$ref": "#/$defs/SettingContribution" } },
|
||
|
|
"commands": { "type": "array", "maxItems": 512, "items": { "$ref": "#/$defs/CommandContribution" } },
|
||
|
|
"keybindings": { "type": "array", "maxItems": 1024, "items": { "$ref": "#/$defs/KeybindingContribution" } },
|
||
|
|
"menus": { "type": "array", "maxItems": 1024, "items": { "$ref": "#/$defs/MenuContribution" } },
|
||
|
|
"views": { "type": "array", "maxItems": 128, "items": { "$ref": "#/$defs/ViewContribution" } },
|
||
|
|
"providers": { "type": "array", "maxItems": 256, "items": { "$ref": "#/$defs/ProviderContribution" } }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"PluginManifestHeader": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["manifestVersion", "id", "version", "engines"],
|
||
|
|
"properties": {
|
||
|
|
"$schema": { "type": "string", "format": "uri-reference" },
|
||
|
|
"manifestVersion": { "type": "integer", "minimum": 1, "maximum": 65535 },
|
||
|
|
"id": { "$ref": "#/$defs/PluginId" },
|
||
|
|
"version": { "$ref": "#/$defs/SemanticVersion" },
|
||
|
|
"engines": { "$ref": "#/$defs/PluginEngineHeader" }
|
||
|
|
},
|
||
|
|
"additionalProperties": true
|
||
|
|
},
|
||
|
|
"PluginManifest": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["manifestVersion", "id", "name", "version", "publisher", "engines", "main"],
|
||
|
|
"properties": {
|
||
|
|
"$schema": { "type": "string", "format": "uri-reference" },
|
||
|
|
"manifestVersion": { "const": 1 },
|
||
|
|
"id": { "$ref": "#/$defs/PluginId" },
|
||
|
|
"name": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"displayName": { "$ref": "#/$defs/LocalizedText" },
|
||
|
|
"description": { "$ref": "#/$defs/LocalizedText" },
|
||
|
|
"version": { "$ref": "#/$defs/SemanticVersion" },
|
||
|
|
"publisher": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"license": { "type": "string", "maxLength": 128 },
|
||
|
|
"homepage": { "type": "string", "format": "uri" },
|
||
|
|
"repository": { "type": "string", "format": "uri" },
|
||
|
|
"engines": { "$ref": "#/$defs/PluginEngines" },
|
||
|
|
"features": { "$ref": "#/$defs/PluginFeatures" },
|
||
|
|
"main": { "$ref": "#/$defs/PluginEntrypoints" },
|
||
|
|
"activationEvents": {
|
||
|
|
"type": "array",
|
||
|
|
"maxItems": 256,
|
||
|
|
"uniqueItems": true,
|
||
|
|
"items": { "$ref": "#/$defs/ActivationEvent" }
|
||
|
|
},
|
||
|
|
"permissions": { "$ref": "#/$defs/PermissionSet" },
|
||
|
|
"contributes": { "$ref": "#/$defs/PluginContributions" },
|
||
|
|
"companionExecutables": {
|
||
|
|
"type": "array",
|
||
|
|
"maxItems": 32,
|
||
|
|
"items": { "$ref": "#/$defs/CompanionExecutable" }
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"RpcId": {
|
||
|
|
"oneOf": [
|
||
|
|
{ "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
{ "$ref": "#/$defs/SafeUnsignedInteger" }
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"NullableRpcId": {
|
||
|
|
"oneOf": [
|
||
|
|
{ "$ref": "#/$defs/RpcId" },
|
||
|
|
{ "type": "null" }
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"RpcRequest": {
|
||
|
|
"type": "object",
|
||
|
|
"description": "A generic request. Reserved methods with dedicated schemas are excluded and must validate against their exact contract.",
|
||
|
|
"required": ["jsonrpc", "id", "method"],
|
||
|
|
"properties": {
|
||
|
|
"jsonrpc": { "const": "2.0" },
|
||
|
|
"id": { "$ref": "#/$defs/RpcId" },
|
||
|
|
"method": { "type": "string", "minLength": 1, "maxLength": 256 },
|
||
|
|
"params": { "$ref": "#/$defs/JsonValue" },
|
||
|
|
"deadlineMs": { "type": "integer", "minimum": 1, "maximum": 300000 },
|
||
|
|
"cancellationId": { "type": "string", "minLength": 1, "maxLength": 128 }
|
||
|
|
},
|
||
|
|
"not": {
|
||
|
|
"required": ["method"],
|
||
|
|
"properties": {
|
||
|
|
"method": { "enum": ["plugin.initialize", "plugin.terminal.interceptor.attach", "$/cancelRequest", "$/progress"] }
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"RpcNotification": {
|
||
|
|
"type": "object",
|
||
|
|
"description": "A generic notification. Reserved notifications with dedicated schemas are excluded and must validate against their exact contract.",
|
||
|
|
"required": ["jsonrpc", "method"],
|
||
|
|
"properties": {
|
||
|
|
"jsonrpc": { "const": "2.0" },
|
||
|
|
"method": { "type": "string", "minLength": 1, "maxLength": 256 },
|
||
|
|
"params": { "$ref": "#/$defs/JsonValue" }
|
||
|
|
},
|
||
|
|
"not": {
|
||
|
|
"required": ["method"],
|
||
|
|
"properties": {
|
||
|
|
"method": { "enum": ["plugin.initialize", "plugin.terminal.interceptor.attach", "$/cancelRequest", "$/progress"] }
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"RpcSuccess": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["jsonrpc", "id", "result"],
|
||
|
|
"properties": {
|
||
|
|
"jsonrpc": { "const": "2.0" },
|
||
|
|
"id": { "$ref": "#/$defs/RpcId" },
|
||
|
|
"result": { "$ref": "#/$defs/JsonValue" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"JsonRpcStandardErrorCode": {
|
||
|
|
"type": "integer",
|
||
|
|
"enum": [-32700, -32600, -32601, -32602, -32603]
|
||
|
|
},
|
||
|
|
"PluginWireErrorCode": {
|
||
|
|
"type": "integer",
|
||
|
|
"enum": [-32001, -32002, -32003, -32004, -32005, -32006, -32007, -32008, -32009, -32010, -32011, -32012, -32013, -32014, -32015, -32016]
|
||
|
|
},
|
||
|
|
"PluginErrorName": {
|
||
|
|
"type": "string",
|
||
|
|
"enum": [
|
||
|
|
"cancelled",
|
||
|
|
"unknown",
|
||
|
|
"deadline_exceeded",
|
||
|
|
"invalid_argument",
|
||
|
|
"not_found",
|
||
|
|
"already_exists",
|
||
|
|
"permission_denied",
|
||
|
|
"resource_exhausted",
|
||
|
|
"failed_precondition",
|
||
|
|
"aborted",
|
||
|
|
"out_of_range",
|
||
|
|
"unavailable",
|
||
|
|
"unsupported",
|
||
|
|
"internal",
|
||
|
|
"data_loss",
|
||
|
|
"unauthenticated"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"PluginErrorData": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["pluginCode"],
|
||
|
|
"properties": {
|
||
|
|
"pluginCode": { "$ref": "#/$defs/PluginErrorName" },
|
||
|
|
"details": { "$ref": "#/$defs/JsonValue" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"RpcErrorCode": {
|
||
|
|
"oneOf": [
|
||
|
|
{ "$ref": "#/$defs/JsonRpcStandardErrorCode" },
|
||
|
|
{ "$ref": "#/$defs/PluginWireErrorCode" }
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"RpcErrorObject": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["code", "message"],
|
||
|
|
"properties": {
|
||
|
|
"code": { "$ref": "#/$defs/RpcErrorCode" },
|
||
|
|
"message": { "type": "string", "minLength": 1, "maxLength": 2048 },
|
||
|
|
"data": { "$ref": "#/$defs/JsonValue" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"RpcFailure": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["jsonrpc", "id", "error"],
|
||
|
|
"properties": {
|
||
|
|
"jsonrpc": { "const": "2.0" },
|
||
|
|
"id": { "$ref": "#/$defs/NullableRpcId" },
|
||
|
|
"error": { "$ref": "#/$defs/RpcErrorObject" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"ProgressToken": {
|
||
|
|
"$ref": "#/$defs/RpcId"
|
||
|
|
},
|
||
|
|
"ProgressBegin": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["kind", "title"],
|
||
|
|
"properties": {
|
||
|
|
"kind": { "const": "begin" },
|
||
|
|
"title": { "type": "string", "minLength": 1, "maxLength": 256 },
|
||
|
|
"message": { "type": "string", "maxLength": 1024 },
|
||
|
|
"percentage": { "type": "number", "minimum": 0, "maximum": 100 },
|
||
|
|
"cancellable": { "type": "boolean" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"ProgressReport": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["kind"],
|
||
|
|
"properties": {
|
||
|
|
"kind": { "const": "report" },
|
||
|
|
"message": { "type": "string", "maxLength": 1024 },
|
||
|
|
"percentage": { "type": "number", "minimum": 0, "maximum": 100 },
|
||
|
|
"increment": { "type": "number", "minimum": 0, "maximum": 100 }
|
||
|
|
},
|
||
|
|
"not": {
|
||
|
|
"required": ["percentage", "increment"],
|
||
|
|
"properties": {
|
||
|
|
"percentage": true,
|
||
|
|
"increment": true
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"ProgressEnd": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["kind"],
|
||
|
|
"properties": {
|
||
|
|
"kind": { "const": "end" },
|
||
|
|
"message": { "type": "string", "maxLength": 1024 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"ProgressValue": {
|
||
|
|
"oneOf": [
|
||
|
|
{ "$ref": "#/$defs/ProgressBegin" },
|
||
|
|
{ "$ref": "#/$defs/ProgressReport" },
|
||
|
|
{ "$ref": "#/$defs/ProgressEnd" }
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"RpcProgressNotification": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["jsonrpc", "method", "params"],
|
||
|
|
"properties": {
|
||
|
|
"jsonrpc": { "const": "2.0" },
|
||
|
|
"method": { "const": "$/progress" },
|
||
|
|
"params": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["token", "value"],
|
||
|
|
"properties": {
|
||
|
|
"token": { "$ref": "#/$defs/ProgressToken" },
|
||
|
|
"value": { "$ref": "#/$defs/ProgressValue" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"RpcCancel": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["jsonrpc", "method", "params"],
|
||
|
|
"properties": {
|
||
|
|
"jsonrpc": { "const": "2.0" },
|
||
|
|
"method": { "const": "$/cancelRequest" },
|
||
|
|
"params": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["cancellationId"],
|
||
|
|
"properties": {
|
||
|
|
"cancellationId": { "type": "string", "minLength": 1, "maxLength": 128 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"StreamChunkData": {
|
||
|
|
"oneOf": [
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": ["encoding", "value", "byteLength"],
|
||
|
|
"properties": {
|
||
|
|
"encoding": { "const": "json" },
|
||
|
|
"value": { "$ref": "#/$defs/JsonValue" },
|
||
|
|
"byteLength": { "$ref": "#/$defs/StreamChunkByteLength" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": ["encoding", "value", "byteLength"],
|
||
|
|
"properties": {
|
||
|
|
"encoding": { "const": "base64" },
|
||
|
|
"value": {
|
||
|
|
"type": "string",
|
||
|
|
"maxLength": 22369624,
|
||
|
|
"contentEncoding": "base64"
|
||
|
|
},
|
||
|
|
"byteLength": { "$ref": "#/$defs/StreamChunkByteLength" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": ["encoding", "byteLength"],
|
||
|
|
"properties": {
|
||
|
|
"encoding": { "const": "transfer" },
|
||
|
|
"byteLength": { "$ref": "#/$defs/StreamChunkByteLength" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"StreamFrame": {
|
||
|
|
"oneOf": [
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": ["streamId", "sequence", "kind", "windowBytes"],
|
||
|
|
"properties": {
|
||
|
|
"streamId": { "$ref": "#/$defs/StreamId" },
|
||
|
|
"sequence": { "const": 0 },
|
||
|
|
"kind": { "const": "open" },
|
||
|
|
"windowBytes": { "$ref": "#/$defs/StreamWindowBytes" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": ["streamId", "sequence", "kind", "data"],
|
||
|
|
"properties": {
|
||
|
|
"streamId": { "$ref": "#/$defs/StreamId" },
|
||
|
|
"sequence": { "$ref": "#/$defs/SafePositiveInteger" },
|
||
|
|
"kind": { "const": "chunk" },
|
||
|
|
"data": { "$ref": "#/$defs/StreamChunkData" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": ["streamId", "sequence", "kind"],
|
||
|
|
"properties": {
|
||
|
|
"streamId": { "$ref": "#/$defs/StreamId" },
|
||
|
|
"sequence": { "$ref": "#/$defs/SafePositiveInteger" },
|
||
|
|
"kind": { "enum": ["end", "cancel"] }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": ["streamId", "sequence", "kind", "error"],
|
||
|
|
"properties": {
|
||
|
|
"streamId": { "$ref": "#/$defs/StreamId" },
|
||
|
|
"sequence": { "$ref": "#/$defs/SafePositiveInteger" },
|
||
|
|
"kind": { "const": "error" },
|
||
|
|
"error": { "$ref": "#/$defs/RpcErrorObject" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": ["streamId", "sequence", "kind", "creditBytes"],
|
||
|
|
"properties": {
|
||
|
|
"streamId": { "$ref": "#/$defs/StreamId" },
|
||
|
|
"sequence": { "$ref": "#/$defs/SafeUnsignedInteger" },
|
||
|
|
"kind": { "const": "windowUpdate" },
|
||
|
|
"creditBytes": { "$ref": "#/$defs/StreamCreditBytes" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"TerminalInterceptorDirection": {
|
||
|
|
"type": "string",
|
||
|
|
"enum": ["input", "output"]
|
||
|
|
},
|
||
|
|
"TerminalInterceptorChunkByteLength": {
|
||
|
|
"type": "integer",
|
||
|
|
"minimum": 0,
|
||
|
|
"maximum": 65536
|
||
|
|
},
|
||
|
|
"TerminalInterceptorWindowBytes": {
|
||
|
|
"type": "integer",
|
||
|
|
"minimum": 1,
|
||
|
|
"maximum": 262144
|
||
|
|
},
|
||
|
|
"TerminalInterceptorCreditBytes": {
|
||
|
|
"type": "integer",
|
||
|
|
"minimum": 0,
|
||
|
|
"maximum": 262144
|
||
|
|
},
|
||
|
|
"TerminalInterceptorReadyFrame": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["type", "sessionId", "direction", "windowBytes"],
|
||
|
|
"properties": {
|
||
|
|
"type": { "const": "netcatty:terminal-interceptor:ready" },
|
||
|
|
"sessionId": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[^\\u0000]+$" },
|
||
|
|
"direction": { "$ref": "#/$defs/TerminalInterceptorDirection" },
|
||
|
|
"windowBytes": { "$ref": "#/$defs/TerminalInterceptorWindowBytes" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"TerminalInterceptorChunkFrame": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["type", "sequence", "direction", "creditBytes", "byteLength"],
|
||
|
|
"properties": {
|
||
|
|
"type": { "const": "netcatty:terminal-interceptor:chunk" },
|
||
|
|
"sequence": { "$ref": "#/$defs/SafePositiveInteger" },
|
||
|
|
"direction": { "$ref": "#/$defs/TerminalInterceptorDirection" },
|
||
|
|
"creditBytes": { "$ref": "#/$defs/TerminalInterceptorCreditBytes" },
|
||
|
|
"byteLength": { "$ref": "#/$defs/TerminalInterceptorChunkByteLength" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"TerminalInterceptorOkResultFrame": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["type", "sequence", "status", "creditBytes", "byteLength"],
|
||
|
|
"properties": {
|
||
|
|
"type": { "const": "netcatty:terminal-interceptor:result" },
|
||
|
|
"sequence": { "$ref": "#/$defs/SafePositiveInteger" },
|
||
|
|
"status": { "const": "ok" },
|
||
|
|
"creditBytes": { "$ref": "#/$defs/TerminalInterceptorChunkByteLength" },
|
||
|
|
"byteLength": { "$ref": "#/$defs/TerminalInterceptorChunkByteLength" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"TerminalInterceptorFailedResultFrame": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["type", "sequence", "status"],
|
||
|
|
"properties": {
|
||
|
|
"type": { "const": "netcatty:terminal-interceptor:result" },
|
||
|
|
"sequence": { "$ref": "#/$defs/SafePositiveInteger" },
|
||
|
|
"status": { "const": "failed" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"TerminalInterceptorFrame": {
|
||
|
|
"oneOf": [
|
||
|
|
{ "$ref": "#/$defs/TerminalInterceptorReadyFrame" },
|
||
|
|
{ "$ref": "#/$defs/TerminalInterceptorChunkFrame" },
|
||
|
|
{ "$ref": "#/$defs/TerminalInterceptorOkResultFrame" },
|
||
|
|
{ "$ref": "#/$defs/TerminalInterceptorFailedResultFrame" }
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"RuntimeInitializeParams": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["netcattyVersion", "apiVersion", "supportedFeatures"],
|
||
|
|
"properties": {
|
||
|
|
"netcattyVersion": { "$ref": "#/$defs/SemanticVersion" },
|
||
|
|
"apiVersion": { "$ref": "#/$defs/SemanticVersion" },
|
||
|
|
"supportedFeatures": {
|
||
|
|
"type": "array",
|
||
|
|
"maxItems": 256,
|
||
|
|
"uniqueItems": true,
|
||
|
|
"items": { "$ref": "#/$defs/FeatureId" }
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"RuntimeInitializeResult": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["pluginId", "pluginVersion", "apiVersion", "enabledFeatures"],
|
||
|
|
"properties": {
|
||
|
|
"pluginId": { "$ref": "#/$defs/PluginId" },
|
||
|
|
"pluginVersion": { "$ref": "#/$defs/SemanticVersion" },
|
||
|
|
"apiVersion": { "$ref": "#/$defs/SemanticVersion" },
|
||
|
|
"enabledFeatures": {
|
||
|
|
"type": "array",
|
||
|
|
"maxItems": 256,
|
||
|
|
"uniqueItems": true,
|
||
|
|
"items": { "$ref": "#/$defs/FeatureId" }
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"RuntimeInitializeRequest": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["jsonrpc", "id", "method", "params"],
|
||
|
|
"properties": {
|
||
|
|
"jsonrpc": { "const": "2.0" },
|
||
|
|
"id": { "$ref": "#/$defs/RpcId" },
|
||
|
|
"method": { "const": "plugin.initialize" },
|
||
|
|
"params": { "$ref": "#/$defs/RuntimeInitializeParams" },
|
||
|
|
"deadlineMs": { "type": "integer", "minimum": 1, "maximum": 300000 },
|
||
|
|
"cancellationId": { "type": "string", "minLength": 1, "maxLength": 128 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"RuntimeInitializeSuccess": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["jsonrpc", "id", "result"],
|
||
|
|
"properties": {
|
||
|
|
"jsonrpc": { "const": "2.0" },
|
||
|
|
"id": { "$ref": "#/$defs/RpcId" },
|
||
|
|
"result": { "$ref": "#/$defs/RuntimeInitializeResult" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"TerminalSessionSnapshot": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["sessionId", "protocol", "status"],
|
||
|
|
"properties": {
|
||
|
|
"sessionId": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[^\\u0000]+$" },
|
||
|
|
"hostId": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[^\\u0000]+$" },
|
||
|
|
"workspaceId": { "type": "string", "minLength": 1, "maxLength": 256, "pattern": "^[^\\u0000]+$" },
|
||
|
|
"protocol": {
|
||
|
|
"type": "string",
|
||
|
|
"minLength": 1,
|
||
|
|
"maxLength": 256,
|
||
|
|
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
|
||
|
|
},
|
||
|
|
"status": { "type": "string", "enum": ["connecting", "connected", "disconnected"] },
|
||
|
|
"cwd": { "type": "string", "minLength": 1, "maxLength": 4096, "pattern": "^[^\\u0000]+$" },
|
||
|
|
"title": { "type": "string", "minLength": 1, "maxLength": 1024, "pattern": "^[^\\u0000]+$" },
|
||
|
|
"shellType": { "type": "string", "enum": ["posix", "fish", "powershell", "cmd", "unknown"] },
|
||
|
|
"cols": { "type": "integer", "minimum": 1, "maximum": 16384 },
|
||
|
|
"rows": { "type": "integer", "minimum": 1, "maximum": 16384 },
|
||
|
|
"alternateScreen": { "type": "boolean" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"TerminalInterceptorAttachmentDescriptor": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["providerId", "direction", "session"],
|
||
|
|
"properties": {
|
||
|
|
"providerId": { "$ref": "#/$defs/ContributionId" },
|
||
|
|
"direction": { "type": "string", "enum": ["input", "output"] },
|
||
|
|
"session": { "$ref": "#/$defs/TerminalSessionSnapshot" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"TerminalInterceptorAttachmentParams": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["descriptor"],
|
||
|
|
"properties": {
|
||
|
|
"descriptor": { "$ref": "#/$defs/TerminalInterceptorAttachmentDescriptor" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"TerminalInterceptorAttachmentResult": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["accepted"],
|
||
|
|
"properties": {
|
||
|
|
"accepted": { "const": true }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"TerminalInterceptorAttachmentRequest": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["jsonrpc", "id", "method", "params"],
|
||
|
|
"properties": {
|
||
|
|
"jsonrpc": { "const": "2.0" },
|
||
|
|
"id": { "$ref": "#/$defs/RpcId" },
|
||
|
|
"method": { "const": "plugin.terminal.interceptor.attach" },
|
||
|
|
"params": { "$ref": "#/$defs/TerminalInterceptorAttachmentParams" },
|
||
|
|
"deadlineMs": { "type": "integer", "minimum": 1, "maximum": 300000 },
|
||
|
|
"cancellationId": { "type": "string", "minLength": 1, "maxLength": 128 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"TerminalInterceptorAttachmentSuccess": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["jsonrpc", "id", "result"],
|
||
|
|
"properties": {
|
||
|
|
"jsonrpc": { "const": "2.0" },
|
||
|
|
"id": { "$ref": "#/$defs/RpcId" },
|
||
|
|
"result": { "$ref": "#/$defs/TerminalInterceptorAttachmentResult" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"RpcMessage": {
|
||
|
|
"description": "A mutually exclusive RPC wire envelope. Reserved inbound methods use their exact schemas. Successful responses require method-specific validation through request correlation.",
|
||
|
|
"oneOf": [
|
||
|
|
{ "$ref": "#/$defs/RpcRequest" },
|
||
|
|
{ "$ref": "#/$defs/RpcNotification" },
|
||
|
|
{ "$ref": "#/$defs/RpcSuccess" },
|
||
|
|
{ "$ref": "#/$defs/RpcFailure" },
|
||
|
|
{ "$ref": "#/$defs/RpcCancel" },
|
||
|
|
{ "$ref": "#/$defs/RpcProgressNotification" },
|
||
|
|
{ "$ref": "#/$defs/RuntimeInitializeRequest" },
|
||
|
|
{ "$ref": "#/$defs/TerminalInterceptorAttachmentRequest" }
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"PermissionGrantScope": {
|
||
|
|
"type": "string",
|
||
|
|
"enum": ["once", "session", "application", "always"]
|
||
|
|
},
|
||
|
|
"PermissionRequest": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["requestId", "pluginId", "permission", "reason"],
|
||
|
|
"properties": {
|
||
|
|
"requestId": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"pluginId": { "$ref": "#/$defs/PluginId" },
|
||
|
|
"pluginVersion": { "$ref": "#/$defs/SemanticVersion" },
|
||
|
|
"pluginName": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"publisher": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"runtimeId": { "type": ["string", "null"], "minLength": 1, "maxLength": 128 },
|
||
|
|
"runtimeKind": { "type": ["string", "null"], "enum": ["browser", "utility", null] },
|
||
|
|
"permission": { "$ref": "#/$defs/PluginPermission" },
|
||
|
|
"resources": {
|
||
|
|
"type": "array",
|
||
|
|
"maxItems": 128,
|
||
|
|
"uniqueItems": true,
|
||
|
|
"items": { "$ref": "#/$defs/PermissionResource" }
|
||
|
|
},
|
||
|
|
"resourceKinds": {
|
||
|
|
"type": "array",
|
||
|
|
"maxItems": 128,
|
||
|
|
"items": { "$ref": "#/$defs/PermissionResourceKind" }
|
||
|
|
},
|
||
|
|
"reason": { "type": "string", "minLength": 1, "maxLength": 1024 },
|
||
|
|
"operationId": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"sessionId": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"allowedScopes": {
|
||
|
|
"type": "array",
|
||
|
|
"minItems": 1,
|
||
|
|
"maxItems": 4,
|
||
|
|
"uniqueItems": true,
|
||
|
|
"items": { "$ref": "#/$defs/PermissionGrantScope" }
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"PermissionDecision": {
|
||
|
|
"oneOf": [
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": ["requestId", "decision", "scope"],
|
||
|
|
"properties": {
|
||
|
|
"requestId": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"decision": { "const": "allow" },
|
||
|
|
"scope": { "$ref": "#/$defs/PermissionGrantScope" },
|
||
|
|
"resources": {
|
||
|
|
"type": "array",
|
||
|
|
"maxItems": 128,
|
||
|
|
"uniqueItems": true,
|
||
|
|
"items": { "$ref": "#/$defs/PermissionResource" }
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": ["requestId", "decision"],
|
||
|
|
"properties": {
|
||
|
|
"requestId": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"decision": { "enum": ["deny", "cancel"] }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"ProviderRequest": {
|
||
|
|
"type": "object",
|
||
|
|
"required": ["providerId", "operation", "requestId"],
|
||
|
|
"properties": {
|
||
|
|
"providerId": { "$ref": "#/$defs/ContributionId" },
|
||
|
|
"operation": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"requestId": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"payload": { "$ref": "#/$defs/JsonValue" },
|
||
|
|
"deadlineMs": { "type": "integer", "minimum": 1, "maximum": 300000 },
|
||
|
|
"cancellationId": { "type": "string", "minLength": 1, "maxLength": 128 }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
"ProviderResult": {
|
||
|
|
"oneOf": [
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": ["requestId", "status", "result"],
|
||
|
|
"properties": {
|
||
|
|
"requestId": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"status": { "const": "ok" },
|
||
|
|
"result": { "$ref": "#/$defs/JsonValue" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": ["requestId", "status"],
|
||
|
|
"properties": {
|
||
|
|
"requestId": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"status": { "const": "cancelled" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"type": "object",
|
||
|
|
"required": ["requestId", "status", "error"],
|
||
|
|
"properties": {
|
||
|
|
"requestId": { "type": "string", "minLength": 1, "maxLength": 128 },
|
||
|
|
"status": { "const": "failed" },
|
||
|
|
"error": { "$ref": "#/$defs/RpcErrorObject" }
|
||
|
|
},
|
||
|
|
"additionalProperties": false
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|