Fitur moop (Model Option) untuk TUI: Pindahkan penyimpanan model dari config yaml ke database sqlite. db_path default "~/.config/hendrik/moop.sqlite3" dan bisa di ubah di yaml. Jika db moop tidak ada di db_path, maka create baru. referensi query ada di `plan/moop.sql` dan referensi diagram plantuml ada di `plan/moop.puml`. List model yang sudah ada di default-config.yaml kalau mau di bersihin silahkan aja. Default list model-nya kosong aja. Tipe-nya untuk saat ini baru `llm`, `embedding`, `imagegen`, `imagevision` aja. Apa aja yang di migrasikan dari config yaml ke sqlite: - LLM - Image Vision - Image Generate - RAG (Embedding) Use case: - Bisa setting Providers, Model name, dan API Keys yang di bundle dalam 1 set - Bisa milih default model set pada tipe tertentu. sekarang baru ada `llm`, `embedding`, `imagegen`, `imagevision` aja. Kalau default dari type tersebut kosong, masukin set+type pertama kali artinya otomatis default, supaya ga kosong. - Nampilin opsi model set yang ingin dipakai untuk switch model yang dipakai AI Agent Tujuan utama: - Bisa switch alternative API Key, Provider secara otomatis kalau gagal connect (bergantung pada priority) berdasarkan model set yang di gunakan. Kapan itu switch? - Koneksi gagal - timeout - Server error - rate limit - auth gagal - 404 Apa prioritas auto switch-nya di model set: - Key. setelah semua key gabisa baru deh: - Model provider-nya Aturan-aturan lainnya: - Pengelolaan setting add edit delete untuk Providers dan Opsi model set-nya ada di TUI - Service (XMPP, dan Telegram) pakai Default yang di sqlite itu. - 1 set bisa multi-type (apalagi jika model-nya memungkinkan dan support banyak type) - jika error 401/403 maka coba key berikutnya dulu (rotasi key) - jika error lain (koneksi/timeout/5xx/429/404) maka langsung pindah ke model/provider berikutnya. skip sisa key, biar tidak timeout berulang di api yang sama. Karena imagevision bisa termasuk di llm umum atau bisa tidak termasuk di llm umum, ekspektasi alur untuk imagevision sebagai berikut: - pas panggil tools vision (imagevision model) - result dapat dari tools tanpa fallback dari model imagevision - switch ke model llm umum - llm memberi fallback Jika set model `llm` belum ada di default, berikan pesan instruksi untuk setting model terlebih dahulu sebelum menggunakan.