{"version":3,"sources":["../src/hooks/useSettings.ts"],"names":["useState","useCallback","useEffect"],"mappings":"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","file":"chunk-JUS3TGYD.cjs","sourcesContent":["import { useState, useCallback, useEffect } from 'react'\nimport type { Settings } from '../types/index'\n\nconst KEY = 'careless-v2-settings'\n\nexport const PROVIDER_DEFAULTS: Record<string, { model: string; maxTokens: number }> = {\n  anthropic: { model: 'claude-opus-4-7', maxTokens: 8096 },\n  openai: { model: 'gpt-5.5-2026-04-23', maxTokens: 8096 },\n  google: { model: 'gemini-2.5-flash', maxTokens: 8096 },\n  bedrock: { model: 'global.anthropic.claude-opus-4-7', maxTokens: 60000 },\n  webllm: { model: 'Qwen2.5-0.5B-Instruct-q4f16_1-MLC', maxTokens: 4096 },\n}\n\nconst DEFAULTS: Settings = {\n  provider: 'anthropic',\n  model: PROVIDER_DEFAULTS.anthropic.model,\n  maxTokens: PROVIDER_DEFAULTS.anthropic.maxTokens,\n  apiKey: '',\n  fontSize: 18,\n  debounceMs: 0,\n  theme: 'dark',\n  enableVision: true,\n  enableMesh: true,\n  enableMemory: true,\n  enableTools: true,\n  bedrockRegion: 'us-west-2',\n}\n\nexport function useSettings() {\n  const [settings, setSettings] = useState<Settings>(() => {\n    try {\n      const raw = localStorage.getItem(KEY)\n      return raw ? { ...DEFAULTS, ...JSON.parse(raw) } : DEFAULTS\n    } catch { return DEFAULTS }\n  })\n\n  const updateSettings = useCallback((patch: Partial<Settings>) => {\n    setSettings(prev => {\n      let next = { ...prev, ...patch }\n\n      // Auto-flip model + maxTokens when provider changes\n      if (patch.provider && patch.provider !== prev.provider) {\n        const def = PROVIDER_DEFAULTS[patch.provider]\n        if (def) {\n          const prevDef = PROVIDER_DEFAULTS[prev.provider]\n          // If user is on a provider-default model, swap to new provider's default.\n          if (!prev.model || prev.model === prevDef?.model) {\n            next.model = def.model\n          }\n          // Bedrock: enforce 60k floor. Others: swap default if user hadn't customized.\n          if (patch.provider === 'bedrock') {\n            next.maxTokens = Math.max(next.maxTokens ?? 0, def.maxTokens)\n          } else if (!next.maxTokens || next.maxTokens === prevDef?.maxTokens) {\n            next.maxTokens = def.maxTokens\n          }\n        }\n      }\n\n      try { localStorage.setItem(KEY, JSON.stringify(next)) } catch {}\n      return next\n    })\n  }, [])\n\n  useEffect(() => {\n    const onStorage = (e: StorageEvent) => {\n      if (e.key === KEY && e.newValue) {\n        try { setSettings({ ...DEFAULTS, ...JSON.parse(e.newValue) }) } catch {}\n      }\n    }\n    window.addEventListener('storage', onStorage)\n    return () => window.removeEventListener('storage', onStorage)\n  }, [])\n\n  return { settings, updateSettings }\n}\n"]}