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.
Baselines (the content before the first edit) are stored separately so the timeline can show the full range from "before agent touched the file" to the current state.
Summary
Types
@type t() :: %MingaEditor.Agent.EditTimeline{ baselines: %{required(String.t()) => MingaEditor.Agent.DiffSnapshot.t()}, entries: %{required(String.t()) => [MingaEditor.Agent.EditTimeline.Entry.t()]}, viewing: %{required(String.t()) => non_neg_integer() | nil} }
Functions
@spec baseline_for(t(), String.t()) :: MingaEditor.Agent.DiffSnapshot.t() | nil
@spec cleanup(t()) :: :ok
@spec content_at(t(), String.t(), non_neg_integer()) :: {:ok, String.t()} | :error
@spec entry_count(t(), String.t()) :: non_neg_integer()
@spec new() :: t()
@spec set_viewing(t(), String.t(), non_neg_integer()) :: t()
@spec viewing_index(t(), String.t()) :: non_neg_integer() | nil