Adds Cursor (live transcripts + opt-in state.vscdb backfill) and opencode (DB->JSONL export) as harnesses, following the existing Codex pattern. opencode summarization is fixed to route via transcript text instead of a doomed claude --resume, and hasConversationContent recognizes opencode_message lines. Harness union is 'claude'|'codex'|'cursor'|'opencode'. Also pins conversation timestamps to en-US/UTC in every renderer (#130) and restores valid YAML in the search agent frontmatter (#153).
Co-authored-by: vicnaum <vicnaum@users.noreply.github.com>
Co-authored-by: slandau3 <slandau3@users.noreply.github.com>
Co-authored-by: arimu1 <arimu1@users.noreply.github.com>
Claude-Session: https://claude.ai/code/session_0112vdwZphiWzfCYfaXMes4C