AgentForge.Signal (AgentForge v0.2.2)
View SourceHandles creation and manipulation of signals in the AgentForge system. Signals are the fundamental unit of communication.
Summary
Functions
Creates a new signal correlated with a parent signal. Copies the parent's trace_id into the new signal's correlation_id.
Creates an emit result with a new signal.
Creates an emit_many result with multiple signals.
Gets a metadata value from a signal.
Creates a halt result with a value.
Creates a new signal with the given type and data.
Updates metadata in a signal.
Types
Functions
Creates a new signal correlated with a parent signal. Copies the parent's trace_id into the new signal's correlation_id.
Examples
iex> parent = AgentForge.Signal.new(:parent, "data")
iex> child = AgentForge.Signal.correlate(AgentForge.Signal.new(:child, "response"), parent)
iex> child.meta.correlation_id == parent.meta.trace_id
true
Creates an emit result with a new signal.
Examples
iex> {:emit, signal} = AgentForge.Signal.emit(:test, "data")
iex> signal.type == :test and signal.data == "data"
true
Creates an emit_many result with multiple signals.
Examples
iex> {:emit_many, signals} = AgentForge.Signal.emit_many([
...> {:test1, "data1"},
...> {:test2, "data2"}
...> ])
iex> length(signals) == 2
true
Gets a metadata value from a signal.
Examples
iex> signal = AgentForge.Signal.new(:test, "data", %{custom: %{key: "value"}})
iex> AgentForge.Signal.get_meta(signal, :custom)
%{key: "value"}
Creates a halt result with a value.
Examples
iex> {:halt, value} = AgentForge.Signal.halt("done")
iex> value == "done"
true
Creates a new signal with the given type and data.
Examples
iex> signal = AgentForge.Signal.new(:user_message, "Hello")
iex> signal.type == :user_message and signal.data == "Hello"
true
Updates metadata in a signal.
Examples
iex> signal = AgentForge.Signal.new(:test, "data")
iex> updated = AgentForge.Signal.update_meta(signal, :custom, %{key: "value"})
iex> get_in(updated.meta, [:custom, :key])
"value"