import type { BaseProbeResult } from "openclaw/plugin-sdk/irc"; import type { BlockStreamingCoalesceConfig, DmConfig, DmPolicy, GroupPolicy, GroupToolPolicyBySenderConfig, GroupToolPolicyConfig, MarkdownConfig, OpenClawConfig, } from "openclaw/plugin-sdk/irc"; export type IrcChannelConfig = { requireMention?: boolean; tools?: GroupToolPolicyConfig; toolsBySender?: GroupToolPolicyBySenderConfig; skills?: string[]; enabled?: boolean; allowFrom?: Array; systemPrompt?: string; }; export type IrcNickServConfig = { enabled?: boolean; service?: string; password?: string; passwordFile?: string; register?: boolean; registerEmail?: string; }; export type IrcAccountConfig = { name?: string; enabled?: boolean; /** * Break-glass override: allow nick-only allowlist matching. * Default behavior requires host/user-qualified identities. */ dangerouslyAllowNameMatching?: boolean; host?: string; port?: number; tls?: boolean; nick?: string; username?: string; realname?: string; password?: string; passwordFile?: string; nickserv?: IrcNickServConfig; dmPolicy?: DmPolicy; allowFrom?: Array; defaultTo?: string; groupPolicy?: GroupPolicy; groupAllowFrom?: Array; groups?: Record; channels?: string[]; mentionPatterns?: string[]; markdown?: MarkdownConfig; historyLimit?: number; dmHistoryLimit?: number; dms?: Record; textChunkLimit?: number; chunkMode?: "length" | "newline"; blockStreaming?: boolean; blockStreamingCoalesce?: BlockStreamingCoalesceConfig; responsePrefix?: string; mediaMaxMb?: number; }; export type IrcConfig = IrcAccountConfig & { accounts?: Record; defaultAccount?: string; }; export type CoreConfig = OpenClawConfig & { channels?: OpenClawConfig["channels"] & { irc?: IrcConfig; }; }; export type IrcInboundMessage = { messageId: string; /** Conversation peer id: channel name for groups, sender nick for DMs. */ target: string; /** Raw IRC PRIVMSG target (bot nick for DMs, channel for groups). */ rawTarget?: string; senderNick: string; senderUser?: string; senderHost?: string; text: string; timestamp: number; isGroup: boolean; }; export type IrcProbe = BaseProbeResult & { host: string; port: number; tls: boolean; nick: string; latencyMs?: number; };