Isolated agent sessions load plugins fresh with storage=null, causing
the tool factory to return null and no tools to be available. The agent
then outputs XML-like text instead of making proper tool calls.
Switch cron jobs to use systemEvent payload which runs in the main
gateway process where storage IS initialized. The message_received
hook already handles [system] checkins:trigger: and checkins:cleanup:
events.
The isolated cron agent sessions don't fire message_received hooks,
so the previous approach of intercepting [system] checkins:trigger
messages didn't work. This adds a checkins_trigger tool that the
cron agent calls directly to trigger check-ins.
Also adds checkins_help tool for user guidance.