Implements #137 - Agent timeout handling.
Changes:
- Add TASK_TIMEOUT_HOURS config (default: 1 hour)
- Update queue item to track opencode_session_id and pid
- Add check_task_timeouts() function that:
- Checks notified tasks against timeout threshold
- Kills process if exceeded
- Marks session as 'timeout' state
- Integrate timeout check into queue daemon loop
Timeout behavior:
- Task is marked 'notified' when PM receives it
- If not completed within TASK_TIMEOUT_HOURS, task is killed
- Queue item marked 'error', session marked 'timeout'