# `Musubi.Telemetry`
[🔗](https://github.com/fahchen/musubi/blob/v0.3.0/lib/musubi/telemetry.ex#L1)

Telemetry emission helper for Musubi runtime events plus the canonical event
catalog.

`events/0` returns every event name emitted by the runtime, paired with a
one-line description. Use it to attach a single handler to all Musubi events
(e.g. for log-shipping, metrics aggregation, or test observation):

    Musubi.Telemetry.events()
    |> Enum.map(&elem(&1, 0))
    |> :telemetry.attach_many("musubi-collector", &MyTelemetry.handle_event/4, nil)

# `event`

```elixir
@type event() :: {[atom()], String.t()}
```

One Musubi telemetry event entry: `{event_name, description}`.

# `emit`

```elixir
@spec emit([atom()], map(), map()) :: :ok
```

Emits a telemetry event when the `:telemetry` module is available.

## Examples

    iex> Musubi.Telemetry.emit([:musubi, :render, :stop], %{duration: 10}, %{module: Example})
    :ok

# `events`

```elixir
@spec events() :: [event()]
```

Returns every telemetry event the Musubi runtime emits along with a one-line
description.

## Examples

    iex> [{[:musubi, :command, :start], _desc} | _rest] = Musubi.Telemetry.events()

---

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