Skip to main content

lib/agent_sea/bid.ex

defmodule AgentSea.Bid do
  @moduledoc """
  An agent's bid on a task, produced by `AgentSea.Agent.bid/2`. Used by the
  auction delegation strategy. `estimated_cost` combines the model's price tier
  with the estimated effort, so the `:cheapest` criterion can distinguish a
  cheap-but-slower model from an expensive-but-faster one.
  """

  @enforce_keys [:agent_name, :confidence]
  defstruct [
    :agent_name,
    :task_id,
    :confidence,
    :estimated_time,
    :estimated_cost,
    :reasoning,
    capabilities: []
  ]

  @type t :: %__MODULE__{
          agent_name: term(),
          task_id: term() | nil,
          confidence: float(),
          estimated_time: number() | nil,
          estimated_cost: number() | nil,
          reasoning: String.t() | nil,
          capabilities: [String.t()]
        }
end