Documentation / Reference

Reference

Exact field names, limits, environment variables, errors, and transport behavior for API and plugin authors.

Manifest fields

FieldTypeRequiredRules
activationEventsstring[]yesonStartup, onCommand:<id>, or onPanel:<id>. Contributions require matching activation events.
argumentsstring[]yesArguments passed directly to the executable. At most 64 entries and 4 KiB per entry.
contributesobjectyesBounded command and panel declarations rendered by Cairn.
executablestringyesRelative executable path inside the plugin directory. Absolute paths and directory escapes are rejected.
idstringyesReverse-DNS identifier with at least three components; it must also be the plugin directory name.
manifestVersioninteger (= 1)yesManifest schema version. The current value is generated from PluginManifest.currentManifestVersion.
namestringyesHuman-readable name, at most 120 UTF-8 bytes.
permissionsstring[]yesCapabilities requested by the plugin. Declaration does not grant access.
versionstringyesPlugin release version, at most 80 UTF-8 bytes.

Contribution fields

contributes

FieldTypeRequiredRules
commandscommand[]yesAt most 128 command-palette contributions with unique IDs.
panelspanel[]yesAt most 32 dock-panel contributions with unique IDs.

Command

FieldTypeRequiredRules
descriptionstring?noOptional detail shown with the command; at most 500 UTF-8 bytes.
idstringyesContribution identifier, at most 80 allowed ASCII characters.
systemImageNamestring?noOptional SF Symbol name, at most 120 UTF-8 bytes.
titlestringyesCommand title, at most 120 UTF-8 bytes.

Panel

FieldTypeRequiredRules
buttonsbutton[]yesAt most eight buttons with unique IDs.
idstringyesContribution identifier, at most 80 allowed ASCII characters.
rowsrow[]yesAt most 32 read-only label/value rows.
statusstatus?noOptional host-rendered status treatment.
systemImageNamestringyesSF Symbol name, at most 120 UTF-8 bytes.
titlestringyesPanel title, at most 120 UTF-8 bytes.

Panel row

FieldTypeRequiredRules
labelstringyesRow label, at most 120 UTF-8 bytes.
valuestringyesRow value, at most 1,000 UTF-8 bytes.

Panel status

FieldTypeRequiredRules
levelenumyesneutral, success, warning, or error.
textstringyesStatus text, at most 500 UTF-8 bytes.

Panel button

FieldTypeRequiredRules
idstringyesUnique contribution identifier.
roleenumyesnormal, primary, or destructive.
titlestringyesButton title, at most 120 UTF-8 bytes.

Transport and limits

Local APIjson-rpc-2.0+ndjson+unix; owner-only Unix socket and token/metadata files.
Plugin transportjson-rpc-2.0+ndjson+stdio; stdout is protocol-only, stderr is diagnostics.
Record size4 MiB before the newline on both transports. Oversized local records close the connection; plugin violations terminate that plugin.
Request IDsLocal API accepts string, integer, or null IDs. Cairn-to-plugin requests use integer IDs.
ParamsJSON-RPC request params must be an object or array.
Schema digest929d09094fbc6efff173f93f45cb1203de9b6d31001a990df26485ebe7f930a7

JSON-RPC errors

CodeMeaning
-32700Parse error
-32600Invalid request
-32601Method not found
-32602Invalid params
-32603Internal error
-32001Authentication required
-32002Capability not granted
-32003Request exceeds 4 MiB
-32004Authentication failed
-32005Session already authenticated
-32006Descriptor already registered