@eigenpal/docx-editor-core/prosemirror/utils/extractTrackedChanges
Walk the PM doc once and derive (a) the tracked-change list and (b) a comment→revision overlap map for threading. Adjacent entries from the same revision are merged; deletion+insertion pairs from the same author/date become a single `replacement` entry (matches Word's UX for replace ops).
Pure function — no React, no Vue, no side effects. Single O(N) walk over text nodes. Lifted from packages/react/src/hooks/useTrackedChanges.ts so both adapters can call it directly.
Tagged `@internal` post-1.0 cut. Both adapters re-export this through their own composables (`useTrackedChanges`); consumers should prefer those. The subpath stays in `package.json` `exports` for back-compat; expect it to move behind a public surface in a future major.