LLM sometimes returns null instead of {} for action_params when an
action doesn't require parameters (e.g., ["Cultivate", null]). This
caused AttributeError when calling .items() on None.
Changes:
- Add defensive check in ai.py to convert null to {}
- Update prompt to explicitly require {} instead of null