Adapt any HistoryEntry[] (Grid 3, Snap, OBF/OBFL logs, ...) into the generic
utterance stream consumed by the linguistic-competence engine
(analyzeTimeline). Each occurrence of each phrase becomes one utterance,
timestamped by its occurrence time. This keeps the competence metrics fully
source-agnostic: anything the library can read as history can be analysed.
Adapt any
HistoryEntry[](Grid 3, Snap, OBF/OBFL logs, ...) into the generic utterance stream consumed by the linguistic-competence engine (analyzeTimeline). Each occurrence of each phrase becomes one utterance, timestamped by its occurrence time. This keeps the competence metrics fully source-agnostic: anything the library can read as history can be analysed.