export interface PackageSecretField { key: string; labelKey: string; placeholderKey: string; } export interface PackageDef { id: string; name: string; descriptionKey: string; requiresSecrets: boolean; secrets?: PackageSecretField[]; instructionsKey?: string; disclaimerKey?: string; category: "channel" | "skill"; } export const PACKAGE_CATALOG: PackageDef[] = [ { id: "telegram", name: "Telegram", descriptionKey: "packages.telegram.description", requiresSecrets: true, secrets: [ { key: "bot-token", labelKey: "packages.telegram.botTokenLabel", placeholderKey: "packages.telegram.botTokenPlaceholder", }, ], instructionsKey: "packages.telegram.instructions", disclaimerKey: "packages.telegram.disclaimer", category: "channel", }, { id: "discord", name: "Discord", descriptionKey: "packages.discord.description", requiresSecrets: true, secrets: [ { key: "bot-token", labelKey: "packages.discord.botTokenLabel", placeholderKey: "packages.discord.botTokenPlaceholder", }, ], instructionsKey: "packages.discord.instructions", disclaimerKey: "packages.discord.disclaimer", category: "channel", }, { id: "email", name: "Email", descriptionKey: "packages.email.description", requiresSecrets: true, secrets: [ { key: "smtp-host", labelKey: "packages.email.smtpHostLabel", placeholderKey: "packages.email.smtpHostPlaceholder" }, { key: "smtp-user", labelKey: "packages.email.smtpUserLabel", placeholderKey: "packages.email.smtpUserPlaceholder" }, { key: "smtp-password", labelKey: "packages.email.smtpPasswordLabel", placeholderKey: "packages.email.smtpPasswordPlaceholder" }, { key: "imap-host", labelKey: "packages.email.imapHostLabel", placeholderKey: "packages.email.imapHostPlaceholder" }, ], instructionsKey: "packages.email.instructions", disclaimerKey: "packages.email.disclaimer", category: "channel", }, { id: "web-search", name: "Web Search", descriptionKey: "packages.webSearch.description", requiresSecrets: false, category: "skill", }, { id: "document-processing", name: "Document Processing", descriptionKey: "packages.documentProcessing.description", requiresSecrets: false, category: "skill", }, ]; export function getPackageDef(id: string): PackageDef | undefined { return PACKAGE_CATALOG.find((p) => p.id === id); }