# `MingaEditor.Agent.SemanticUI.Entry`
[🔗](https://github.com/jsmestad/minga/blob/main/lib/minga_editor/agent/semantic_ui/entry.ex#L1)

Source-owned semantic agent UI contribution.

The payload is an existing `Minga.RenderModel.UI.*` value, or a list of existing extension-panel content values. This keeps agent UI contribution data on the same semantic render-model path used by built-in GUI/TUI surfaces.

# `payload`

```elixir
@type payload() ::
  Minga.RenderModel.UI.AgentChat.message_body()
  | [Minga.RenderModel.UI.ExtensionPanel.Content.t()]
  | Minga.RenderModel.UI.ExtensionPanel.Panel.t()
```

Existing render-model value stored by the registry.

# `source`

```elixir
@type source() :: Minga.Extension.ContributionCleanup.contribution_source()
```

Source that owns the contribution.

# `surface`

```elixir
@type surface() :: :transcript_enrichment | :dashboard_section | :panel
```

Semantic surface where the contribution is consumed.

# `t`

```elixir
@type t() :: %MingaEditor.Agent.SemanticUI.Entry{
  actions: [Minga.RenderModel.UI.Action.t()],
  id: String.t(),
  payload: payload(),
  priority: integer(),
  source: source(),
  surface: surface(),
  target: term()
}
```

# `new`

```elixir
@spec new(source(), t() | map() | keyword()) :: {:ok, t()} | {:error, term()}
```

Builds an entry owned by `source`.

# `publish`

```elixir
@spec publish(
  t(),
  payload(),
  [Minga.RenderModel.UI.Action.t() | map() | keyword()] | nil
) ::
  {:ok, t()} | {:error, term()}
```

Updates the cached render-model payload and optional render-model action metadata.

---

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