When auto-compaction fails (e.g., quota exceeded), emit the error via the auto_compaction_end event instead of throwing. The UI now displays the error message, allowing users to take action (switch models, wait for quota reset, etc.) instead of crashing. fixes #792