import type { KolCardConfig } from "@geo/shared-types"; const DEFAULT_ALLOW_WEB_SEARCH = false; const DEFAULT_ALLOW_USER_KNOWLEDGE = true; function asRecord(value: unknown): Record { if (!value || typeof value !== "object" || Array.isArray(value)) { return {}; } return value as Record; } function booleanFromUnknown(value: unknown): boolean | undefined { return typeof value === "boolean" ? value : undefined; } export function parseKolCardConfig(value: unknown): Required> { const record = asRecord(value); return { allow_web_search: booleanFromUnknown(record.allow_web_search) ?? DEFAULT_ALLOW_WEB_SEARCH, allow_user_knowledge: booleanFromUnknown(record.allow_user_knowledge) ?? DEFAULT_ALLOW_USER_KNOWLEDGE, }; } export function mergeKolCardConfig(base: unknown, overrides: KolCardConfig): KolCardConfig { const record = asRecord(base); const parsed = parseKolCardConfig(record); return { ...record, ...overrides, allow_web_search: booleanFromUnknown(overrides.allow_web_search) ?? parsed.allow_web_search, allow_user_knowledge: booleanFromUnknown(overrides.allow_user_knowledge) ?? parsed.allow_user_knowledge, }; }