{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://netcatty.com/schemas/plugins/0.1.0-internal.1/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 '.' 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:.", "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 }, "HostVaultFeature": { "const": "vault.host-actions" }, "VaultHostRef": { "type": "object", "required": [ "kind", "scope", "handle", "revision", "expiresAt" ], "properties": { "kind": { "const": "host.selection" }, "scope": { "const": "metadata" }, "handle": { "type": "string", "minLength": 32, "maxLength": 256 }, "revision": { "type": "string", "maxLength": 128, "pattern": "^[^\\u0000-\\u001f\\u007f]*$", "minLength": 1 }, "expiresAt": { "$ref": "#/$defs/SafePositiveInteger" } }, "additionalProperties": false, "description": "Host-signed source/runtime/window-bound metadata selection. Identifies an exact saved host and revision; edit and connect require separate host confirmation and one-use action authority. AI text handles are not Host targets." }, "VaultHostMetadata": { "type": "object", "required": [ "label", "hostname", "username", "group", "tags", "protocol" ], "properties": { "label": { "type": "string", "minLength": 1, "maxLength": 512 }, "hostname": { "type": "string", "minLength": 1, "maxLength": 1024 }, "username": { "type": "string", "maxLength": 512 }, "port": { "type": "integer", "minimum": 1, "maximum": 65535 }, "group": { "type": "string", "minLength": 0, "maxLength": 512 }, "tags": { "type": "array", "maxItems": 128, "uniqueItems": true, "items": { "type": "string", "minLength": 1, "maxLength": 256 } }, "protocol": { "type": "string", "maxLength": 199, "pattern": "^[^\\u0000-\\u001f\\u007f]*$", "minLength": 1 } }, "additionalProperties": false }, "VaultHostCreateFields": { "type": "object", "required": [ "hostname" ], "properties": { "label": { "type": "string", "minLength": 1, "maxLength": 512 }, "hostname": { "type": "string", "minLength": 1, "maxLength": 1024 }, "username": { "type": "string", "maxLength": 512 }, "port": { "type": "integer", "minimum": 1, "maximum": 65535 }, "group": { "type": "string", "minLength": 0, "maxLength": 512 }, "tags": { "type": "array", "maxItems": 128, "uniqueItems": true, "items": { "type": "string", "minLength": 1, "maxLength": 256 } } }, "additionalProperties": false }, "VaultHostEditFields": { "type": "object", "required": [], "properties": { "label": { "type": "string", "minLength": 1, "maxLength": 512 }, "group": { "type": "string", "minLength": 0, "maxLength": 512 }, "tags": { "type": "array", "maxItems": 128, "uniqueItems": true, "items": { "type": "string", "minLength": 1, "maxLength": 256 } } }, "additionalProperties": false, "minProperties": 1 }, "VaultSelectHostsParams": { "type": "object", "required": [ "title" ], "properties": { "title": { "type": "string", "maxLength": 128, "pattern": "^[^\\u0000-\\u001f\\u007f]*$", "minLength": 1 } }, "additionalProperties": false }, "VaultHostDraftParams": { "oneOf": [ { "type": "object", "required": [ "draft" ], "properties": { "draft": { "$ref": "#/$defs/VaultHostCreateFields" } }, "additionalProperties": false }, { "type": "object", "required": [ "target", "expectedRevision", "draft" ], "properties": { "target": { "$ref": "#/$defs/VaultHostRef" }, "expectedRevision": { "type": "string", "maxLength": 128, "pattern": "^[^\\u0000-\\u001f\\u007f]*$", "minLength": 1 }, "draft": { "$ref": "#/$defs/VaultHostEditFields" } }, "additionalProperties": false } ] }, "VaultHostConnectParams": { "type": "object", "required": [ "target", "expectedRevision" ], "properties": { "target": { "$ref": "#/$defs/VaultHostRef" }, "expectedRevision": { "type": "string", "maxLength": 128, "pattern": "^[^\\u0000-\\u001f\\u007f]*$", "minLength": 1 } }, "additionalProperties": false }, "VaultHostActionRequest": { "oneOf": [ { "type": "object", "required": [ "kind", "title" ], "properties": { "kind": { "const": "vault.selectHosts" }, "title": { "type": "string", "maxLength": 128, "pattern": "^[^\\u0000-\\u001f\\u007f]*$", "minLength": 1 } }, "additionalProperties": false }, { "type": "object", "required": [ "kind", "draft" ], "properties": { "kind": { "const": "vault.requestHostDraft" }, "draft": { "$ref": "#/$defs/VaultHostCreateFields" } }, "additionalProperties": false }, { "type": "object", "required": [ "kind", "target", "expectedRevision", "draft" ], "properties": { "kind": { "const": "vault.requestHostDraft" }, "target": { "$ref": "#/$defs/VaultHostRef" }, "expectedRevision": { "type": "string", "maxLength": 128, "pattern": "^[^\\u0000-\\u001f\\u007f]*$", "minLength": 1 }, "draft": { "$ref": "#/$defs/VaultHostEditFields" } }, "additionalProperties": false }, { "type": "object", "required": [ "kind", "target", "expectedRevision" ], "properties": { "kind": { "const": "vault.requestConnect" }, "target": { "$ref": "#/$defs/VaultHostRef" }, "expectedRevision": { "type": "string", "maxLength": 128, "pattern": "^[^\\u0000-\\u001f\\u007f]*$", "minLength": 1 } }, "additionalProperties": false } ] }, "VaultHostSelectedResources": { "description": "Trusted host-renderer reply only. Never accepted from a plugin request.", "type": "array", "maxItems": 50, "items": { "type": "object", "required": [ "resourceId", "revision", "label", "hostname", "username", "group", "tags", "protocol" ], "properties": { "resourceId": { "type": "string", "maxLength": 256, "pattern": "^[^\\u0000-\\u001f\\u007f]*$", "minLength": 1 }, "revision": { "type": "string", "maxLength": 128, "pattern": "^[^\\u0000-\\u001f\\u007f]*$", "minLength": 1 }, "label": { "type": "string", "minLength": 1, "maxLength": 512 }, "hostname": { "type": "string", "minLength": 1, "maxLength": 1024 }, "username": { "type": "string", "maxLength": 512 }, "port": { "type": "integer", "minimum": 1, "maximum": 65535 }, "group": { "type": "string", "minLength": 0, "maxLength": 512 }, "tags": { "type": "array", "maxItems": 128, "uniqueItems": true, "items": { "type": "string", "minLength": 1, "maxLength": 256 } }, "protocol": { "type": "string", "maxLength": 199, "pattern": "^[^\\u0000-\\u001f\\u007f]*$", "minLength": 1 } }, "additionalProperties": false } }, "VaultHostSelectedResult": { "type": "object", "required": [ "cancelled", "hosts", "groups" ], "properties": { "cancelled": { "const": false }, "hosts": { "type": "array", "maxItems": 50, "items": { "type": "object", "required": [ "target", "metadata" ], "properties": { "target": { "$ref": "#/$defs/VaultHostRef" }, "metadata": { "$ref": "#/$defs/VaultHostMetadata" } }, "additionalProperties": false } }, "groups": { "type": "array", "maxItems": 50, "items": { "type": "object", "required": [ "path", "members" ], "properties": { "path": { "type": "string", "maxLength": 512, "pattern": "^[^\\u0000-\\u001f\\u007f]*$", "minLength": 1 }, "members": { "type": "array", "maxItems": 50, "items": { "$ref": "#/$defs/VaultHostRef" } } }, "additionalProperties": false } } }, "additionalProperties": false }, "VaultHostSelectionResult": { "oneOf": [ { "type": "object", "required": [ "cancelled" ], "properties": { "cancelled": { "const": true } }, "additionalProperties": false }, { "$ref": "#/$defs/VaultHostSelectedResult" } ] }, "VaultHostActionAccepted": { "type": "object", "required": [ "cancelled", "status" ], "properties": { "cancelled": { "const": false }, "status": { "enum": [ "saved", "requested" ] } }, "additionalProperties": false }, "VaultHostActionResult": { "oneOf": [ { "type": "object", "required": [ "cancelled" ], "properties": { "cancelled": { "const": true } }, "additionalProperties": false }, { "$ref": "#/$defs/VaultHostActionAccepted" } ] }, "VaultHostLocalTarget": { "description": "Trusted host renderer target only; resource IDs never cross the plugin API.", "type": "object", "required": [ "resourceId", "revision" ], "properties": { "resourceId": { "type": "string", "maxLength": 256, "pattern": "^[^\\u0000-\\u001f\\u007f]*$", "minLength": 1 }, "revision": { "type": "string", "maxLength": 128, "pattern": "^[^\\u0000-\\u001f\\u007f]*$", "minLength": 1 } }, "additionalProperties": false }, "HostInteractionReceipt": { "oneOf": [ { "type": "boolean" }, { "type": "object", "required": [ "completionToken" ], "properties": { "completionToken": { "type": "string", "minLength": 32, "maxLength": 256 } }, "additionalProperties": false } ] }, "HostInteractionLimits": { "const": { "textBytes": 4096, "requestBytes": 65536, "items": 100, "pendingPerRuntime": 1, "pendingTotal": 8, "requestsPerMinute": 10, "timeoutMs": 60000 } }, "HostInteractionFeature": { "const": "host.interactions" }, "InteractiveCommandFeature": { "const": "commands.interactive" }, "InteractiveCommandLimits": { "const": { "timeoutMs": 180000 } }, "HostQuickPickItem": { "type": "object", "required": [ "id", "label" ], "properties": { "id": { "type": "string", "minLength": 1, "maxLength": 128 }, "label": { "type": "string", "minLength": 1, "maxLength": 512 }, "description": { "type": "string", "maxLength": 512 } }, "additionalProperties": false }, "HostQuickPickRequest": { "type": "object", "required": [ "kind", "title", "items" ], "properties": { "kind": { "const": "quickPick" }, "title": { "type": "string", "minLength": 1, "maxLength": 128, "pattern": "^[^\\u0000-\\u001f\\u007f]*$" }, "items": { "type": "array", "minItems": 1, "maxItems": 100, "items": { "$ref": "#/$defs/HostQuickPickItem" } } }, "additionalProperties": false }, "HostSingleLineInputText": { "description": "Single-line host input. CR and LF are rejected before display and on submission; clipboard text remains multiline.", "type": "string", "maxLength": 4096, "pattern": "^[^\\u0000\\r\\n]*$" }, "HostInputRequest": { "type": "object", "required": [ "kind", "title" ], "properties": { "kind": { "const": "input" }, "title": { "type": "string", "minLength": 1, "maxLength": 128, "pattern": "^[^\\u0000-\\u001f\\u007f]*$" }, "initialValue": { "$ref": "#/$defs/HostSingleLineInputText" } }, "additionalProperties": false }, "HostClipboardReadRequest": { "type": "object", "required": [ "kind", "title" ], "properties": { "kind": { "const": "clipboard.read" }, "title": { "type": "string", "minLength": 1, "maxLength": 128, "pattern": "^[^\\u0000-\\u001f\\u007f]*$" } }, "additionalProperties": false }, "HostClipboardWriteRequest": { "type": "object", "required": [ "kind", "title", "text" ], "properties": { "kind": { "const": "clipboard.write" }, "title": { "type": "string", "minLength": 1, "maxLength": 128, "pattern": "^[^\\u0000-\\u001f\\u007f]*$" }, "text": { "type": "string", "maxLength": 4096, "pattern": "^[^\\u0000]*$" } }, "additionalProperties": false }, "HostInteractionRequest": { "oneOf": [ { "$ref": "#/$defs/HostQuickPickRequest" }, { "$ref": "#/$defs/HostInputRequest" }, { "$ref": "#/$defs/HostClipboardReadRequest" }, { "$ref": "#/$defs/HostClipboardWriteRequest" }, { "$ref": "#/$defs/HostTerminalSelectionReadRequest" }, { "$ref": "#/$defs/HostTerminalInputProposalRequest" } ] }, "HostInteractionResult": { "oneOf": [ { "type": "object", "required": [ "cancelled" ], "properties": { "cancelled": { "const": true } }, "additionalProperties": false }, { "type": "object", "required": [ "cancelled", "value" ], "properties": { "cancelled": { "const": false }, "value": { "oneOf": [ { "type": "string", "maxLength": 4096, "pattern": "^[^\\u0000]*$" }, { "const": true }, { "$ref": "#/$defs/SharedTerminalSelection" } ] } }, "additionalProperties": false }, { "$ref": "#/$defs/VaultHostSelectedResult" }, { "$ref": "#/$defs/VaultHostActionAccepted" } ] }, "HostInteractionResponse": { "type": "object", "required": [ "requestId", "actionToken", "action" ], "properties": { "requestId": { "type": "string", "minLength": 1, "maxLength": 128 }, "actionToken": { "type": "string", "minLength": 32, "maxLength": 256 }, "action": { "enum": [ "cancel", "preview", "submit", "commit", "complete", "fail" ] }, "value": { "type": "string", "maxLength": 4096, "pattern": "^[^\\u0000]*$" }, "resources": { "$ref": "#/$defs/VaultHostSelectedResources" }, "draft": { "oneOf": [ { "$ref": "#/$defs/VaultHostCreateFields" }, { "$ref": "#/$defs/VaultHostEditFields" } ] }, "scriptsRun": { "type": "boolean" } }, "additionalProperties": false }, "HostInteractionClosed": { "type": "object", "required": [ "requestId", "closed" ], "properties": { "requestId": { "type": "string", "maxLength": 128 }, "closed": { "const": true } }, "additionalProperties": false }, "HostInteractionEvent": { "oneOf": [ { "$ref": "#/$defs/HostInteractionPrompt" }, { "$ref": "#/$defs/HostInteractionClosed" } ] }, "HostInteractionPrompt": { "type": "object", "required": [ "requestId", "actionToken", "pluginId", "pluginVersion", "expiresAt", "phase", "request" ], "properties": { "permissionMode": { "enum": ["allow", "ask", "deny"] }, "requestId": { "type": "string", "maxLength": 128 }, "actionToken": { "type": "string", "maxLength": 256 }, "pluginId": { "$ref": "#/$defs/PluginId" }, "pluginVersion": { "$ref": "#/$defs/SemanticVersion" }, "expiresAt": { "$ref": "#/$defs/SafePositiveInteger" }, "phase": { "enum": [ "request", "preview", "commit" ] }, "request": { "oneOf": [ { "$ref": "#/$defs/HostInteractionRequest" }, { "$ref": "#/$defs/VaultHostActionRequest" } ] }, "previewText": { "type": "string", "maxLength": 4096, "pattern": "^[^\\u0000]*$" }, "terminalSessionId": { "type": "string", "maxLength": 128, "pattern": "^[A-Za-z0-9_-]+$" }, "terminalRendererId": { "type": "string", "minLength": 1, "maxLength": 128 }, "terminalLabel": { "type": "string", "minLength": 1, "maxLength": 160 }, "vaultTarget": { "$ref": "#/$defs/VaultHostLocalTarget" }, "reviewedDraft": { "oneOf": [ { "$ref": "#/$defs/VaultHostCreateFields" }, { "$ref": "#/$defs/VaultHostEditFields" } ] } }, "additionalProperties": false }, "PluginAIModelInvocationFeature": { "const": "ai.model-invocation" }, "PluginSelectedContextFeature": { "const": "context.selected-read" }, "PluginAIContextLimits": { "const": { "contexts": 4, "inputBytes": 16384, "chunkBytes": 4096, "outputBytes": 32768, "outputTokens": 2048, "turnMs": 60000 } }, "PluginAIEmptyParams": { "type": "object", "required": [], "properties": {}, "additionalProperties": false }, "PluginAIChatRef": { "type": "object", "required": [ "chatHandle" ], "properties": { "chatHandle": { "type": "string", "format": "uuid" } }, "additionalProperties": false }, "PluginAITurnRef": { "type": "object", "required": [ "turnHandle" ], "properties": { "turnHandle": { "type": "string", "format": "uuid" } }, "additionalProperties": false }, "PluginSelectedContextRef": { "type": "object", "required": [ "handle", "version" ], "properties": { "handle": { "type": "string", "format": "uuid" }, "version": { "type": "string", "minLength": 1, "maxLength": 128, "pattern": "^[^\\u0000]*$" } }, "additionalProperties": false }, "PluginSelectedContextSummary": { "type": "object", "required": [ "handle", "scope", "title", "version", "expiresAt" ], "properties": { "handle": { "type": "string", "format": "uuid" }, "scope": { "enum": [ "workspace", "tab", "session", "host", "note" ] }, "title": { "type": "string", "minLength": 0, "maxLength": 160, "pattern": "^[^\\u0000]*$" }, "version": { "type": "string", "minLength": 1, "maxLength": 128, "pattern": "^[^\\u0000]*$" }, "expiresAt": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 } }, "additionalProperties": false }, "PluginSelectedContextContent": { "type": "object", "required": [ "handle", "scope", "title", "version", "expiresAt", "text" ], "properties": { "handle": { "type": "string", "format": "uuid" }, "scope": { "enum": [ "workspace", "tab", "session", "host", "note" ] }, "title": { "type": "string", "minLength": 0, "maxLength": 160, "pattern": "^[^\\u0000]*$" }, "version": { "type": "string", "minLength": 1, "maxLength": 128, "pattern": "^[^\\u0000]*$" }, "expiresAt": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "text": { "type": "string", "minLength": 0, "maxLength": 16384, "pattern": "^[^\\u0000]*$" } }, "additionalProperties": false }, "PluginSelectedContextListResult": { "type": "object", "required": [ "items" ], "properties": { "items": { "type": "array", "maxItems": 5, "items": { "$ref": "#/$defs/PluginSelectedContextSummary" } } }, "additionalProperties": false }, "PluginAIChatResult": { "type": "object", "required": [ "chatHandle", "model", "expiresAt" ], "properties": { "chatHandle": { "type": "string", "format": "uuid" }, "model": { "type": "string", "minLength": 0, "maxLength": 160, "pattern": "^[^\\u0000]*$" }, "expiresAt": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 } }, "additionalProperties": false }, "PluginAIStartTurnParams": { "type": "object", "required": [ "chatHandle", "prompt" ], "properties": { "chatHandle": { "type": "string", "format": "uuid" }, "prompt": { "type": "string", "minLength": 1, "maxLength": 16384, "pattern": "^[^\\u0000]*$" }, "contexts": { "type": "array", "maxItems": 4, "items": { "$ref": "#/$defs/PluginSelectedContextRef" } } }, "additionalProperties": false }, "PluginAITurnResult": { "type": "object", "required": [ "turnHandle", "maxOutputTokens", "reservedTokens" ], "properties": { "turnHandle": { "type": "string", "format": "uuid" }, "maxOutputTokens": { "const": 2048 }, "reservedTokens": { "type": "integer", "minimum": 1, "maximum": 19456 } }, "additionalProperties": false }, "PluginAIBooleanResult": { "type": "object", "required": [ "ok" ], "properties": { "ok": { "type": "boolean" } }, "additionalProperties": false }, "PluginAIStreamEvent": { "oneOf": [ { "type": "object", "required": [ "kind", "sequence", "text" ], "properties": { "kind": { "const": "text" }, "sequence": { "type": "integer", "minimum": 0, "maximum": 8192 }, "text": { "type": "string", "minLength": 0, "maxLength": 4096, "pattern": "^[^\\u0000]*$" } }, "additionalProperties": false }, { "type": "object", "required": [ "kind", "sequence" ], "properties": { "kind": { "const": "usage" }, "sequence": { "type": "integer", "minimum": 0, "maximum": 8192 }, "inputTokens": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "outputTokens": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "totalTokens": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 } }, "additionalProperties": false }, { "type": "object", "required": [ "kind", "sequence" ], "properties": { "kind": { "const": "end" }, "sequence": { "type": "integer", "minimum": 0, "maximum": 8192 } }, "additionalProperties": false } ] }, "ByteStreamFeature": { "const": "network.byte-streams" }, "ByteStreamLimits": { "const": { "connectionsPerRuntime": 4, "connectionsTotal": 64, "chunkBytes": 65536, "bufferBytes": 65536, "connectionBytes": 8388608, "connectMs": 10000, "idleMs": 30000, "lifetimeMs": 120000 } }, "ByteStreamEndpoint": { "description": "An exact outgoing TCP or TLS endpoint. No userinfo, path, wildcard, query, or implicit port. The host further canonicalizes and checks DNS and control addresses.", "type": "string", "minLength": 9, "maxLength": 512, "pattern": "^(tcp|tls)://(\\[[0-9A-Fa-f:.]+\\]|[A-Za-z0-9.-]+):[1-9][0-9]{0,4}$" }, "ByteStreamConnectRequest": { "type": "object", "required": [ "endpoint" ], "properties": { "endpoint": { "$ref": "#/$defs/ByteStreamEndpoint" } }, "additionalProperties": false }, "ByteStreamHandleRequest": { "type": "object", "required": [ "handleId" ], "properties": { "handleId": { "type": "string", "format": "uuid" } }, "additionalProperties": false }, "ByteStreamConnectionDescriptor": { "type": "object", "required": [ "handleId", "endpoint", "inputStreamId", "outputStreamId", "windowBytes" ], "properties": { "handleId": { "type": "string", "format": "uuid" }, "endpoint": { "$ref": "#/$defs/ByteStreamEndpoint" }, "inputStreamId": { "$ref": "#/$defs/StreamId" }, "outputStreamId": { "$ref": "#/$defs/StreamId" }, "windowBytes": { "const": 65536 } }, "additionalProperties": false }, "ByteStreamAttachResult": { "type": "object", "required": [ "attached" ], "properties": { "attached": { "const": true } }, "additionalProperties": false }, "NetworkCredentialLeaseFeature": { "const": "network.credential-lease" }, "PluginNetworkAuthorization": { "type": "object", "properties": { "scheme": { "type": "string", "enum": [ "Basic", "Bearer" ] }, "username": { "type": "string", "maxLength": 8192, "pattern": "^[^\\u0000-\\u001f\\u007f]*$" } }, "additionalProperties": false }, "PluginNetworkRequest": { "description": "Origin-authorized HTTP request. The host consumes a one-use credentialLease for network:; plaintext credentials never return to the plugin.", "type": "object", "required": [ "url" ], "properties": { "url": { "type": "string", "minLength": 1, "maxLength": 8192 }, "method": { "type": "string", "enum": [ "GET", "POST", "PUT", "PATCH", "DELETE", "HEAD" ] }, "headers": { "type": "object", "maxProperties": 64, "additionalProperties": { "type": "string", "maxLength": 8192 } }, "body": { "type": "object", "required": [ "encoding", "data" ], "properties": { "encoding": { "enum": [ "utf8", "base64" ] }, "data": { "type": "string" } }, "additionalProperties": false }, "timeoutMs": { "type": "integer", "minimum": 1, "maximum": 300000 }, "credentialLease": { "$ref": "#/$defs/SecretLeaseRef" }, "authorization": { "$ref": "#/$defs/PluginNetworkAuthorization" } }, "additionalProperties": false }, "PluginNetworkResponse": { "type": "object", "required": [ "url", "status", "headers", "body" ], "properties": { "url": { "type": "string" }, "status": { "type": "integer" }, "headers": { "type": "object", "additionalProperties": { "type": "string" } }, "body": { "type": "object", "required": [ "encoding", "data" ], "properties": { "encoding": { "const": "base64" }, "data": { "type": "string" } }, "additionalProperties": false } }, "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", "ai.invoke", "context.selected.list", "context.selected.read", "runtime.advanced", "settings.read", "settings.write", "commands", "menus", "views", "ui.interact", "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", "network.stream", "filesystem.read", "filesystem.write", "secrets", "companion.execute", "provider.terminal", "provider.connection", "provider.authentication", "provider.sync", "provider.importer", "terminal.selection.read", "terminal.input.propose" ] }, "NonResourceScopedPermission": { "description": "A permission whose complete activation-time scope is represented by the permission name itself.", "type": "string", "enum": [ "storage", "ai.invoke", "context.selected.list", "context.selected.read", "runtime.advanced", "settings.read", "settings.write", "commands", "menus", "views", "ui.interact", "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", "terminal.selection.read", "terminal.input.propose" ] }, "ResourceScopedPermission": { "description": "A permission whose approval must be constrained to explicit canonical resources.", "type": "string", "enum": [ "network", "network.stream", "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 } }, "if": { "properties": { "permission": { "const": "network.stream" } } }, "then": { "properties": { "resources": { "type": "array", "items": { "$ref": "#/$defs/ByteStreamEndpoint" } } } }, "additionalProperties": false }, "PermissionDeclaration": { "oneOf": [ { "$ref": "#/$defs/PluginPermission", "not": { "const": "network.stream" } }, { "$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 } }, "if": { "properties": { "permission": { "const": "network.stream" } } }, "then": { "properties": { "resources": { "type": "array", "items": { "$ref": "#/$defs/ByteStreamEndpoint" } } } }, "additionalProperties": false }, "RequiredPermissionDeclaration": { "description": "Required resource-scoped permissions must name their complete activation-time approval bounds.", "oneOf": [ { "$ref": "#/$defs/NonResourceScopedPermission" }, { "$ref": "#/$defs/RequiredPermissionResourceDeclaration" } ], "not": { "enum": [ "terminal.selection.read", "terminal.input.propose" ] } }, "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" }, "data": { "const": "theme" } }, "minProperties": 1, "additionalProperties": false, "if": { "required": [ "data" ], "type": "object", "properties": { "data": { "const": "theme" } } }, "then": { "maxProperties": 1 } }, "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" }, "interactive": { "type": "boolean", "default": false, "description": "Require commands.interactive for this command's fixed bounded host interaction budget. Does not grant UI or clipboard permissions." } }, "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", "vault-page", "terminal-sidebar"] }, "VaultPagesFeature": { "const": "views.vault-pages" }, "TerminalSidebarFeature": { "const": "views.terminal-sidebar" }, "PluginViewFocusEvent": { "type": "object", "required": ["instanceId"], "properties": { "instanceId": { "type": "string", "minLength": 1, "maxLength": 128 } }, "additionalProperties": false }, "PluginViewFocusRequest": { "$ref": "#/$defs/PluginViewFocusEvent" }, "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": { "themes": { "type": "array", "maxItems": 32, "items": { "$ref": "#/$defs/ThemePackContribution" }, "minItems": 1 }, "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 }, "icon": { "$ref": "#/$defs/IconReference" }, "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, "if": { "properties": { "main": { "required": [ "data" ], "type": "object", "properties": { "data": { "const": "theme" } } } } }, "then": { "properties": { "contributes": { "required": [ "themes" ], "maxProperties": 1, "type": "object", "properties": { "themes": true } }, "permissions": { "maxProperties": 0, "type": "object" }, "activationEvents": { "maxItems": 0, "type": "array" }, "companionExecutables": { "maxItems": 0, "type": "array" } }, "required": [ "contributes" ] } }, "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" } }, "displayContext": { "type": "object", "additionalProperties": false, "properties": { "modelLabel": { "type": "string", "minLength": 1, "maxLength": 160 }, "selections": { "type": "array", "maxItems": 5, "items": { "type": "object", "required": ["title", "scope", "version"], "additionalProperties": false, "properties": { "title": { "type": "string", "maxLength": 160 }, "scope": { "enum": ["workspace", "tab", "session", "host", "note"] }, "version": { "type": "string", "minLength": 1, "maxLength": 128 } } } } } }, "relatedPermissions": { "type": "array", "maxItems": 5, "items": { "type": "object", "required": ["permission", "resources"], "properties": { "permission": { "$ref": "#/$defs/PluginPermission" }, "resources": { "type": "array", "minItems": 1, "maxItems": 128, "uniqueItems": true, "items": { "$ref": "#/$defs/PermissionResource" } } }, "additionalProperties": false } }, "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 } ] }, "ThemePackFeature": { "const": "appearance.theme-packs" }, "ThemePackLimits": { "const": { "jsonBytes": 65536, "catalogEntries": 256, "themesPerPackage": 32 } }, "ThemePackVariant": { "type": "string", "enum": [ "light", "dark" ] }, "ThemePackContribution": { "type": "object", "properties": { "id": { "$ref": "#/$defs/ContributionId" }, "label": { "$ref": "#/$defs/LocalizedText" }, "variant": { "$ref": "#/$defs/ThemePackVariant" }, "entry": { "$ref": "#/$defs/RelativePackagePath" } }, "additionalProperties": false, "required": [ "id", "label", "variant", "entry" ] }, "ThemePackColors": { "type": "object", "properties": { "background": { "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" }, "foreground": { "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" }, "card": { "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" }, "cardForeground": { "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" }, "popover": { "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" }, "popoverForeground": { "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" }, "secondary": { "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" }, "secondaryForeground": { "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" }, "muted": { "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" }, "mutedForeground": { "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" }, "accent": { "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" }, "destructive": { "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" }, "destructiveForeground": { "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" }, "border": { "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" }, "input": { "type": "string", "pattern": "^#[0-9A-Fa-f]{6}$" } }, "additionalProperties": false, "minProperties": 1 }, "ThemePackPalette": { "type": "object", "properties": { "formatVersion": { "const": 1 }, "base": { "type": "string", "enum": [ "light", "dark" ] }, "colors": { "$ref": "#/$defs/ThemePackColors" } }, "additionalProperties": false, "required": [ "formatVersion", "base", "colors" ] }, "ThemePackReference": { "type": "object", "properties": { "pluginId": { "$ref": "#/$defs/PluginId" }, "themeId": { "$ref": "#/$defs/ContributionId" }, "version": { "$ref": "#/$defs/SemanticVersion" }, "digest": { "type": "string", "pattern": "^[a-f0-9]{64}$" }, "variant": { "$ref": "#/$defs/ThemePackVariant" } }, "additionalProperties": false, "required": [ "pluginId", "themeId", "version", "digest", "variant" ] }, "ThemePackChoice": { "type": "object", "properties": { "ref": { "$ref": "#/$defs/ThemePackReference" } }, "additionalProperties": false, "required": [ "ref" ] }, "ThemePackSelection": { "type": "object", "properties": { "formatVersion": { "const": 1 }, "revision": { "$ref": "#/$defs/SafeUnsignedInteger" }, "light": { "oneOf": [ { "$ref": "#/$defs/ThemePackChoice" }, { "type": "null" } ] }, "dark": { "oneOf": [ { "$ref": "#/$defs/ThemePackChoice" }, { "type": "null" } ] } }, "additionalProperties": false, "required": [ "formatVersion", "revision", "light", "dark" ] }, "ThemePackApplyRequest": { "type": "object", "properties": { "expectedRevision": { "$ref": "#/$defs/SafeUnsignedInteger" }, "mode": { "type": "string", "enum": [ "light", "dark" ] }, "choice": { "oneOf": [ { "$ref": "#/$defs/ThemePackChoice" }, { "type": "null" } ] } }, "additionalProperties": false, "required": [ "expectedRevision", "mode", "choice" ] }, "ThemePackEntry": { "type": "object", "properties": { "ref": { "$ref": "#/$defs/ThemePackReference" }, "label": { "type": "string", "maxLength": 512 }, "pluginName": { "type": "string", "maxLength": 512 }, "dataOnly": { "type": "boolean" }, "palette": { "$ref": "#/$defs/ThemePackPalette" } }, "additionalProperties": false, "required": [ "ref", "label", "pluginName", "dataOnly", "palette" ] }, "ThemePackCatalog": { "type": "object", "properties": { "selection": { "$ref": "#/$defs/ThemePackSelection" }, "entries": { "type": "array", "maxItems": 256, "items": { "$ref": "#/$defs/ThemePackEntry" } }, "diagnostics": { "type": "array", "maxItems": 256, "items": { "type": "object", "properties": { "pluginId": { "$ref": "#/$defs/PluginId" }, "themeId": { "type": "string", "maxLength": 192 }, "code": { "type": "string", "enum": [ "invalid", "unavailable", "capacity" ] } }, "additionalProperties": false, "required": [ "pluginId", "code" ] } } }, "additionalProperties": false, "required": [ "selection", "entries", "diagnostics" ] }, "PluginAIHostHandleRef": { "type": "object", "required": [ "hostHandle" ], "properties": { "hostHandle": { "type": "string", "format": "uuid" } }, "additionalProperties": false }, "PluginAIHostContextRef": { "type": "object", "required": [ "hostHandle", "version" ], "properties": { "hostHandle": { "type": "string", "format": "uuid" }, "version": { "type": "string", "minLength": 1, "maxLength": 128 } }, "additionalProperties": false }, "PluginAIHostModelStart": { "type": "object", "required": [ "hostHandle", "prompt", "contexts", "maxOutputTokens", "maxChunkBytes" ], "properties": { "hostHandle": { "type": "string", "format": "uuid" }, "prompt": { "type": "string", "minLength": 1, "maxLength": 16384 }, "contexts": { "type": "array", "maxItems": 4, "items": { "type": "string", "maxLength": 16384 } }, "maxOutputTokens": { "type": "integer", "minimum": 1, "maximum": 2048 }, "maxChunkBytes": { "type": "integer", "minimum": 4, "maximum": 4096 } }, "additionalProperties": false }, "PluginAIHostSelectedSummary": { "type": "object", "required": [ "hostHandle", "scope", "title", "version" ], "properties": { "hostHandle": { "type": "string", "format": "uuid" }, "scope": { "enum": [ "workspace", "tab", "session", "host", "note" ] }, "title": { "type": "string", "maxLength": 160 }, "version": { "type": "string", "minLength": 1, "maxLength": 128 } }, "additionalProperties": false }, "PluginAIHostModelEvent": { "oneOf": [ { "type": "object", "required": [ "kind", "text" ], "properties": { "kind": { "const": "text" }, "text": { "type": "string", "minLength": 0, "maxLength": 4096, "pattern": "^[^\\u0000]*$" } }, "additionalProperties": false }, { "type": "object", "required": [ "kind" ], "properties": { "kind": { "const": "usage" }, "inputTokens": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "outputTokens": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "totalTokens": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 } }, "additionalProperties": false } ] }, "PluginAIHostRequest": { "description": "Main-process requests to the current trusted application renderer. Never exposed to plugin views.", "oneOf": [ { "type": "object", "required": [ "requestId", "actionToken", "runtimeId", "kind", "payload" ], "properties": { "requestId": { "type": "string", "format": "uuid" }, "actionToken": { "type": "string", "pattern": "^[A-Za-z0-9_-]{32}$" }, "runtimeId": { "type": "string", "minLength": 1, "maxLength": 128, "pattern": "^[A-Za-z0-9-]+$" }, "kind": { "const": "model.select" }, "payload": { "$ref": "#/$defs/PluginAIEmptyParams" } }, "additionalProperties": false }, { "type": "object", "required": [ "requestId", "actionToken", "runtimeId", "kind", "payload" ], "properties": { "requestId": { "type": "string", "format": "uuid" }, "actionToken": { "type": "string", "pattern": "^[A-Za-z0-9_-]{32}$" }, "runtimeId": { "type": "string", "minLength": 1, "maxLength": 128, "pattern": "^[A-Za-z0-9-]+$" }, "kind": { "const": "model.current" }, "payload": { "$ref": "#/$defs/PluginAIHostHandleRef" } }, "additionalProperties": false }, { "type": "object", "required": [ "requestId", "actionToken", "runtimeId", "kind", "payload" ], "properties": { "requestId": { "type": "string", "format": "uuid" }, "actionToken": { "type": "string", "pattern": "^[A-Za-z0-9_-]{32}$" }, "runtimeId": { "type": "string", "minLength": 1, "maxLength": 128, "pattern": "^[A-Za-z0-9-]+$" }, "kind": { "const": "model.start" }, "payload": { "$ref": "#/$defs/PluginAIHostModelStart" } }, "additionalProperties": false }, { "type": "object", "required": [ "requestId", "actionToken", "runtimeId", "kind", "payload" ], "properties": { "requestId": { "type": "string", "format": "uuid" }, "actionToken": { "type": "string", "pattern": "^[A-Za-z0-9_-]{32}$" }, "runtimeId": { "type": "string", "minLength": 1, "maxLength": 128, "pattern": "^[A-Za-z0-9-]+$" }, "kind": { "const": "model.next" }, "payload": { "$ref": "#/$defs/PluginAIHostHandleRef" } }, "additionalProperties": false }, { "type": "object", "required": [ "requestId", "actionToken", "runtimeId", "kind", "payload" ], "properties": { "requestId": { "type": "string", "format": "uuid" }, "actionToken": { "type": "string", "pattern": "^[A-Za-z0-9_-]{32}$" }, "runtimeId": { "type": "string", "minLength": 1, "maxLength": 128, "pattern": "^[A-Za-z0-9-]+$" }, "kind": { "const": "model.stop" }, "payload": { "$ref": "#/$defs/PluginAIHostHandleRef" } }, "additionalProperties": false }, { "type": "object", "required": [ "requestId", "actionToken", "runtimeId", "kind", "payload" ], "properties": { "requestId": { "type": "string", "format": "uuid" }, "actionToken": { "type": "string", "pattern": "^[A-Za-z0-9_-]{32}$" }, "runtimeId": { "type": "string", "minLength": 1, "maxLength": 128, "pattern": "^[A-Za-z0-9-]+$" }, "kind": { "const": "model.release" }, "payload": { "$ref": "#/$defs/PluginAIHostHandleRef" } }, "additionalProperties": false }, { "type": "object", "required": [ "requestId", "actionToken", "runtimeId", "kind", "payload" ], "properties": { "requestId": { "type": "string", "format": "uuid" }, "actionToken": { "type": "string", "pattern": "^[A-Za-z0-9_-]{32}$" }, "runtimeId": { "type": "string", "minLength": 1, "maxLength": 128, "pattern": "^[A-Za-z0-9-]+$" }, "kind": { "const": "context.select" }, "payload": { "$ref": "#/$defs/PluginAIEmptyParams" } }, "additionalProperties": false }, { "type": "object", "required": [ "requestId", "actionToken", "runtimeId", "kind", "payload" ], "properties": { "requestId": { "type": "string", "format": "uuid" }, "actionToken": { "type": "string", "pattern": "^[A-Za-z0-9_-]{32}$" }, "runtimeId": { "type": "string", "minLength": 1, "maxLength": 128, "pattern": "^[A-Za-z0-9-]+$" }, "kind": { "const": "context.current" }, "payload": { "$ref": "#/$defs/PluginAIHostContextRef" } }, "additionalProperties": false }, { "type": "object", "required": [ "requestId", "actionToken", "runtimeId", "kind", "payload" ], "properties": { "requestId": { "type": "string", "format": "uuid" }, "actionToken": { "type": "string", "pattern": "^[A-Za-z0-9_-]{32}$" }, "runtimeId": { "type": "string", "minLength": 1, "maxLength": 128, "pattern": "^[A-Za-z0-9-]+$" }, "kind": { "const": "context.read" }, "payload": { "$ref": "#/$defs/PluginAIHostContextRef" } }, "additionalProperties": false }, { "type": "object", "required": [ "requestId", "actionToken", "runtimeId", "kind", "payload" ], "properties": { "requestId": { "type": "string", "format": "uuid" }, "actionToken": { "type": "string", "pattern": "^[A-Za-z0-9_-]{32}$" }, "runtimeId": { "type": "string", "minLength": 1, "maxLength": 128, "pattern": "^[A-Za-z0-9-]+$" }, "kind": { "const": "runtime.release" }, "payload": { "$ref": "#/$defs/PluginAIEmptyParams" } }, "additionalProperties": false }, { "type": "object", "required": [ "requestId", "actionToken", "runtimeId", "kind", "payload" ], "properties": { "requestId": { "type": "string", "format": "uuid" }, "actionToken": { "type": "string", "pattern": "^[A-Za-z0-9_-]{32}$" }, "runtimeId": { "type": "string", "minLength": 1, "maxLength": 128, "pattern": "^[A-Za-z0-9-]+$" }, "kind": { "const": "request.cancel" }, "payload": { "type": "object", "required": [ "requestId" ], "properties": { "requestId": { "type": "string", "format": "uuid" } }, "additionalProperties": false } }, "additionalProperties": false } ] }, "PluginAIHostResult": { "oneOf": [ { "type": "object", "required": [ "hostHandle", "label" ], "properties": { "hostHandle": { "type": "string", "format": "uuid" }, "label": { "type": "string", "maxLength": 160 } }, "additionalProperties": false }, { "type": "object", "required": [ "hostHandle" ], "properties": { "hostHandle": { "type": "string", "format": "uuid" } }, "additionalProperties": false }, { "type": "object", "required": [ "current" ], "properties": { "current": { "type": "boolean" } }, "additionalProperties": false }, { "type": "object", "required": [ "done" ], "properties": { "done": { "const": true } }, "additionalProperties": false }, { "type": "object", "required": [ "done", "event" ], "properties": { "done": { "const": false }, "event": { "$ref": "#/$defs/PluginAIHostModelEvent" } }, "additionalProperties": false }, { "type": "object", "required": [ "items" ], "properties": { "items": { "type": "array", "maxItems": 5, "items": { "$ref": "#/$defs/PluginAIHostSelectedSummary" } } }, "additionalProperties": false }, { "type": "object", "required": [ "text" ], "properties": { "text": { "type": "string", "maxLength": 16384 } }, "additionalProperties": false }, { "type": "object", "required": [ "ok" ], "properties": { "ok": { "type": "boolean" } }, "additionalProperties": false } ] }, "PluginAIHostResponse": { "description": "One-use reply from the current trusted application renderer. Provider configuration, keys and diagnostics are excluded.", "oneOf": [ { "type": "object", "required": [ "requestId", "actionToken", "result" ], "properties": { "requestId": { "type": "string", "format": "uuid" }, "actionToken": { "type": "string", "pattern": "^[A-Za-z0-9_-]{32}$" }, "result": { "$ref": "#/$defs/PluginAIHostResult" } }, "additionalProperties": false }, { "type": "object", "required": [ "requestId", "actionToken", "error" ], "properties": { "requestId": { "type": "string", "format": "uuid" }, "actionToken": { "type": "string", "pattern": "^[A-Za-z0-9_-]{32}$" }, "error": { "const": true } }, "additionalProperties": false } ] }, "TerminalSelectionSharingFeature": { "const": "terminal.selection-sharing" }, "TerminalSelectionSharingLimits": { "const": { "textBytes": 4096, "handleTtlMs": 120000, "handlesPerRuntime": 4, "handlesTotal": 64 } }, "HostTerminalTarget": { "type": "object", "properties": { "sessionId": { "type": [ "string", "null" ], "maxLength": 128, "pattern": "^[A-Za-z0-9_-]+$" }, "rendererId": { "type": "string", "minLength": 1, "maxLength": 128 }, "label": { "type": "string", "minLength": 1, "maxLength": 160 } }, "required": [ "sessionId" ], "additionalProperties": false, "allOf": [ { "if": { "properties": { "sessionId": { "type": "string" } } }, "then": { "required": [ "rendererId", "label" ] } } ] }, "HostTerminalSelectionReadRequest": { "type": "object", "properties": { "kind": { "const": "terminal.selection.read" }, "title": { "type": "string", "minLength": 1, "maxLength": 256 } }, "required": [ "kind", "title" ], "additionalProperties": false }, "SharedTerminalSelection": { "type": "object", "properties": { "text": { "type": "string", "minLength": 1, "maxLength": 4096, "pattern": "^[^\\u0000]*$" }, "handle": { "type": "string", "minLength": 64, "maxLength": 256 }, "expiresAt": { "$ref": "#/$defs/SafePositiveInteger" } }, "required": [ "text", "handle", "expiresAt" ], "additionalProperties": false }, "TerminalInputDraftFeature": { "const": "terminal.input-drafts" }, "HostTerminalInputProposalRequest": { "type": "object", "required": [ "kind", "title", "handle", "text" ], "properties": { "kind": { "const": "terminal.input.propose" }, "title": { "type": "string", "minLength": 1, "maxLength": 256 }, "handle": { "type": "string", "minLength": 64, "maxLength": 256 }, "text": { "type": "string", "maxLength": 4096 } }, "additionalProperties": false } } }