Files
orca/docs/schemas/plugins/orca-plugin.v2.schema.json
T
Neil 8e61c440df plugins: derive the publisher from where a plugin comes from, like a Go module path (#36281)
The manifest publisher is deprecated and ignored for catalog and Git installs:
catalog installs use the listing id, Git URL installs the URL owner, folders
'local' (or their still-declared publisher). Existing installs keep their key.
A format 2 manifest may omit publisher only with engines.orca >=1.4.246, so
older Orca reports 'requires Orca X' instead of failing to parse it. The v2
catalog documents an optional ownerId, which older Orca already strips.
2026-10-30 00:45:00 -07:00

1150 lines
39 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/stablyai/orca/main/docs/schemas/plugins/orca-plugin.v2.schema.json",
"title": "Orca plugin manifest",
"description": "The orca-plugin.json file at the root of an Orca plugin (manifest format 2).",
"type": "object",
"properties": {
"$schema": {
"description": "JSON Schema URL for editor completion. Ignored by Orca.",
"x-orca-since": "1.4.245",
"type": "string",
"maxLength": 2048
},
"manifestVersion": {
"type": "number",
"const": 2,
"description": "Manifest format. Use 2 for new plugins.",
"x-orca-since": "1.4.245"
},
"execution": {
"type": "string",
"enum": [
"data",
"declarative",
"sandboxed-ui",
"trusted-worker"
],
"description": "Most authority the plugin needs, least first: `data` (themes, syntaxes, translations), `declarative` (commands, shortcuts, recipes), `sandboxed-ui` (panels), `trusted-worker` (`main` and events). Contributions beyond it fail validation.",
"x-orca-since": "1.4.245",
"examples": [
"data"
]
},
"id": {
"type": "string",
"maxLength": 64,
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"description": "Plugin id, kebab-case. The install identity is `<publisher>.<id>`, where Orca derives the publisher from the repository owner. The reserved names `constructor` and `prototype` are refused.",
"x-orca-since": "1.4.160",
"examples": [
"gleam-syntax"
]
},
"publisher": {
"deprecated": true,
"description": "Deprecated: leave it out. Orca derives the publisher from where the plugin comes from, the way a Go module is named by its repository path: the repository owner for the official and community catalogs and for Git URL installs (`acme` for `github.com/acme/gleam-syntax`), and `local` for a folder. A value here is ignored for catalog and Git installs. Leaving it out needs `engines.orca` of at least `>=1.4.246`, because older Orca requires it; if you keep it for older Orca, it must equal the repository owner. Reserved owners (`stablyai`, `official`, `anthropic`, `openai`, `github` and any starting `orca`) and ids starting `orca-` install only from Orca's official catalog.",
"x-orca-since": "1.4.160",
"examples": [
"acme"
],
"type": "string",
"maxLength": 64,
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "Display name.",
"x-orca-since": "1.4.160",
"examples": [
"Gleam"
]
},
"version": {
"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-]+)*)?$",
"description": "Plugin version, semver.",
"x-orca-since": "1.4.160",
"examples": [
"1.2.0"
]
},
"description": {
"description": "One or two sentences shown in the plugin list.",
"x-orca-since": "1.4.160",
"type": "string",
"maxLength": 4096
},
"author": {
"description": "Who maintains the plugin.",
"x-orca-since": "1.4.160",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "Author or organization name.",
"x-orca-since": "1.4.160",
"examples": [
"Acme"
]
},
"url": {
"description": "Author homepage.",
"x-orca-since": "1.4.160",
"examples": [
"https://example.com"
],
"type": "string",
"maxLength": 2048
}
},
"required": [
"name"
],
"additionalProperties": false
},
"repository": {
"description": "Source repository URL.",
"x-orca-since": "1.4.160",
"examples": [
"https://github.com/acme/orca-gleam-syntax"
],
"type": "string",
"maxLength": 2048
},
"license": {
"description": "SPDX license expression.",
"x-orca-since": "1.4.245",
"examples": [
"MIT",
"Apache-2.0 OR MIT"
],
"type": "string",
"maxLength": 128,
"pattern": "^\\(?[A-Za-z0-9][A-Za-z0-9.+-]*(?: (?:AND|OR|WITH) \\(?[A-Za-z0-9][A-Za-z0-9.+-]*\\)?)*\\)?$"
},
"homepage": {
"description": "Project homepage, https only.",
"x-orca-since": "1.4.245",
"examples": [
"https://example.com/gleam"
],
"type": "string",
"maxLength": 2048,
"pattern": "^https:\\/\\/\\S+$"
},
"icon": {
"description": "Square image shown beside the plugin name. PNG, WEBP, static, at least 128×128, square, at most 256 KB. Relative to the plugin root; `..` segments and Windows device names such as `CON` are refused.",
"x-orca-since": "1.4.160",
"examples": [
"assets/icon.png"
],
"type": "string",
"minLength": 1,
"maxLength": 1024,
"pattern": "^[^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ](?:[\\\\/][^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ])*$"
},
"engines": {
"type": "object",
"properties": {
"orca": {
"type": "string",
"maxLength": 64,
"pattern": "^>=\\d+\\.\\d+\\.\\d+$",
"description": "Oldest Orca release this plugin runs on, as `>=x.y.z`. Raise it to the newest \"Since\" of any field you use; a format 2 manifest needs at least `>=1.4.245`, because older Orca cannot read format 2.",
"x-orca-since": "1.4.160",
"examples": [
">=1.4.245"
]
}
},
"required": [
"orca"
],
"additionalProperties": false,
"description": "Host versions this plugin supports. Older hosts refuse to load it.",
"x-orca-since": "1.4.160"
},
"main": {
"description": "Node entry run in an out-of-process plugin worker. Requires the `trusted-worker` execution profile, and is required by it, by `contributes.events` and by any command without an `action`. Relative to the plugin root; `..` segments and Windows device names such as `CON` are refused.",
"x-orca-since": "1.4.160",
"examples": [
"dist/main.mjs"
],
"type": "string",
"minLength": 1,
"maxLength": 1024,
"pattern": "^[^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ](?:[\\\\/][^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ])*$"
},
"contributes": {
"description": "What the plugin adds to Orca. Every point defaults to empty.",
"x-orca-since": "1.4.160",
"default": {},
"type": "object",
"properties": {
"panels": {
"default": [],
"description": "Sidebar panels. At most 64.",
"x-orca-since": "1.4.160",
"maxItems": 64,
"type": "array",
"items": {
"$ref": "#/$defs/PanelContribution"
}
},
"commands": {
"default": [],
"description": "Command palette entries. At most 256.",
"x-orca-since": "1.4.160",
"maxItems": 256,
"type": "array",
"items": {
"$ref": "#/$defs/CommandContribution"
}
},
"events": {
"default": [],
"description": "Events delivered to the plugin worker. At most 3.",
"x-orca-since": "1.4.160",
"maxItems": 3,
"type": "array",
"items": {
"$ref": "#/$defs/EventContribution"
}
},
"languagePacks": {
"default": [],
"description": "Interface translations. At most 16.",
"x-orca-since": "1.4.160",
"maxItems": 16,
"type": "array",
"items": {
"$ref": "#/$defs/LanguagePackContribution"
}
},
"keybindings": {
"description": "Keyboard shortcuts for contributed commands. At most 256.",
"x-orca-since": "1.4.160",
"maxItems": 256,
"type": "array",
"items": {
"$ref": "#/$defs/KeybindingContribution"
}
},
"vmRecipes": {
"default": [],
"description": "Virtual machine environment recipes. At most 64.",
"x-orca-since": "1.4.160",
"maxItems": 64,
"type": "array",
"items": {
"$ref": "#/$defs/VmRecipeContribution"
}
},
"themes": {
"default": [],
"description": "App color themes. At most 64.",
"x-orca-since": "1.4.245",
"maxItems": 64,
"type": "array",
"items": {
"$ref": "#/$defs/ThemeContribution"
}
},
"terminalThemes": {
"default": [],
"description": "Terminal ANSI palettes. At most 64.",
"x-orca-since": "1.4.245",
"maxItems": 64,
"type": "array",
"items": {
"$ref": "#/$defs/ThemeContribution"
}
},
"iconThemes": {
"default": [],
"description": "File icon themes. At most 32.",
"x-orca-since": "1.4.245",
"maxItems": 32,
"type": "array",
"items": {
"$ref": "#/$defs/ThemeContribution"
}
},
"syntaxes": {
"default": [],
"description": "Syntax highlighting for editor languages. At most 16.",
"x-orca-since": "1.4.245",
"maxItems": 16,
"type": "array",
"items": {
"$ref": "#/$defs/SyntaxContribution"
}
},
"customEditors": {
"default": [],
"description": "Editors that open files of given types in the editor tab. At most 16.",
"x-orca-since": "1.4.245",
"maxItems": 16,
"type": "array",
"items": {
"$ref": "#/$defs/CustomEditorContribution"
}
},
"newFiles": {
"default": [],
"description": "Untitled files the user can create from the + menu and the command palette. At most 16.",
"x-orca-since": "1.4.245",
"maxItems": 16,
"type": "array",
"items": {
"$ref": "#/$defs/NewFileContribution"
}
},
"agentHarnesses": {
"description": "Reserved for coding-agent harness definitions; must be empty until their format is defined.",
"x-orca-since": "1.4.245",
"maxItems": 0,
"type": "array",
"items": {}
},
"skills": {
"description": "Reserved for agent skills; must be empty until their format is defined.",
"x-orca-since": "1.4.245",
"maxItems": 0,
"type": "array",
"items": {}
},
"mcpServers": {
"description": "Reserved for MCP server definitions; must be empty until their format is defined.",
"x-orca-since": "1.4.245",
"maxItems": 0,
"type": "array",
"items": {}
},
"hooks": {
"description": "Reserved for agent hooks; must be empty until their format is defined.",
"x-orca-since": "1.4.245",
"maxItems": 0,
"type": "array",
"items": {}
},
"taskSources": {
"description": "Reserved for task sources; must be empty until their format is defined.",
"x-orca-since": "1.4.245",
"maxItems": 0,
"type": "array",
"items": {}
},
"connections": {
"description": "Reserved for account connections; must be empty until their format is defined.",
"x-orca-since": "1.4.245",
"maxItems": 0,
"type": "array",
"items": {}
},
"settings": {
"description": "Reserved for plugin settings; must be empty until their format is defined.",
"x-orca-since": "1.4.245",
"maxItems": 0,
"type": "array",
"items": {}
},
"statusBarItems": {
"description": "Reserved for status bar items; must be empty until their format is defined.",
"x-orca-since": "1.4.245",
"maxItems": 0,
"type": "array",
"items": {}
},
"sidebarCards": {
"description": "Reserved for sidebar cards; must be empty until their format is defined.",
"x-orca-since": "1.4.245",
"maxItems": 0,
"type": "array",
"items": {}
}
},
"additionalProperties": false
},
"capabilities": {
"default": [],
"description": "Host APIs the plugin asks the user to grant. At most 32.",
"x-orca-since": "1.4.160",
"maxItems": 32,
"type": "array",
"items": {
"$ref": "#/$defs/Capability"
}
},
"cover": {
"description": "Wide image at the top of the plugin page.",
"x-orca-since": "1.4.245",
"type": "object",
"properties": {
"path": {
"type": "string",
"minLength": 1,
"maxLength": 1024,
"pattern": "^[^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ](?:[\\\\/][^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ])*$",
"description": "Cover image shown on the plugin page, 16:10 recommended (1600×1000). PNG, JPEG, WEBP, static, at least 800×500, at most 1024 KB. Relative to the plugin root; `..` segments and Windows device names such as `CON` are refused.",
"x-orca-since": "1.4.245",
"examples": [
"images/cover.png"
]
},
"alt": {
"type": "string",
"minLength": 1,
"maxLength": 160,
"description": "What the image shows, for screen readers. Required.",
"x-orca-since": "1.4.245",
"examples": [
"The Dusk theme on a terminal"
]
}
},
"required": [
"path",
"alt"
],
"additionalProperties": false
},
"screenshots": {
"description": "Screenshots for the plugin page, at most 6. All images together may be at most 8 MB.",
"x-orca-since": "1.4.245",
"maxItems": 6,
"type": "array",
"items": {
"$ref": "#/$defs/Screenshot"
}
},
"pluginApi": {
"description": "Major version of the plugin host API this plugin targets. Optional (defaults to 1), and refused on `data` and `declarative` plugins, which never call it.",
"x-orca-since": "1.4.160",
"type": "number",
"const": 1
}
},
"required": [
"manifestVersion",
"execution",
"id",
"name",
"version",
"engines"
],
"additionalProperties": false,
"$defs": {
"PanelContribution": {
"type": "object",
"properties": {
"id": {
"type": "string",
"maxLength": 64,
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"description": "Panel id, unique among this plugin's panels. The reserved names `constructor` and `prototype` are refused.",
"x-orca-since": "1.4.160",
"examples": [
"dashboard"
]
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "Title shown on the panel tab and its tooltip.",
"x-orca-since": "1.4.160",
"examples": [
"Dashboard"
]
},
"icon": {
"description": "Icon shown in the right-sidebar activity bar. Defaults to `plug`.",
"x-orca-since": "1.4.160",
"examples": [
"database"
],
"type": "string",
"enum": [
"activity",
"bar-chart-3",
"bell",
"blocks",
"book",
"bot",
"bug",
"calendar",
"cloud",
"code",
"database",
"file-text",
"flag",
"folder",
"gauge",
"globe",
"hammer",
"layers",
"lightbulb",
"package",
"plug",
"puzzle",
"rocket",
"star",
"terminal",
"wrench",
"zap"
]
},
"entry": {
"type": "string",
"minLength": 1,
"maxLength": 1024,
"pattern": "^[^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ](?:[\\\\/][^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ])*$",
"description": "HTML file, relative to the plugin root, rendered inside a panel frame. It is trusted code: install panels you trust. Relative to the plugin root; `..` segments and Windows device names such as `CON` are refused.",
"x-orca-since": "1.4.160",
"examples": [
"dist/panel.html"
]
}
},
"required": [
"id",
"title",
"entry"
],
"additionalProperties": false,
"description": "A sidebar panel. Requires the `sandboxed-ui` execution profile or higher."
},
"CommandContribution": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"pattern": "^[A-Za-z0-9]+(?:[._-][A-Za-z0-9]+)*$",
"description": "Command id, unique among this plugin's commands. Dotted namespaces are allowed.",
"x-orca-since": "1.4.160",
"examples": [
"jupyter.restartKernel"
]
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "Title shown in the command palette.",
"x-orca-since": "1.4.160",
"examples": [
"Restart kernel"
]
},
"when": {
"description": "Where the command is available. `workspace` hides it when no workspace is active. Defaults to `global`.",
"x-orca-since": "1.4.160",
"x-orca-enum-since": {
"global": "1.4.160",
"workspace": "1.4.245"
},
"type": "string",
"enum": [
"global",
"workspace"
]
},
"action": {
"description": "Built-in Orca action this command runs. A command with an action is declarative and never starts the plugin worker; one without needs `main`.",
"x-orca-since": "1.4.160",
"examples": [
"view.tasks"
],
"enum": [
"worktree.history.back",
"worktree.history.forward",
"sidebar.left.toggle",
"sidebar.sleepingWorkspaces.toggle",
"floatingWorkspace.maximize",
"tab.rename",
"workspace.rename",
"workspace.openBoard",
"view.tasks",
"sidebar.right.toggle",
"sidebar.explorer.toggle",
"sidebar.search.toggle",
"sidebar.sourceControl.toggle",
"sidebar.checks.toggle",
"sidebar.ports.toggle"
],
"x-orca-enum-since": {
"worktree.history.back": "1.4.160",
"worktree.history.forward": "1.4.160",
"sidebar.left.toggle": "1.4.160",
"sidebar.sleepingWorkspaces.toggle": "1.4.160",
"floatingWorkspace.maximize": "1.4.160",
"tab.rename": "1.4.160",
"workspace.rename": "1.4.160",
"workspace.openBoard": "1.4.160",
"view.tasks": "1.4.160",
"sidebar.right.toggle": "1.4.160",
"sidebar.explorer.toggle": "1.4.160",
"sidebar.search.toggle": "1.4.160",
"sidebar.sourceControl.toggle": "1.4.160",
"sidebar.checks.toggle": "1.4.160",
"sidebar.ports.toggle": "1.4.160"
},
"type": "string",
"minLength": 1,
"maxLength": 256,
"pattern": "^[A-Za-z0-9]+(?:[._-][A-Za-z0-9]+)*$"
}
},
"required": [
"id",
"title"
],
"additionalProperties": false,
"description": "A command palette entry. Requires the `declarative` execution profile or higher."
},
"EventContribution": {
"type": "object",
"properties": {
"on": {
"type": "string",
"enum": [
"workspace.created",
"workspace.removed",
"agent.status.changed"
],
"description": "Event delivered to the plugin worker.",
"x-orca-since": "1.4.160",
"x-orca-enum-since": {
"workspace.created": "1.4.245",
"workspace.removed": "1.4.245",
"agent.status.changed": "1.4.160"
}
}
},
"required": [
"on"
],
"additionalProperties": false,
"description": "An event subscription. Requires `main`, the `trusted-worker` execution profile and the capability of the event's domain: `workspace:read` for workspace events, `agent:read` for agent events."
},
"LanguagePackContribution": {
"type": "object",
"properties": {
"locale": {
"type": "string",
"minLength": 2,
"maxLength": 35,
"pattern": "^[A-Za-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$",
"description": "BCP 47 locale the pack translates Orca into. Each locale appears once, ignoring case.",
"x-orca-since": "1.4.160",
"examples": [
"pt-BR"
]
},
"path": {
"type": "string",
"minLength": 1,
"maxLength": 1024,
"pattern": "^[^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ](?:[\\\\/][^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ])*$",
"description": "JSON file of translated interface strings. Relative to the plugin root; `..` segments and Windows device names such as `CON` are refused.",
"x-orca-since": "1.4.160",
"examples": [
"locales/pt-BR.json"
]
},
"displayName": {
"description": "Native-language name for the Settings picker. Omitted packs show `{locale} — {pluginKey}`.",
"x-orca-since": "1.4.245",
"examples": [
"Português (Brasil)"
],
"type": "string",
"minLength": 1,
"maxLength": 80
}
},
"required": [
"locale",
"path"
],
"additionalProperties": false,
"description": "An interface translation."
},
"KeybindingContribution": {
"type": "object",
"properties": {
"command": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"pattern": "^[A-Za-z0-9]+(?:[._-][A-Za-z0-9]+)*$",
"description": "Id of a command this plugin contributes in `contributes.commands`.",
"x-orca-since": "1.4.160",
"examples": [
"jupyter.restartKernel"
]
},
"key": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Key chord Orca recognizes, such as `Mod+Shift+K`. `Mod` is Cmd on macOS and Ctrl elsewhere. Each chord may be bound once on every platform.",
"x-orca-since": "1.4.160",
"examples": [
"Mod+Shift+K"
]
},
"when": {
"description": "Where the shortcut is active; must match its command's `when`.",
"x-orca-since": "1.4.160",
"x-orca-enum-since": {
"global": "1.4.160",
"workspace": "1.4.245"
},
"type": "string",
"enum": [
"global",
"workspace"
]
}
},
"required": [
"command",
"key"
],
"additionalProperties": false,
"description": "A keyboard shortcut for a command."
},
"VmRecipeContribution": {
"type": "object",
"properties": {
"path": {
"type": "string",
"minLength": 1,
"maxLength": 1024,
"pattern": "^[^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ](?:[\\\\/][^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ])*$",
"description": "JSON environment recipe file, listed once. Relative to the plugin root; `..` segments and Windows device names such as `CON` are refused.",
"x-orca-since": "1.4.160",
"examples": [
"recipes/ubuntu.json"
]
}
},
"required": [
"path"
],
"additionalProperties": false,
"description": "A virtual machine environment recipe."
},
"ThemeContribution": {
"type": "object",
"properties": {
"id": {
"type": "string",
"maxLength": 64,
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"description": "Theme id, unique within its family in this plugin. The reserved names `constructor` and `prototype` are refused.",
"x-orca-since": "1.4.245",
"examples": [
"dusk"
]
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Name shown in the theme picker.",
"x-orca-since": "1.4.245",
"examples": [
"Dusk"
]
},
"path": {
"type": "string",
"minLength": 1,
"maxLength": 1024,
"pattern": "^[^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ](?:[\\\\/][^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ])*$",
"description": "JSON theme file, at most 16 KiB. Relative to the plugin root; `..` segments and Windows device names such as `CON` are refused.",
"x-orca-since": "1.4.245",
"examples": [
"themes/dusk.json"
]
}
},
"required": [
"id",
"title",
"path"
],
"additionalProperties": false,
"description": "A titled theme file."
},
"SyntaxContribution": {
"type": "object",
"properties": {
"id": {
"type": "string",
"maxLength": 64,
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"description": "Language id, unique among this plugin's syntaxes. The reserved names `constructor` and `prototype` are refused.",
"x-orca-since": "1.4.245",
"examples": [
"gleam"
]
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"description": "Language name shown in the editor.",
"x-orca-since": "1.4.245",
"examples": [
"Gleam"
]
},
"scopeName": {
"type": "string",
"maxLength": 128,
"pattern": "^[A-Za-z][A-Za-z0-9_-]*(?:\\.[A-Za-z0-9_-]+)+$",
"description": "The grammar's root TextMate scope, unique among this plugin's syntaxes.",
"x-orca-since": "1.4.245",
"examples": [
"source.gleam"
]
},
"path": {
"type": "string",
"minLength": 1,
"maxLength": 1024,
"pattern": "^[^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ](?:[\\\\/][^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ])*$",
"description": "TextMate grammar JSON file. Relative to the plugin root; `..` segments and Windows device names such as `CON` are refused.",
"x-orca-since": "1.4.245",
"examples": [
"syntaxes/gleam.tmLanguage.json"
]
},
"configuration": {
"description": "Language configuration JSON file: comments, brackets and auto-closing pairs. Relative to the plugin root; `..` segments and Windows device names such as `CON` are refused.",
"x-orca-since": "1.4.245",
"examples": [
"syntaxes/language-configuration.json"
],
"type": "string",
"minLength": 1,
"maxLength": 1024,
"pattern": "^[^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ](?:[\\\\/][^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ])*$"
},
"extensions": {
"default": [],
"description": "File-name suffixes, with the dot, this language opens, ignoring case. A longer suffix such as `.excalidraw.json` wins over a shorter one, and a file named only the suffix never matches. At most 32.",
"x-orca-since": "1.4.245",
"examples": [
[
".gleam"
]
],
"maxItems": 32,
"type": "array",
"items": {
"type": "string",
"maxLength": 64,
"pattern": "^\\.[A-Za-z0-9_+-]+(?:\\.[A-Za-z0-9_+-]+)*$"
}
},
"filenames": {
"default": [],
"description": "Exact file names this language opens, ignoring case; a name beats any extension. Names must be portable: no path separators, `.`, `..` or characters Windows forbids. At most 32.",
"x-orca-since": "1.4.245",
"examples": [
[
"gleam.toml"
]
],
"maxItems": 32,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 128
}
}
},
"required": [
"id",
"title",
"scopeName",
"path"
],
"additionalProperties": false,
"description": "Syntax highlighting for one language."
},
"CustomEditorContribution": {
"type": "object",
"properties": {
"id": {
"type": "string",
"maxLength": 64,
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"description": "Editor id, unique among this plugin's custom editors. The reserved names `constructor` and `prototype` are refused.",
"x-orca-since": "1.4.245",
"examples": [
"excalidraw"
]
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "Name shown in the editor's view toggle beside Source, and on the tab of a file it opens.",
"x-orca-since": "1.4.245",
"examples": [
"Excalidraw"
]
},
"icon": {
"description": "Square image shown on the tab of a file this editor opens. Defaults to the plugin icon. PNG, WEBP, static, at least 128×128, square, at most 256 KB. Relative to the plugin root; `..` segments and Windows device names such as `CON` are refused.",
"x-orca-since": "1.4.245",
"examples": [
"images/editor-icon.png"
],
"type": "string",
"minLength": 1,
"maxLength": 1024,
"pattern": "^[^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ](?:[\\\\/][^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ])*$"
},
"extensions": {
"default": [],
"description": "File-name suffixes, with the dot, this editor opens, ignoring case. A longer suffix such as `.excalidraw.json` wins over a shorter one, and a file named only the suffix never matches. At most 32.",
"x-orca-since": "1.4.245",
"examples": [
[
".excalidraw",
".excalidraw.json"
]
],
"maxItems": 32,
"type": "array",
"items": {
"type": "string",
"maxLength": 64,
"pattern": "^\\.[A-Za-z0-9_+-]+(?:\\.[A-Za-z0-9_+-]+)*$"
}
},
"filenames": {
"default": [],
"description": "Exact file names this editor opens, ignoring case; a name beats any extension. Names must be portable: no path separators, `.`, `..` or characters Windows forbids. At most 32.",
"x-orca-since": "1.4.245",
"examples": [
[]
],
"maxItems": 32,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 128
}
},
"entry": {
"type": "string",
"minLength": 1,
"maxLength": 1024,
"pattern": "^[^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ](?:[\\\\/][^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ])*$",
"description": "HTML file rendered inside an editor frame, like a panel. It receives the open document and posts edits back; it never gets a file path or file system. It is trusted code: install editors you trust. Relative to the plugin root; `..` segments and Windows device names such as `CON` are refused.",
"x-orca-since": "1.4.245",
"examples": [
"editor/index.html"
]
},
"priority": {
"description": "`default` (the default) opens matching files in this editor; `option` only offers it in the view toggle, so files open in Source. Files Orca opens itself (such as `.json`, `.ts`, `.md`, `.csv`, `.yaml`, lockfiles and `.env` files) always behave as `option`.",
"x-orca-since": "1.4.245",
"examples": [
"default"
],
"type": "string",
"enum": [
"default",
"option"
]
},
"contentKind": {
"description": "`text` (the default) sends the file as text and accepts full-text edits. `bytes` sends the file's raw bytes, for binary formats such as spreadsheets, and accepts full-byte edits.",
"x-orca-since": "1.4.245",
"examples": [
"bytes"
],
"type": "string",
"enum": [
"text",
"bytes"
]
}
},
"required": [
"id",
"title",
"entry"
],
"additionalProperties": false,
"description": "An editor for the listed files, shown in the editor tab beside Source. It must list at least one extension or file name. Requires the `sandboxed-ui` execution profile or higher."
},
"NewFileContribution": {
"type": "object",
"properties": {
"id": {
"type": "string",
"maxLength": 64,
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"description": "New-file id, unique among this plugin's new files. The reserved names `constructor` and `prototype` are refused.",
"x-orca-since": "1.4.245",
"examples": [
"drawing"
]
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "Menu item shown in the tab bar + menu and the command palette.",
"x-orca-since": "1.4.245",
"examples": [
"New Excalidraw drawing"
]
},
"extension": {
"type": "string",
"maxLength": 64,
"pattern": "^\\.[A-Za-z0-9_+-]+(?:\\.[A-Za-z0-9_+-]+)*$",
"description": "Suffix, with the dot, of the untitled file it creates. The file opens in whatever editor takes that suffix, such as a custom editor from this plugin.",
"x-orca-since": "1.4.245",
"examples": [
".excalidraw"
]
},
"template": {
"description": "UTF-8 file copied into the new file, at most 256 KB. Without one the file starts empty. Relative to the plugin root; `..` segments and Windows device names such as `CON` are refused.",
"x-orca-since": "1.4.245",
"examples": [
"templates/empty.excalidraw"
],
"type": "string",
"minLength": 1,
"maxLength": 1024,
"pattern": "^[^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ](?:[\\\\/][^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ])*$"
},
"icon": {
"description": "Square image shown beside the menu item. Defaults to the plugin icon. PNG, WEBP, static, at least 128×128, square, at most 256 KB. Relative to the plugin root; `..` segments and Windows device names such as `CON` are refused.",
"x-orca-since": "1.4.245",
"examples": [
"images/editor-icon.png"
],
"type": "string",
"minLength": 1,
"maxLength": 1024,
"pattern": "^[^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ](?:[\\\\/][^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ])*$"
}
},
"required": [
"id",
"title",
"extension"
],
"additionalProperties": false,
"description": "A kind of untitled file the user can create from the tab bar + menu or the command palette, in the active workspace."
},
"Capability": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"workspace:read",
"agent:read",
"terminal:send",
"notifications:show",
"storage:own",
"secrets:own",
"settings:own"
],
"description": "Capability granted on user consent.",
"x-orca-since": "1.4.160",
"x-orca-enum-since": {
"workspace:read": "1.4.160",
"agent:read": "1.4.245",
"terminal:send": "1.4.160",
"notifications:show": "1.4.160",
"storage:own": "1.4.245",
"secrets:own": "1.4.245",
"settings:own": "1.4.160"
}
}
},
"required": [
"kind"
],
"additionalProperties": false,
"description": "A host API the plugin may call once the user consents."
},
"Screenshot": {
"type": "object",
"properties": {
"path": {
"type": "string",
"minLength": 1,
"maxLength": 1024,
"pattern": "^[^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ](?:[\\\\/][^<>:\"|?*\\x00-\\x1f\\\\/]*[^<>:\"|?*\\x00-\\x1f\\\\/. ])*$",
"description": "Screenshot, 16:10 recommended (up to 2560×1600). PNG, JPEG, WEBP, static, at least 1280×800, at most 1536 KB. Relative to the plugin root; `..` segments and Windows device names such as `CON` are refused.",
"x-orca-since": "1.4.245",
"examples": [
"images/editor.png"
]
},
"alt": {
"type": "string",
"minLength": 1,
"maxLength": 160,
"description": "What the image shows, for screen readers. Required.",
"x-orca-since": "1.4.245",
"examples": [
"The Dusk theme on a terminal"
]
},
"caption": {
"description": "Short caption under the screenshot.",
"x-orca-since": "1.4.245",
"examples": [
"Gleam in the editor"
],
"type": "string",
"minLength": 1,
"maxLength": 120
},
"theme": {
"description": "Show this screenshot only with a light or dark Orca theme.",
"x-orca-since": "1.4.245",
"type": "string",
"enum": [
"light",
"dark"
]
}
},
"required": [
"path",
"alt"
],
"additionalProperties": false,
"description": "One screenshot of the plugin in use."
}
}
}