defmodule Pi.Protocol.API.Extension do @moduledoc "Plugin or skill API exposed to pi as an extension API." use JSONCodec, fast_path: :json alias Pi.Plugin.API defstruct [:name, :module, :alias, description: "", examples: []] @type t :: %__MODULE__{ name: atom(), module: module(), alias: atom() | nil, description: String.t(), examples: [String.t()] } codec(:name, atom: :unsafe) codec(:module, atom: :unsafe) codec(:alias, atom: :unsafe) def from_api(%API{} = api) do %__MODULE__{ name: api.name, module: api.module, alias: api.alias, description: api.description, examples: api.examples } end end