Normandy.Coordination.AgentMessage (normandy v0.2.0)

View Source

Message structure for agent-to-agent communication.

AgentMessage provides a standardized format for agents to communicate with each other, including metadata about the sender, message type, and payload.

Example

message = %AgentMessage{
  from: "research_agent",
  to: "writing_agent",
  type: :request,
  payload: %{query: "Find papers about AI"},
  metadata: %{priority: :high}
}

Summary

Functions

Creates an error response message.

Creates a new agent message.

Creates a response message to an original message.

Types

t()

@type t() :: %Normandy.Coordination.AgentMessage{
  __meta__: Normandy.Metadata.t(),
  from: String.t(),
  id: String.t(),
  metadata: map(),
  payload: map(),
  timestamp: integer(),
  to: String.t(),
  type: String.t()
}

Functions

error(agent_message, reason, details \\ %{})

@spec error(
  %Normandy.Coordination.AgentMessage{
    __meta__: term(),
    from: term(),
    id: term(),
    metadata: term(),
    payload: term(),
    timestamp: term(),
    to: term(),
    type: term()
  },
  String.t(),
  map()
) :: %Normandy.Coordination.AgentMessage{
  __meta__: term(),
  from: term(),
  id: term(),
  metadata: term(),
  payload: term(),
  timestamp: term(),
  to: term(),
  type: term()
}

Creates an error response message.

Example

error = AgentMessage.error(original_message, "Processing failed", %{code: 500})

new(opts \\ [])

@spec new(keyword()) :: %Normandy.Coordination.AgentMessage{
  __meta__: term(),
  from: term(),
  id: term(),
  metadata: term(),
  payload: term(),
  timestamp: term(),
  to: term(),
  type: term()
}

Creates a new agent message.

Options

  • :from - Source agent identifier (required)
  • :to - Destination agent identifier (required)
  • :type - Message type (:request, :response, :broadcast, :error)
  • :payload - Message content (map)
  • :metadata - Additional metadata (map)

Example

message = AgentMessage.new(
  from: "agent_1",
  to: "agent_2",
  type: :request,
  payload: %{task: "analyze data"}
)

reply(original, payload)

@spec reply(
  %Normandy.Coordination.AgentMessage{
    __meta__: term(),
    from: term(),
    id: term(),
    metadata: term(),
    payload: term(),
    timestamp: term(),
    to: term(),
    type: term()
  },
  map()
) :: %Normandy.Coordination.AgentMessage{
  __meta__: term(),
  from: term(),
  id: term(),
  metadata: term(),
  payload: term(),
  timestamp: term(),
  to: term(),
  type: term()
}

Creates a response message to an original message.

Example

response = AgentMessage.reply(original_message, %{result: "success"})