# `MingaAgent.ProjectView.Source`
[🔗](https://github.com/jsmestad/minga/blob/main/lib/minga_agent/project_view/source.ex#L1)

A selected project-view source owner without materialized file content.

# `owner`

```elixir
@type owner() ::
  {:disk, String.t()}
  | {:buffer, pid()}
  | {:fork, pid()}
  | {:changeset, pid(), String.t()}
```

# `t`

```elixir
@type t() :: %MingaAgent.ProjectView.Source{owner: owner(), source_id: String.t()}
```

# `buffer`

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

Selects the buffer that owns an unsaved source.

# `changeset`

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

Selects the changeset that resolves an overlay edit or its disk source.

# `disk`

```elixir
@spec disk(String.t(), String.t()) :: t()
```

Selects a disk path while preserving the logical source identity.

# `fork`

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

Selects the fork that owns an isolated source.

---

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