refactor(plugin-sdk): share auth, routing, and stream/account helpers
This commit is contained in:
@@ -18,6 +18,48 @@ export type ResolveSenderCommandAuthorizationParams = {
|
||||
}) => boolean;
|
||||
};
|
||||
|
||||
export type CommandAuthorizationRuntime = {
|
||||
shouldComputeCommandAuthorized: (rawBody: string, cfg: OpenClawConfig) => boolean;
|
||||
resolveCommandAuthorizedFromAuthorizers: (params: {
|
||||
useAccessGroups: boolean;
|
||||
authorizers: Array<{ configured: boolean; allowed: boolean }>;
|
||||
}) => boolean;
|
||||
};
|
||||
|
||||
export type ResolveSenderCommandAuthorizationWithRuntimeParams = Omit<
|
||||
ResolveSenderCommandAuthorizationParams,
|
||||
"shouldComputeCommandAuthorized" | "resolveCommandAuthorizedFromAuthorizers"
|
||||
> & {
|
||||
runtime: CommandAuthorizationRuntime;
|
||||
};
|
||||
|
||||
export function resolveDirectDmAuthorizationOutcome(params: {
|
||||
isGroup: boolean;
|
||||
dmPolicy: string;
|
||||
senderAllowedForCommands: boolean;
|
||||
}): "disabled" | "unauthorized" | "allowed" {
|
||||
if (params.isGroup) {
|
||||
return "allowed";
|
||||
}
|
||||
if (params.dmPolicy === "disabled") {
|
||||
return "disabled";
|
||||
}
|
||||
if (params.dmPolicy !== "open" && !params.senderAllowedForCommands) {
|
||||
return "unauthorized";
|
||||
}
|
||||
return "allowed";
|
||||
}
|
||||
|
||||
export async function resolveSenderCommandAuthorizationWithRuntime(
|
||||
params: ResolveSenderCommandAuthorizationWithRuntimeParams,
|
||||
): ReturnType<typeof resolveSenderCommandAuthorization> {
|
||||
return resolveSenderCommandAuthorization({
|
||||
...params,
|
||||
shouldComputeCommandAuthorized: params.runtime.shouldComputeCommandAuthorized,
|
||||
resolveCommandAuthorizedFromAuthorizers: params.runtime.resolveCommandAuthorizedFromAuthorizers,
|
||||
});
|
||||
}
|
||||
|
||||
export async function resolveSenderCommandAuthorization(
|
||||
params: ResolveSenderCommandAuthorizationParams,
|
||||
): Promise<{
|
||||
|
||||
Reference in New Issue
Block a user