* bot will not automatically download video from youtube or load it from cache. It will fetch video info first, then suggest to download or get video from cache (with retry options)
* some rewriting in sending/editing/replying to messages
Support OLLAMA_IMAGE_MODEL and new OLLAMA_THINK_MODEL (both default to OLLAMA_MODEL)
Add /ollamathink command; validate thinking capability; disable image-analysis flow in think mode
Make /ollama-get-model show Text/Image/Think blocks only when models differ
Add /ytdl (/youtube) command + auto-detect YouTube URLs in messages
Cache downloaded videos to data/video and schedule daily cleanup
Move photo storage from data/temp to data/photo; improve env boolean parsing via ifTrue
Update deps (youtubei.js, puppeteer*) and TS config (allowJs, allowSyntheticDefaultImports)
Stop reading image files inside gemini/mistral commands; use pre-encoded image data from message parts
Rework loadImagesIfExists / loadImagesFromFileIds to return cached file_unique_ids and download only missing sizes
Encode cached images to base64 when assembling the reply chain
Make getPhotoMaxSize synchronous (returns PhotoSize), and map to URL only when needed
Await MessageStore.put / UserStore.put and prefetch single-image downloads on message receipt
- make MessageStore.put() return StoredMessage and allow collectReplyChainText() to work with StoredMessage
- move muted users + answers loading into Environment (add Answers model + GEMINI_IMAGE_MODEL)
- extract message handling into processNewMessage() and add media-group (album) caching/downloading by unique_file_id
- for Ollama: check model capabilities before sending images; use replyToMessage helper consistently
- add /geminiGenImage command stub for Gemini image generation