fix: expose skill proposal gateway methods

This commit is contained in:
Shakker
2026-05-30 04:48:40 +01:00
committed by Shakker
parent 199cdc1052
commit 339e212c85
3 changed files with 44 additions and 0 deletions

View File

@@ -389,6 +389,36 @@ describe("core gateway method classification", () => {
);
expect(unclassified).toStrictEqual([]);
});
it("exposes skill proposal methods through the core gateway registry", () => {
for (const method of ["skills.proposals.list", "skills.proposals.inspect"]) {
expect(listGatewayMethods()).toContain(method);
expect(coreGatewayHandlers).toHaveProperty(method);
expect(resolveLeastPrivilegeOperatorScopesForMethod(method)).toEqual(["operator.read"]);
expect(authorizeOperatorScopesForMethod(method, ["operator.read"])).toEqual({
allowed: true,
});
}
for (const method of [
"skills.proposals.create",
"skills.proposals.update",
"skills.proposals.apply",
"skills.proposals.reject",
"skills.proposals.quarantine",
]) {
expect(listGatewayMethods()).toContain(method);
expect(coreGatewayHandlers).toHaveProperty(method);
expect(resolveLeastPrivilegeOperatorScopesForMethod(method)).toEqual(["operator.admin"]);
expect(authorizeOperatorScopesForMethod(method, ["operator.write"])).toEqual({
allowed: false,
missingScope: "operator.admin",
});
expect(authorizeOperatorScopesForMethod(method, ["operator.admin"])).toEqual({
allowed: true,
});
}
});
});
describe("CLI default operator scopes", () => {

View File

@@ -117,6 +117,13 @@ export const CORE_GATEWAY_METHOD_SPECS: readonly CoreGatewayMethodSpec[] = [
{ name: "skills.upload.commit", scope: "operator.admin" },
{ name: "skills.install", scope: "operator.admin" },
{ name: "skills.update", scope: "operator.admin" },
{ name: "skills.proposals.list", scope: "operator.read" },
{ name: "skills.proposals.inspect", scope: "operator.read" },
{ name: "skills.proposals.create", scope: "operator.admin" },
{ name: "skills.proposals.update", scope: "operator.admin" },
{ name: "skills.proposals.apply", scope: "operator.admin" },
{ name: "skills.proposals.reject", scope: "operator.admin" },
{ name: "skills.proposals.quarantine", scope: "operator.admin" },
{ name: "update.status", scope: "operator.admin" },
{ name: "update.run", scope: "operator.admin", controlPlaneWrite: true },
{ name: "voicewake.get", scope: "operator.read" },

View File

@@ -433,6 +433,13 @@ export const coreGatewayHandlers: GatewayRequestHandlers = {
"skills.skillCard",
"skills.install",
"skills.update",
"skills.proposals.list",
"skills.proposals.inspect",
"skills.proposals.create",
"skills.proposals.update",
"skills.proposals.apply",
"skills.proposals.reject",
"skills.proposals.quarantine",
],
loadHandlers: loadSkillsHandlers,
}),