Cross-package-safe manifest builder for Raxol plugins.
Wraps the core Raxol.Core.Runtime.Plugins.Manifest struct as a plain
map so that consumers in separate packages do not need a compile-time
dependency on the struct definition.
Usage
manifest = Raxol.Plugin.Manifest.new(
id: :my_plugin,
name: "My Plugin",
version: "1.0.0",
module: MyPlugin
)
case Raxol.Plugin.Manifest.validate(manifest) do
:ok -> IO.puts("valid")
{:error, errors} -> IO.inspect(errors)
end
Summary
Functions
Returns the default resource budget.
Builds a manifest map from keyword options.
Returns the list of supported API versions.
Validates a manifest map for completeness and correctness.
Types
Functions
@spec default_budget() :: map()
Returns the default resource budget.
Builds a manifest map from keyword options.
Returns a plain map (not a struct) for cross-package compatibility.
Required keys
:id- Plugin identifier (atom):name- Human-readable name:version- Semver version string:module- Plugin module
Optional keys
:author- Author name (default:""):api_version- API version (default:"1.0"):description- Description (default:""):depends_on- Dependencies as[{atom, version_string}](default:[]):conflicts_with- Conflicting plugin IDs (default:[]):provides- Capabilities provided (default:[]):requires- Capabilities required (default:[]):resource_budget- Resource limits map (default: standard budget)
@spec supported_api_versions() :: [String.t()]
Returns the list of supported API versions.
Validates a manifest map for completeness and correctness.
Returns :ok or {:error, [String.t()]} with a list of validation errors.