UNPKG

@gguf/claw

Version:

Multi-channel AI gateway with extensible messaging integrations

54 lines (49 loc) 1.26 kB
import { resolveIrcAccount } from "./accounts.js"; import { connectIrcClient } from "./client.js"; import { buildIrcConnectOptions } from "./connect-options.js"; import type { CoreConfig, IrcProbe } from "./types.js"; function formatError(err: unknown): string { if (err instanceof Error) { return err.message; } return typeof err === "string" ? err : JSON.stringify(err); } export async function probeIrc( cfg: CoreConfig, opts?: { accountId?: string; timeoutMs?: number }, ): Promise<IrcProbe> { const account = resolveIrcAccount({ cfg, accountId: opts?.accountId }); const base: IrcProbe = { ok: false, host: account.host, port: account.port, tls: account.tls, nick: account.nick, }; if (!account.configured) { return { ...base, error: "missing host or nick", }; } const started = Date.now(); try { const client = await connectIrcClient( buildIrcConnectOptions(account, { connectTimeoutMs: opts?.timeoutMs ?? 8000, }), ); const elapsed = Date.now() - started; client.quit("probe"); return { ...base, ok: true, latencyMs: elapsed, }; } catch (err) { return { ...base, error: formatError(err), }; } }