lib/openagents/roles/role.ex

58e6347eeb72 · 868 B

defmodule OpenAgents.Roles.Role do
  @moduledoc "Immutable role-program fragment composed below Sarah's core identity."

  @enforce_keys [
    :id,
    :version,
    :status,
    :content,
    :digest,
    :source_ref,
    :source_digest,
    :compatibility_min,
    :compatibility_max,
    :surfaces,
    :required_capabilities,
    :register
  ]
  defstruct @enforce_keys

  @type t :: %__MODULE__{
          id: String.t(),
          version: pos_integer(),
          status: String.t(),
          content: String.t(),
          digest: String.t(),
          source_ref: String.t(),
          source_digest: String.t(),
          compatibility_min: pos_integer(),
          compatibility_max: pos_integer(),
          surfaces: [String.t()],
          required_capabilities: [String.t()],
          register: String.t()
        }

  @callback artifact() :: t()
end