defmodule AgentSea.Role do @moduledoc "An agent's role: its capabilities, system prompt, goals and delegation policy." @enforce_keys [:name] defstruct [ :name, :description, :system_prompt, :backstory, capabilities: [], goals: [], constraints: [], can_delegate: true, can_receive_delegation: true, max_concurrent_tasks: 1 ] @type t :: %__MODULE__{ name: String.t(), description: String.t() | nil, system_prompt: String.t() | nil, backstory: String.t() | nil, capabilities: [AgentSea.Capability.t()], goals: [String.t()], constraints: [String.t()], can_delegate: boolean(), can_receive_delegation: boolean(), max_concurrent_tasks: pos_integer() } end