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
Captures all available JSONL fields for rich search capabilities.
New fields in exchanges table:
- parent_uuid - Conversation tree structure
- is_sidechain - Distinguish main thread vs subagent conversations
- session_id, cwd, git_branch, claude_version - Session context
- thinking_level, thinking_disabled, thinking_triggers - Thinking metadata
New tool_calls table:
- Tracks every tool use (Read, Edit, Bash, etc.)
- Searchable by tool name and parameters
- Enables queries like "times I edited package.json"
New exclusion: Skip conversations containing "Only use NO_INSIGHTS_FOUND"
Migration:
- Automatic schema migration for existing databases
- Runs on first access after upgrade
- Idempotent - safe to run multiple times
Captured tool usage so far: 1,674 tool calls across Bash, Edit, Read, etc.
Tests: 67/67 passing including migration verification