defmodule Pi.Protocol.BridgeInfo do
@moduledoc "Startup inventory for a pi_bridge session."
use JSONCodec, fast_path: :json
alias Pi.Protocol.API.Inventory
alias Pi.Protocol.PluginCommand
alias Pi.Protocol.PluginInfo
alias Pi.Protocol.SkillInfo
defstruct [
:project,
:version,
:transport,
skills: [],
plugins: [],
commands: [],
apis: %Inventory{}
]
@type t :: %__MODULE__{
project: atom() | nil,
version: String.t() | nil,
transport: atom() | nil,
skills: [SkillInfo.t()],
plugins: [PluginInfo.t()],
commands: [PluginCommand.t()],
apis: Inventory.t()
}
codec(:project, atom: :unsafe)
codec(:transport, atom: :existing)
end