One timeline event from a job's timeline.jsonl.
All typed fields are optional because the daemon may emit partial
events (e.g. without text); extra carries the verbatim decoded
line so future daemon fields survive without a wrapper update. See
ClaudeWrapper.Jobs.