# `Gralkor.Capture`
[🔗](https://github.com/elimydlarz/jido_gralkor/blob/main/lib/gralkor/capture.ex#L1)

One conversation turn captured through an explicit route.

`{:direct, destination}` writes the conversation to a registered Destination
without Lens authorship. `{:lenses, names}` runs each distinct selected Lens
with its own Destination, ontology, and ingestion process. The operator
identifier is supplied separately and never contains a resolved graph name.

# `resolved_route`

```elixir
@type resolved_route() :: {:direct, String.t(), module()} | {:lens, Gralkor.Lens.t()}
```

# `route`

```elixir
@type route() :: {:direct, String.t()} | {:lenses, [String.t()]}
```

# `t`

```elixir
@type t() :: %Gralkor.Capture{
  agent_name: String.t(),
  messages: [Gralkor.Message.t()],
  operator_id: String.t(),
  route: route(),
  session_id: String.t(),
  user_name: String.t()
}
```

# `resolve!`

```elixir
@spec resolve!(pid(), t()) :: [resolved_route()]
```

# `validate!`

```elixir
@spec validate!(t()) :: :ok
```

---

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