import { resolveThreadBindingIdleTimeoutMs, resolveThreadBindingMaxAgeMs, resolveThreadBindingsEnabled, } from "../../channels/thread-bindings-policy.js"; import type { OpenClawConfig } from "../../config/config.js"; import { normalizeAccountId } from "../../routing/session-key.js"; export { resolveThreadBindingIdleTimeoutMs, resolveThreadBindingMaxAgeMs, resolveThreadBindingsEnabled, }; export function resolveDiscordThreadBindingIdleTimeoutMs(params: { cfg: OpenClawConfig; accountId?: string; }): number { const accountId = normalizeAccountId(params.accountId); const root = params.cfg.channels?.discord?.threadBindings; const account = params.cfg.channels?.discord?.accounts?.[accountId]?.threadBindings; return resolveThreadBindingIdleTimeoutMs({ channelIdleHoursRaw: account?.idleHours ?? root?.idleHours, sessionIdleHoursRaw: params.cfg.session?.threadBindings?.idleHours, }); } export function resolveDiscordThreadBindingMaxAgeMs(params: { cfg: OpenClawConfig; accountId?: string; }): number { const accountId = normalizeAccountId(params.accountId); const root = params.cfg.channels?.discord?.threadBindings; const account = params.cfg.channels?.discord?.accounts?.[accountId]?.threadBindings; return resolveThreadBindingMaxAgeMs({ channelMaxAgeHoursRaw: account?.maxAgeHours ?? root?.maxAgeHours, sessionMaxAgeHoursRaw: params.cfg.session?.threadBindings?.maxAgeHours, }); }