import { boolOr, defineSection, isObj, posNumOr } from "../schema.ts"; export interface CollapseConfig { /** Master toggle. `false` = never collapse any tool. Default `true`. */ enabled: boolean; /** Seconds before a tool card collapses. Default `10`. */ delaySec: number; /** Per-tool overrides. Missing key follows `enabled`. */ tools: Partial>; } const DEFAULTS: Readonly = { enabled: true, delaySec: 10, tools: {}, }; export const collapseSection = defineSection<"collapse", CollapseConfig>({ key: "collapse", defaults: DEFAULTS, parse(raw) { if (!isObj(raw)) return { ...DEFAULTS, tools: {} }; const tools: Partial> = {}; if (isObj(raw.tools)) { for (const [k, v] of Object.entries(raw.tools)) { if (typeof v === "boolean") tools[k] = v; } } return { enabled: boolOr(raw.enabled, DEFAULTS.enabled), delaySec: posNumOr(raw.delaySec, DEFAULTS.delaySec), tools, }; }, });