mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-08 20:52:58 +00:00
fix: expose skill proposal gateway methods
This commit is contained in:
@@ -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", () => {
|
||||
|
||||
@@ -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" },
|
||||
|
||||
@@ -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,
|
||||
}),
|
||||
|
||||
Reference in New Issue
Block a user