Project session JSONL: 13+ record types, variable type placement, no schema/version marker — request for a documented record-type enum
Summary
We built fail-closed analytics over Claude Code project session files (~/.claude/projects/<encoded-path>/<uuid>.jsonl; 128 sessions / 7 days in a multi-vendor orchestration). Observations from a tokenized structural specimen (all values replaced with type tokens; key sets and type placement preserved exactly):
https://github.com/oguzhanpisgin/ai-session-analytics/tree/main/specimens/claude
Findings
- 13+ record types beyond
user/assistant:ai-title,atis-latch,last-prompt,queue-operation,custom-title,mode,frame-link,bridge-session,pr-link,artifact-comment-monitor,artifact-autoreact-ledger,agent-setting,attachment(counts from a 7-day sample in the linked specimen README). typeplacement varies: message lines carrytypemid-object (afterparentUuid,isSidechain, ...), while metadata lines carry it first. Type-first regex parsing silently misses all message lines — micro-benchmark here:
https://github.com/anthropics/claude-code — see benchmarks/claude-record-mix in the analytics repo above (2/4 lines recognized on a 4-line file).
- No schema/version marker anywhere in the file.
Request
A documented, versioned record-type enum for the project JSONL format (type names + key sets + placement rules, with a version field). This would let third-party analytics detect format evolution instead of silently mis-parsing.