# `Jido.Agent.Directive.Emit`
[🔗](https://github.com/agentjido/jido/blob/v2.3.0/lib/jido/agent/directive.ex#L190)

Dispatch a signal via `Jido.Signal.Dispatch`.

The runtime interprets this directive by calling:

    Jido.Signal.Dispatch.dispatch(signal, dispatch_config)

## Fields

- `signal` - A `Jido.Signal.t()` struct to dispatch
- `dispatch` - Dispatch config: `{adapter, opts}` or list of configs
  - `:pid` - Direct to process
  - `:pubsub` - Via PubSub
  - `:bus` - To signal bus
  - `:http` / `:webhook` - HTTP endpoints
  - `:logger` / `:console` / `:noop` - Logging/testing

If `dispatch` is omitted and the agent has no `default_dispatch`, runtime
falls back to emitting to the current agent process (`self()`).

## Examples

    # Use agent's default dispatch (configured on AgentServer)
    %Emit{signal: signal}

    # Explicit dispatch to PubSub
    %Emit{signal: signal, dispatch: {:pubsub, topic: "events"}}

    # Multiple dispatch targets
    %Emit{signal: signal, dispatch: [
      {:pubsub, topic: "events"},
      {:logger, level: :info}
    ]}

# `t`

```elixir
@type t() :: %Jido.Agent.Directive.Emit{dispatch: nil | any(), signal: any()}
```

# `schema`

```elixir
@spec schema() :: Zoi.schema()
```

Returns the Zoi schema for Emit.
