diff --git a/src/commands/onboard-providers.ts b/src/commands/onboard-providers.ts index e07f900e0..56e7d10e2 100644 --- a/src/commands/onboard-providers.ts +++ b/src/commands/onboard-providers.ts @@ -287,17 +287,22 @@ async function maybeConfigureDmPolicies(params: { if (!wants) return params.cfg; let cfg = params.cfg; - const selectPolicy = async (label: string, keyHint: string) => { + const selectPolicy = async (params: { + label: string; + provider: ProviderChoice; + policyKey: string; + allowFromKey: string; + }) => { await prompter.note( [ "Default: pairing (unknown DMs get a pairing code).", - `Approve: clawdbot pairing approve --provider ${label.toLowerCase()} `, - `Public DMs: ${keyHint}="open" + allowFrom includes "*".`, + `Approve: clawdbot pairing approve --provider ${params.provider} `, + `Public DMs: ${params.policyKey}="open" + ${params.allowFromKey} includes "*".`, ].join("\n"), - `${label} DM access`, + `${params.label} DM access`, ); return (await prompter.select({ - message: `${label} DM policy`, + message: `${params.label} DM policy`, options: [ { value: "pairing", label: "Pairing (recommended)" }, { value: "open", label: "Open (public inbound DMs)" }, @@ -308,27 +313,52 @@ async function maybeConfigureDmPolicies(params: { if (selection.includes("telegram")) { const current = cfg.telegram?.dmPolicy ?? "pairing"; - const policy = await selectPolicy("Telegram", "telegram.dmPolicy"); + const policy = await selectPolicy({ + label: "Telegram", + provider: "telegram", + policyKey: "telegram.dmPolicy", + allowFromKey: "telegram.allowFrom", + }); if (policy !== current) cfg = setTelegramDmPolicy(cfg, policy); } if (selection.includes("discord")) { const current = cfg.discord?.dm?.policy ?? "pairing"; - const policy = await selectPolicy("Discord", "discord.dm.policy"); + const policy = await selectPolicy({ + label: "Discord", + provider: "discord", + policyKey: "discord.dm.policy", + allowFromKey: "discord.dm.allowFrom", + }); if (policy !== current) cfg = setDiscordDmPolicy(cfg, policy); } if (selection.includes("slack")) { const current = cfg.slack?.dm?.policy ?? "pairing"; - const policy = await selectPolicy("Slack", "slack.dm.policy"); + const policy = await selectPolicy({ + label: "Slack", + provider: "slack", + policyKey: "slack.dm.policy", + allowFromKey: "slack.dm.allowFrom", + }); if (policy !== current) cfg = setSlackDmPolicy(cfg, policy); } if (selection.includes("signal")) { const current = cfg.signal?.dmPolicy ?? "pairing"; - const policy = await selectPolicy("Signal", "signal.dmPolicy"); + const policy = await selectPolicy({ + label: "Signal", + provider: "signal", + policyKey: "signal.dmPolicy", + allowFromKey: "signal.allowFrom", + }); if (policy !== current) cfg = setSignalDmPolicy(cfg, policy); } if (selection.includes("imessage")) { const current = cfg.imessage?.dmPolicy ?? "pairing"; - const policy = await selectPolicy("iMessage", "imessage.dmPolicy"); + const policy = await selectPolicy({ + label: "iMessage", + provider: "imessage", + policyKey: "imessage.dmPolicy", + allowFromKey: "imessage.allowFrom", + }); if (policy !== current) cfg = setIMessageDmPolicy(cfg, policy); } return cfg;