refactor: replace panics with proper error handling
- Replace expect() with ok_or_else() and descriptive errors
- Replace panic!() with anyhow::bail()
- Use per-mode LLM config (planning_llm, ralph_llm)
- Provide helpful error messages for missing configs
- More robust error handling for unsupported providers
- Update new() methods to return Result
- Replace expect("Task should exist") with context()
Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>