feat: add a permission-gated UI action registry and action slots for plugins

Moves the terminal toolbar's hardwired AI button into a slot the ssh-terminal
plugin offers and the ai plugin fills, gated on ai.services.use.
This commit is contained in:
LukeGus committed 2026-09-21 16:56:15 -05:00
1 parent 225f618337
commit 2d6c1cdecb
29 files changed
+1971 -40

No files matched your search

+12
View File
@@ -50,6 +50,18 @@ describe("validate-plugin-manifest.cjs", () => {
expect(output).toContain("sampleprovider.undeclared");
});
it("accepts a manifest declaring actions and actionSlots", () => {
const { status, output } = runValidator("valid-actions.json");
expect(status).toBe(0);
expect(output).toContain("Valid plugin manifest");
});
it("rejects an action gated by an undeclared permission", () => {
const { status, output } = runValidator("invalid-action-permission.json");
expect(status).not.toBe(0);
expect(output).toContain("samplebadaction.never_declared");
});
it("rejects a manifest with an unknown permission", () => {
const { status, output } = runValidator("invalid-unknown-permission.json");
expect(status).not.toBe(0);