# `Wardrik.Operations.Visible`

Limits operations over many agents to what the scope may see.

Only agents that the input's resource patterns cover, and the scope may act on, are shown. The
same goes for their events and cursors.

# `agent_id`

```elixir
@spec agent_id(map()) :: String.t()
```

Returns the ID of the agent whose log holds `event`.

# `agents`

```elixir
@spec agents(Wardrik.Scope.t(), map()) :: [String.t()]
```

Returns the IDs of saved or defined agents that `input`'s patterns cover and `scope` may see.

# `logs`

```elixir
@spec logs(map()) :: [String.t()]
```

Returns the log patterns that hold every agent `input`'s patterns could cover.

# `patterns`

```elixir
@spec patterns(map()) :: [String.t()]
```

Returns `input`'s `"resources"` patterns, or `["*"]`.

# `visible?`

```elixir
@spec visible?(Wardrik.Scope.t(), [String.t()], String.t()) :: boolean()
```

Returns whether `patterns` cover the agent `id` and `scope` may see it.

---

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