mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-18 04:31:10 +00:00
60 lines
1.7 KiB
TypeScript
60 lines
1.7 KiB
TypeScript
import {
|
|
collectSimpleChannelFieldAssignments,
|
|
getChannelSurface,
|
|
type ResolverContext,
|
|
type SecretDefaults,
|
|
type SecretTargetRegistryEntry,
|
|
} from "openclaw/plugin-sdk/security-runtime";
|
|
|
|
export const secretTargetRegistryEntries = [
|
|
{
|
|
id: "channels.bluebubbles.accounts.*.password",
|
|
targetType: "channels.bluebubbles.accounts.*.password",
|
|
configFile: "openclaw.json",
|
|
pathPattern: "channels.bluebubbles.accounts.*.password",
|
|
secretShape: "secret_input",
|
|
expectedResolvedValue: "string",
|
|
includeInPlan: true,
|
|
includeInConfigure: true,
|
|
includeInAudit: true,
|
|
},
|
|
{
|
|
id: "channels.bluebubbles.password",
|
|
targetType: "channels.bluebubbles.password",
|
|
configFile: "openclaw.json",
|
|
pathPattern: "channels.bluebubbles.password",
|
|
secretShape: "secret_input",
|
|
expectedResolvedValue: "string",
|
|
includeInPlan: true,
|
|
includeInConfigure: true,
|
|
includeInAudit: true,
|
|
},
|
|
] satisfies SecretTargetRegistryEntry[];
|
|
|
|
export function collectRuntimeConfigAssignments(params: {
|
|
config: { channels?: Record<string, unknown> };
|
|
defaults: SecretDefaults | undefined;
|
|
context: ResolverContext;
|
|
}): void {
|
|
const resolved = getChannelSurface(params.config, "bluebubbles");
|
|
if (!resolved) {
|
|
return;
|
|
}
|
|
const { channel: bluebubbles, surface } = resolved;
|
|
collectSimpleChannelFieldAssignments({
|
|
channelKey: "bluebubbles",
|
|
field: "password",
|
|
channel: bluebubbles,
|
|
surface,
|
|
defaults: params.defaults,
|
|
context: params.context,
|
|
topInactiveReason: "no enabled account inherits this top-level BlueBubbles password.",
|
|
accountInactiveReason: "BlueBubbles account is disabled.",
|
|
});
|
|
}
|
|
|
|
export const channelSecrets = {
|
|
secretTargetRegistryEntries,
|
|
collectRuntimeConfigAssignments,
|
|
};
|