# `Jido.AI.Reasoning.ReAct.Signal`
[🔗](https://github.com/agentjido/jido_ai/blob/v2.4.0/lib/jido_ai/reasoning/react/signal.ex#L1)

Signal envelope used by strategies/adapters to consume ReAct runtime events.

# `datacontenttype`

# `dataschema`

# `default_source`

# `extension_policy`

# `new`

```elixir
@spec new(map(), keyword()) :: {:ok, Jido.Signal.t()} | {:error, String.t()}
```

Creates a new Signal instance with the configured type and validated data.

## Parameters

- `data`: A map containing the Signal's data payload.
- `opts`: Additional Signal options (source, subject, etc.)

## Returns

`{:ok, Signal.t()}` if the data is valid, `{:error, String.t()}` otherwise.

## Example

    MySignal.new(valid_data, source: "/custom")
    # => {:ok, signal} where signal.type == MySignal.type()

# `new!`

```elixir
@spec new!(map(), keyword()) :: Jido.Signal.t() | no_return()
```

Creates a new Signal instance, raising an error if invalid.

## Parameters

- `data`: A map containing the Signal's data payload.
- `opts`: Additional Signal options (source, subject, etc.)

## Returns

`Signal.t()` if the data is valid.

## Raises

`RuntimeError` if the data is invalid.

## Example

    MySignal.new!(valid_data, source: "/custom")
    # => %Jido.Signal{} with type MySignal.type()

# `schema`

Returns the data validation schema for the Signal.

# `to_json`

# `type`

# `validate_data`

```elixir
@spec validate_data(map()) :: {:ok, map()} | {:error, String.t()}
```

Validates the data for the Signal according to its schema.

## Example

    MySignal.validate_data(candidate_data)
    # => {:ok, validated_data} | {:error, reason}

---

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