// retoor <retoor@molodetz.nl>
export function uuid4() {
  if (globalThis.crypto && typeof crypto.randomUUID === "function") {
    return crypto.randomUUID();
  }
  const bytes = new Uint8Array(16);
  globalThis.crypto.getRandomValues(bytes);
  bytes[6] = (bytes[6] & 0x0f) | 0x40;
  bytes[8] = (bytes[8] & 0x3f) | 0x80;
  const hex = [...bytes].map((b) => b.toString(16).padStart(2, "0"));
  return (
    hex.slice(0, 4).join("") +
    "-" +
    hex.slice(4, 6).join("") +
    "-" +
    hex.slice(6, 8).join("") +
    "-" +
    hex.slice(8, 10).join("") +
    "-" +
    hex.slice(10, 16).join("")
  );
}

export const defaults = {
  endpoint: "/devii/clippy/ai/chat",
  model: "molodetz-clippy",
  temperature: 0.7,
  maxIterations: 8,
  tts: false,
};

export function resolveConfig(config) {
  const resolved = { ...defaults, ...(config || {}) };
  if (!resolved.apiKey) resolved.apiKey = uuid4();
  return resolved;
}
