Pairing-code delivery was hardwired to Discord DM (notifyBotToken +
adminUserId required). Make the provider config-selectable.
- core/config.ts: add notifyProvider ("discord"|"fabric", default
"discord" for back-compat); discord fields required only for discord;
add fabric block (centerApiBase/apiKey/guildNodeId/channelId) required
only for fabric
- notifications/types.ts: neutral PairingNotificationService interface
(DiscordNotificationService kept as back-compat alias)
- notifications/fabric.ts: post the pairing message to a Fabric channel
(agent/login -> guild token -> POST messages); self-contained, no
Fabric plugin dependency
- notifications/factory.ts: select provider from config
- core/runtime.ts: wire via factory
- openclaw.plugin.json: notifyProvider enum + fabric object; drop
notifyBotToken/adminUserId from required (conditional in code)
- tests: fabric notifier + provider-selection config (80 passing)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
19 lines
613 B
TypeScript
19 lines
613 B
TypeScript
/**
|
|
* Yonexus Server - Pairing notification provider interface.
|
|
*
|
|
* A provider delivers the out-of-band pairing code to a human admin.
|
|
* Implementations: Discord DM (`./discord.ts`), Fabric channel
|
|
* (`./fabric.ts`). The provider is selected by config (see
|
|
* `core/config.ts` `notifyProvider`).
|
|
*/
|
|
|
|
import type { PairingRequest } from "../services/pairing.js";
|
|
|
|
export interface PairingNotificationService {
|
|
/**
|
|
* Send a pairing code notification to the admin.
|
|
* @returns Whether the notification was sent successfully.
|
|
*/
|
|
sendPairingNotification(request: PairingRequest): Promise<boolean>;
|
|
}
|