chore(cli): polish provider onboarding notes

This commit is contained in:
Peter Steinberger
2026-01-07 22:16:53 +01:00
parent 322c5dd936
commit e70ff671f5

View File

@@ -53,13 +53,12 @@ async function noteProviderPrimer(prompter: WizardPrompter): Promise<void> {
'Public DMs require dmPolicy="open" + allowFrom=["*"].', 'Public DMs require dmPolicy="open" + allowFrom=["*"].',
"Docs: https://docs.clawd.bot/start/pairing", "Docs: https://docs.clawd.bot/start/pairing",
"", "",
"WhatsApp: links via WhatsApp Web (scan QR), stores creds for future sends.", "Telegram: easiest start — register a bot with @BotFather, paste token, go.",
"WhatsApp: dedicated second number recommended; primary number OK (self-chat).", "WhatsApp: works with your own number; recommend a separate phone + eSIM.",
"Telegram: Bot API (token from @BotFather), replies via your bot.", "Discord: very well supported right now.",
"Discord: Bot token from Discord Developer Portal; invite bot to your server.", "Slack: supported (Socket Mode).",
"Slack: Socket Mode app token + bot token, DMs via App Home Messages tab.", "Signal: signal-cli linked device; more setup (if you want easy, hop on Discord).",
"Signal: signal-cli as a linked device; separate number recommended.", "iMessage: this is still a work in progress.",
"iMessage: local imsg CLI; separate Apple ID recommended only on a separate Mac.",
].join("\n"), ].join("\n"),
"How providers work", "How providers work",
); );
@@ -609,8 +608,8 @@ export async function setupProviders(
whatsappAccountId === DEFAULT_ACCOUNT_ID ? "default" : whatsappAccountId; whatsappAccountId === DEFAULT_ACCOUNT_ID ? "default" : whatsappAccountId;
await prompter.note( await prompter.note(
[ [
`WhatsApp (${waAccountLabel}): ${whatsappLinked ? "linked" : "not linked"}`,
`Telegram: ${telegramConfigured ? "configured" : "needs token"}`, `Telegram: ${telegramConfigured ? "configured" : "needs token"}`,
`WhatsApp (${waAccountLabel}): ${whatsappLinked ? "linked" : "not linked"}`,
`Discord: ${discordConfigured ? "configured" : "needs token"}`, `Discord: ${discordConfigured ? "configured" : "needs token"}`,
`Slack: ${slackConfigured ? "configured" : "needs tokens"}`, `Slack: ${slackConfigured ? "configured" : "needs tokens"}`,
`Signal: ${signalConfigured ? "configured" : "needs setup"}`, `Signal: ${signalConfigured ? "configured" : "needs setup"}`,
@@ -632,16 +631,18 @@ export async function setupProviders(
const selection = (await prompter.multiselect({ const selection = (await prompter.multiselect({
message: "Select providers", message: "Select providers",
options: [ options: [
{
value: "telegram",
label: "Telegram (Bot API)",
hint: telegramConfigured
? "easy start · configured"
: "easy start · needs token",
},
{ {
value: "whatsapp", value: "whatsapp",
label: "WhatsApp (QR link)", label: "WhatsApp (QR link)",
hint: whatsappLinked ? "linked" : "not linked", hint: whatsappLinked ? "linked" : "not linked",
}, },
{
value: "telegram",
label: "Telegram (Bot API)",
hint: telegramConfigured ? "configured" : "needs token",
},
{ {
value: "discord", value: "discord",
label: "Discord (Bot API)", label: "Discord (Bot API)",
@@ -667,6 +668,27 @@ export async function setupProviders(
options?.onSelection?.(selection); options?.onSelection?.(selection);
const selectionNotes: Record<ProviderChoice, string> = {
telegram:
"Telegram — easiest start: register a bot with @BotFather and paste the token. Docs: https://docs.clawd.bot/telegram",
whatsapp:
"WhatsApp — works with your own number; recommend a separate phone + eSIM. Docs: https://docs.clawd.bot/whatsapp",
discord:
"Discord — very well supported right now. Docs: https://docs.clawd.bot/discord",
slack:
"Slack — supported (Socket Mode). Docs: https://docs.clawd.bot/slack",
signal:
"Signal — signal-cli linked device; more setup (if you want easy, hop on Discord). Docs: https://docs.clawd.bot/signal",
imessage:
"iMessage — this is still a work in progress. Docs: https://docs.clawd.bot/imessage",
};
const selectedLines = selection
.map((provider) => selectionNotes[provider])
.filter(Boolean);
if (selectedLines.length > 0) {
await prompter.note(selectedLines.join("\n"), "Selected providers");
}
let next = cfg; let next = cfg;
if (selection.includes("whatsapp")) { if (selection.includes("whatsapp")) {
@@ -1084,6 +1106,7 @@ export async function setupProviders(
await prompter.note( await prompter.note(
[ [
"This is still a work in progress.",
"Ensure Clawdbot has Full Disk Access to Messages DB.", "Ensure Clawdbot has Full Disk Access to Messages DB.",
"Grant Automation permission for Messages when prompted.", "Grant Automation permission for Messages when prompted.",
"List chats with: imsg chats --limit 20", "List chats with: imsg chats --limit 20",