feat: collapse plugin runtime to one tier behind a plugin SDK

This commit is contained in:
LukeGus committed 2026-09-22 14:11:50 -05:00
1 parent 6e058f6e9e
commit 4758016f41
96 files changed
+34631 -8551

No files matched your search

@@ -1,10 +1,10 @@
{
"id": "sample-bad-action",
"name": "Sample Bad Action",
"id": "sample-plugin",
"name": "Sample",
"version": "1.0.0",
"description": "An action gated by a permission the plugin never declares.",
"description": "A sample.",
"author": {
"name": "Jane Doe"
"name": "Termix"
},
"license": "MIT",
"category": "Productivity",
@@ -12,26 +12,19 @@
"termix": ">=2.9.0",
"api": "1"
},
"capabilities": {
"backend": false,
"frontend": true,
"electron": false,
"platforms": ["linux", "win32", "darwin"]
},
"permissions": ["ui.tab"],
"capabilities": ["kv:own", "ui:surface"],
"contributes": {
"permissionGroup": {
"group": "samplebadaction",
"permissions": ["samplebadaction.use"]
"group": "sample-plugin",
"permissions": ["sample-plugin.use"]
},
"actions": [
{
"id": "samplebadaction.open",
"titleKey": "sampleBadAction.open",
"id": "sample.open",
"titleKey": "sample.open",
"handler": "open",
"permission": "samplebadaction.never_declared"
"permission": "sample-plugin.nope"
}
]
},
"sidecars": []
}
}
@@ -1,10 +1,10 @@
{
"id": "Sample_Plugin!",
"name": "Sample Plugin",
"id": "Sample_Plugin",
"name": "Sample",
"version": "1.0.0",
"description": "Has an id that violates the required pattern.",
"description": "A sample.",
"author": {
"name": "Jane Doe"
"name": "Termix"
},
"license": "MIT",
"category": "Productivity",
@@ -12,12 +12,5 @@
"termix": ">=2.9.0",
"api": "1"
},
"capabilities": {
"backend": true,
"frontend": true,
"electron": false,
"platforms": ["linux"]
},
"permissions": [],
"sidecars": []
"capabilities": ["kv:own", "ui:surface"]
}
@@ -1,9 +1,9 @@
{
"id": "sample-plugin",
"name": "Sample Plugin",
"name": "Sample",
"version": "1.0.0",
"description": "A sample.",
"author": {
"name": "Jane Doe"
"name": "Termix"
},
"license": "MIT",
"category": "Productivity",
@@ -11,12 +11,5 @@
"termix": ">=2.9.0",
"api": "1"
},
"capabilities": {
"backend": true,
"frontend": true,
"electron": false,
"platforms": ["linux"]
},
"permissions": [],
"sidecars": []
"capabilities": ["kv:own", "ui:surface"]
}
@@ -0,0 +1,27 @@
{
"id": "sample-plugin",
"name": "Sample",
"version": "1.0.0",
"description": "A sample.",
"author": {
"name": "Termix"
},
"license": "MIT",
"category": "Productivity",
"engine": {
"termix": ">=2.9.0",
"api": "1"
},
"capabilities": ["kv:own", "ui:surface"],
"contributes": {
"tabs": [
{
"id": "t",
"titleKey": "k",
"icon": "i",
"openFrom": ["rail"],
"extra": 1
}
]
}
}
@@ -0,0 +1,25 @@
{
"id": "sample-plugin",
"name": "Sample",
"version": "1.0.0",
"description": "A sample.",
"author": {
"name": "Termix"
},
"license": "MIT",
"category": "Productivity",
"engine": {
"termix": ">=2.9.0",
"api": "1"
},
"capabilities": ["kv:own", "ui:surface"],
"contributes": {
"permissionGroup": {
"group": "sample-plugin",
"permissions": ["sample-plugin.use"],
"defaultForRole": {
"user": ["admin.users.manage"]
}
}
}
}
@@ -1,10 +1,10 @@
{
"id": "sample-provider",
"name": "Sample Provider",
"id": "sample-plugin",
"name": "Sample",
"version": "1.0.0",
"description": "Gates a service behind a permission its own group never declares.",
"description": "A sample.",
"author": {
"name": "Jane Doe"
"name": "Termix"
},
"license": "MIT",
"category": "Productivity",
@@ -12,25 +12,18 @@
"termix": ">=2.9.0",
"api": "1"
},
"capabilities": {
"backend": true,
"frontend": false,
"electron": false,
"platforms": ["linux"]
},
"permissions": ["hosts.read"],
"contributes": {
"permissionGroup": {
"group": "sampleprovider",
"permissions": ["sampleprovider.greet.use"]
}
},
"capabilities": ["kv:own", "ui:surface"],
"provides": [
{
"service": "sampleprovider.greet",
"version": "1.2.0",
"permission": "sampleprovider.undeclared"
"service": "sample.thing",
"version": "1.0.0",
"permission": "sample-plugin.undeclared"
}
],
"sidecars": []
"contributes": {
"permissionGroup": {
"group": "sample-plugin",
"permissions": ["sample-plugin.use"]
}
}
}
@@ -0,0 +1,16 @@
{
"id": "sample-plugin",
"name": "Sample",
"version": "1.0.0",
"description": "A sample.",
"author": {
"name": "Termix"
},
"license": "MIT",
"category": "Productivity",
"engine": {
"termix": ">=2.9.0",
"api": "1"
},
"capabilities": ["hosts.read"]
}
@@ -1,23 +1,16 @@
{
"id": "sample-plugin",
"name": "Sample Plugin",
"name": "Sample",
"version": "1.0.0",
"description": "Has a category that is not in the known category list.",
"description": "A sample.",
"author": {
"name": "Jane Doe"
"name": "Termix"
},
"license": "MIT",
"category": "Miscellaneous",
"category": "Nonsense",
"engine": {
"termix": ">=2.9.0",
"api": "1"
},
"capabilities": {
"backend": true,
"frontend": true,
"electron": false,
"platforms": ["linux"]
},
"permissions": [],
"sidecars": []
"capabilities": ["kv:own", "ui:surface"]
}
@@ -0,0 +1,17 @@
{
"id": "sample-plugin",
"name": "Sample",
"version": "1.0.0",
"description": "A sample.",
"author": {
"name": "Termix"
},
"license": "MIT",
"category": "Productivity",
"engine": {
"termix": ">=2.9.0",
"api": "1"
},
"capabilities": ["kv:own", "ui:surface"],
"sudoEverything": true
}
@@ -1,23 +0,0 @@
{
"id": "sample-plugin",
"name": "Sample Plugin",
"version": "1.0.0",
"description": "Requests a permission that is not in the known capability list.",
"author": {
"name": "Jane Doe"
},
"license": "MIT",
"category": "Productivity",
"engine": {
"termix": ">=2.9.0",
"api": "1"
},
"capabilities": {
"backend": true,
"frontend": true,
"electron": false,
"platforms": ["linux"]
},
"permissions": ["credentials.read"],
"sidecars": []
}
@@ -1,10 +1,10 @@
{
"id": "sample-actions",
"name": "Sample Actions",
"id": "sample-plugin",
"name": "Sample",
"version": "1.0.0",
"description": "A plugin that contributes a UI action and offers a slot of its own.",
"description": "A sample.",
"author": {
"name": "Jane Doe"
"name": "Termix"
},
"license": "MIT",
"category": "Productivity",
@@ -12,41 +12,19 @@
"termix": ">=2.9.0",
"api": "1"
},
"capabilities": {
"backend": false,
"frontend": true,
"electron": false,
"platforms": ["linux", "win32", "darwin"]
},
"permissions": ["ui.tab"],
"capabilities": ["kv:own", "ui:surface"],
"contributes": {
"permissionGroup": {
"group": "sampleactions",
"permissions": ["sampleactions.use"]
"group": "sample-plugin",
"permissions": ["sample-plugin.use"]
},
"actions": [
{
"id": "sampleactions.openWithContext",
"titleKey": "sampleActions.open",
"handler": "openWithContext",
"icon": "Sparkles",
"permission": "sampleactions.use",
"slot": "terminal.toolbar",
"kind": "button"
},
{
"id": "sampleactions.ungated",
"titleKey": "sampleActions.ungated",
"handler": "ungated"
}
],
"actionSlots": [
{
"id": "sampleactions.panel",
"accepts": ["button"],
"descriptionKey": "sampleActions.panelDescription"
"id": "sample.open",
"titleKey": "sample.open",
"handler": "open",
"permission": "sample-plugin.use"
}
]
},
"sidecars": []
}
}
@@ -1,10 +1,10 @@
{
"id": "sample-provider",
"name": "Sample Provider",
"id": "sample-plugin",
"name": "Sample",
"version": "1.0.0",
"description": "A plugin that both provides and requires a named service.",
"description": "A sample.",
"author": {
"name": "Jane Doe"
"name": "Termix"
},
"license": "MIT",
"category": "Productivity",
@@ -12,32 +12,18 @@
"termix": ">=2.9.0",
"api": "1"
},
"capabilities": {
"backend": true,
"frontend": false,
"electron": false,
"platforms": ["linux", "win32", "darwin"]
},
"permissions": ["hosts.read"],
"contributes": {
"permissionGroup": {
"group": "sampleprovider",
"permissions": ["sampleprovider.greet.use"]
}
},
"capabilities": ["kv:own", "ui:surface"],
"provides": [
{
"service": "sampleprovider.greet",
"version": "1.2.0",
"permission": "sampleprovider.greet.use"
"service": "sample.thing",
"version": "1.0.0",
"permission": "sample-plugin.use"
}
],
"requires": [
{
"service": "other.thing",
"versionRange": "^1.0.0",
"optional": true
"contributes": {
"permissionGroup": {
"group": "sample-plugin",
"permissions": ["sample-plugin.use"]
}
],
"sidecars": []
}
}
+4 -33
View File
@@ -1,45 +1,16 @@
{
"id": "sample-plugin",
"name": "Sample Plugin",
"name": "Sample",
"version": "1.0.0",
"description": "A sample plugin used for schema validation tests.",
"description": "A sample.",
"author": {
"name": "Jane Doe",
"url": "https://example.com"
"name": "Termix"
},
"license": "MIT",
"repository": "https://github.com/example/sample-plugin",
"category": "Productivity",
"icon": "Box",
"engine": {
"termix": ">=2.9.0",
"api": "1"
},
"capabilities": {
"backend": true,
"frontend": true,
"electron": false,
"platforms": ["linux", "win32", "darwin"]
},
"permissions": ["hosts.read", "ui.tab", "ui.rail"],
"contributes": {
"tabs": [
{
"id": "sample-plugin-tab",
"titleKey": "samplePlugin.tab.title",
"icon": "Box",
"openFrom": ["rail", "palette"]
}
],
"settingsPanel": {
"titleKey": "samplePlugin.settings.title"
},
"apiPrefix": "sample"
},
"dependencies": {
"plugins": {
"other-plugin": "^1.0.0"
}
},
"sidecars": []
"capabilities": ["kv:own", "ui:surface"]
}