# `MingaEditor.Shell.Traditional.AgentSurfaces`
[🔗](https://github.com/jsmestad/minga/blob/main/lib/minga_editor/shell/traditional/agent_surfaces.ex#L1)

Pure owner of Traditional agent presentation and inline session surfaces.

The full agent presentation cache and both per-buffer inline stores are
replaced only through this owner. Inline completion and cancellation match
the originating session or buffer, so delayed events cannot update a
replacement surface.

# `t`

```elixir
@type t() :: %MingaEditor.Shell.Traditional.AgentSurfaces{
  asks: MingaEditor.State.InlineAsk.store(),
  edits: MingaEditor.State.InlineEdit.store(),
  presentation: MingaEditor.State.Agent.t()
}
```

# `activate_ask`

```elixir
@spec activate_ask(t(), MingaEditor.State.InlineAsk.t()) :: t()
```

Activates or replaces the inline ask for its buffer.

# `activate_edit`

```elixir
@spec activate_edit(t(), MingaEditor.State.InlineEdit.t()) :: t()
```

Activates or replaces the inline edit for its buffer.

# `append_ask_response`

```elixir
@spec append_ask_response(t(), pid(), String.t()) :: t()
```

Appends output only to the matching inline ask session.

# `append_edit_proposal`

```elixir
@spec append_edit_proposal(t(), pid(), String.t()) :: t()
```

Appends output only to the matching inline edit session.

# `asks`

```elixir
@spec asks(t()) :: MingaEditor.State.InlineAsk.store()
```

Returns the inline ask store.

# `cancel_ask`

```elixir
@spec cancel_ask(t(), pid() | nil) :: {t(), pid() | nil}
```

Cancels the inline ask for a buffer and returns its session pid.

# `cancel_edit`

```elixir
@spec cancel_edit(t(), pid() | nil) :: {t(), pid() | nil}
```

Cancels the inline edit for a buffer and returns its session pid.

# `complete_ask`

```elixir
@spec complete_ask(t(), pid()) :: t()
```

Completes the matching inline ask session.

# `complete_edit`

```elixir
@spec complete_edit(t(), pid()) :: t()
```

Completes the matching inline edit session.

# `edits`

```elixir
@spec edits(t()) :: MingaEditor.State.InlineEdit.store()
```

Returns the inline edit store.

# `fail_ask`

```elixir
@spec fail_ask(t(), pid(), String.t()) :: t()
```

Fails the matching inline ask session.

# `fail_edit`

```elixir
@spec fail_edit(t(), pid(), String.t()) :: t()
```

Fails the matching inline edit session.

# `presentation`

```elixir
@spec presentation(t()) :: MingaEditor.State.Agent.t()
```

Returns the full agent presentation cache.

# `replace_ask`

```elixir
@spec replace_ask(t(), MingaEditor.State.InlineAsk.t()) :: t()
```

Replaces a current inline ask after an input transition.

# `replace_edit`

```elixir
@spec replace_edit(t(), MingaEditor.State.InlineEdit.t()) :: t()
```

Replaces a current inline edit after an input transition.

# `replace_presentation`

```elixir
@spec replace_presentation(t(), MingaEditor.State.Agent.t()) :: t()
```

Replaces the full agent presentation cache.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
