Per-file ordered sequence of agent edit snapshots.
Records a snapshot after each tool-driven file change so the user can scrub through the agent's edit history. Each entry stores the file content after that edit, keyed by tool call ID.
Cumulative hunks are the per-path review authority. They represent the first pre-agent content to latest post-image without storing another full baseline copy.
Summary
Types
@type file_summary() :: %{ path: String.t(), entry_count: pos_integer(), lines_added: non_neg_integer(), lines_removed: non_neg_integer(), review_status: review_status() }
@type review_status() :: :pending | :reviewing
@type t() :: %MingaEditor.Agent.EditTimeline{ cumulative_hunks: %{required(String.t()) => [Minga.Core.Diff.hunk()]}, entries: %{required(String.t()) => [MingaEditor.Agent.EditTimeline.Entry.t()]}, viewing: %{required(String.t()) => non_neg_integer() | nil} }
Functions
@spec content_at(t(), String.t(), non_neg_integer()) :: {:ok, String.t()} | :error
@spec cumulative_hunks(t(), String.t()) :: [Minga.Core.Diff.hunk()]
@spec entry_count(t(), String.t()) :: non_neg_integer()
@spec file_summaries(t()) :: [file_summary()]
@spec new() :: t()
@spec set_viewing(t(), String.t(), non_neg_integer()) :: t()
@spec viewing_index(t(), String.t()) :: non_neg_integer() | nil