Ephemeral inline ask overlays keyed by buffer.
Inline asks are presentation state only. They are not persisted and they do not create workspaces until explicitly promoted.
The shared per-buffer store mechanics (active/2, put/2, dismiss/2, session?/2) and prompt-input mechanics (append_input/2, backspace/1, scroll/2) live in MingaEditor.InlineOverlay.Store and MingaEditor.InlineOverlay.Prompt and are reused here. This module owns only the ask-specific shape and transitions: the read-only response accumulation and the :answered terminal state.
Summary
Functions
Builds the read-only prompt sent to the ephemeral agent session.
Marks the ask as answered.
Appends response text.
Marks the ask as failed.
Returns the prompt header.
Creates a new ask for a buffer.
Marks the ask as thinking.
Types
@type t() :: %MingaEditor.State.InlineAsk{ anchor_line: non_neg_integer(), buffer_pid: pid(), context_text: String.t(), file_label: String.t(), file_ref: Minga.Project.FileRef.t(), phase: phase(), prompt: String.t(), scroll: non_neg_integer(), selection_range: {non_neg_integer(), non_neg_integer()} | nil }
Functions
Builds the read-only prompt sent to the ephemeral agent session.
Marks the ask as answered.
Appends response text.
Marks the ask as failed.
Returns the prompt header.
@spec new( pid(), Minga.Project.FileRef.t(), String.t(), non_neg_integer(), {non_neg_integer(), non_neg_integer()} | nil, String.t() ) :: t()
Creates a new ask for a buffer.
Marks the ask as thinking.