import type { ChannelStatusIssue } from "../channels/plugins/types.js"; export function createDefaultChannelRuntimeState>( accountId: string, extra?: T, ): { accountId: string; running: false; lastStartAt: null; lastStopAt: null; lastError: null; } & T { return { accountId, running: false, lastStartAt: null, lastStopAt: null, lastError: null, ...(extra ?? ({} as T)), }; } export function buildBaseChannelStatusSummary(snapshot: { configured?: boolean | null; running?: boolean | null; lastStartAt?: number | null; lastStopAt?: number | null; lastError?: string | null; }) { return { configured: snapshot.configured ?? false, running: snapshot.running ?? false, lastStartAt: snapshot.lastStartAt ?? null, lastStopAt: snapshot.lastStopAt ?? null, lastError: snapshot.lastError ?? null, }; } export function collectStatusIssuesFromLastError( channel: string, accounts: Array<{ accountId: string; lastError?: unknown }>, ): ChannelStatusIssue[] { return accounts.flatMap((account) => { const lastError = typeof account.lastError === "string" ? account.lastError.trim() : ""; if (!lastError) { return []; } return [ { channel, accountId: account.accountId, kind: "runtime", message: `Channel error: ${lastError}`, }, ]; }); }