Files
openclaw/src/infra/node-pairing-authz.ts
2026-05-01 23:41:57 +01:00

23 lines
889 B
TypeScript

import { NODE_SYSTEM_RUN_COMMANDS } from "./node-commands.js";
export type NodeApprovalScope = "operator.pairing" | "operator.write" | "operator.admin";
const OPERATOR_PAIRING_SCOPE: NodeApprovalScope = "operator.pairing";
const OPERATOR_WRITE_SCOPE: NodeApprovalScope = "operator.write";
const OPERATOR_ADMIN_SCOPE: NodeApprovalScope = "operator.admin";
export function resolveNodePairApprovalScopes(commands: unknown): NodeApprovalScope[] {
const normalized = Array.isArray(commands)
? commands.filter((command): command is string => typeof command === "string")
: [];
if (
normalized.some((command) => NODE_SYSTEM_RUN_COMMANDS.some((allowed) => allowed === command))
) {
return [OPERATOR_PAIRING_SCOPE, OPERATOR_ADMIN_SCOPE];
}
if (normalized.length > 0) {
return [OPERATOR_PAIRING_SCOPE, OPERATOR_WRITE_SCOPE];
}
return [OPERATOR_PAIRING_SCOPE];
}