export function parseConfigValue(raw: string): { value?: unknown; error?: string; } { const trimmed = raw.trim(); if (!trimmed) { return { error: "Missing value." }; } if (trimmed.startsWith("{") || trimmed.startsWith("[")) { try { return { value: JSON.parse(trimmed) }; } catch (err) { return { error: `Invalid JSON: ${String(err)}` }; } } if (trimmed === "true") { return { value: true }; } if (trimmed === "false") { return { value: false }; } if (trimmed === "null") { return { value: null }; } if (/^-?\d+(\.\d+)?$/.test(trimmed)) { const num = Number(trimmed); if (Number.isFinite(num)) { return { value: num }; } } if ( (trimmed.startsWith('"') && trimmed.endsWith('"')) || (trimmed.startsWith("'") && trimmed.endsWith("'")) ) { try { return { value: JSON.parse(trimmed) }; } catch { const unquoted = trimmed.slice(1, -1); return { value: unquoted }; } } return { value: trimmed }; }