type UnsupportedSecretRefConfigCandidate = { path: string; value: unknown; }; import { hasAnyWhatsAppAuth } from "./src/accounts.js"; function isRecord(value: unknown): value is Record { return typeof value === "object" && value !== null; } export const unsupportedSecretRefSurfacePatterns = [ "channels.whatsapp.creds.json", "channels.whatsapp.accounts.*.creds.json", ] as const; export const defaultMarkdownTableMode = "bullets"; export { resolveLegacyGroupSessionKey } from "./src/group-session-contract.js"; export function hasPersistedAuthState(params: { cfg: import("openclaw/plugin-sdk/config-runtime").OpenClawConfig; }): boolean { return hasAnyWhatsAppAuth(params.cfg); } export function collectUnsupportedSecretRefConfigCandidates( raw: unknown, ): UnsupportedSecretRefConfigCandidate[] { if (!isRecord(raw)) { return []; } if (!isRecord(raw.channels) || !isRecord(raw.channels.whatsapp)) { return []; } const candidates: UnsupportedSecretRefConfigCandidate[] = []; const whatsapp = raw.channels.whatsapp; const creds = isRecord(whatsapp.creds) ? whatsapp.creds : null; if (creds) { candidates.push({ path: "channels.whatsapp.creds.json", value: creds.json, }); } const accounts = isRecord(whatsapp.accounts) ? whatsapp.accounts : null; if (!accounts) { return candidates; } for (const [accountId, account] of Object.entries(accounts)) { if (!isRecord(account) || !isRecord(account.creds)) { continue; } candidates.push({ path: `channels.whatsapp.accounts.${accountId}.creds.json`, value: account.creds.json, }); } return candidates; }