LemonChannels. Registry
(lemon_channels v0.1.0)
View Source
Registry for channel plugins.
Manages registration and lookup of channel plugins.
Summary
Functions
Returns a specification to start this module under a supervisor.
Get plugin capabilities.
Get plugin capabilities in the new format.
Get plugin metadata.
Get a plugin by ID.
List adapters with metadata for status UIs.
List all registered plugins.
Stop and unregister a channel adapter by channel_id.
Register a channel plugin.
Summarize configured/connected channel adapters.
Query if a plugin supports a specific capability.
Query if a plugin supports a specific feature within a capability.
Unregister a channel plugin.
Validates a capability request for a plugin.
Functions
Returns a specification to start this module under a supervisor.
See Supervisor.
Get plugin capabilities.
@spec get_capabilities_new(binary()) :: LemonChannels.Capabilities.t() | nil
Get plugin capabilities in the new format.
Returns the parsed capability map — %{capability_type => %Capability{}}, as
produced by LemonChannels.Capabilities.from_legacy/1 — or nil if the
plugin is not registered. Despite the module name, LemonChannels.Capabilities.t/0
is a map, not a struct.
Get plugin metadata.
Get a plugin by ID.
List adapters with metadata for status UIs.
Returns a list of {channel_id, info} tuples.
@spec list_plugins() :: [module()]
List all registered plugins.
Stop and unregister a channel adapter by channel_id.
Register a channel plugin.
Summarize configured/connected channel adapters.
Query if a plugin supports a specific capability.
Examples
Registry.supports?("telegram", :attachments)
# => true
Registry.supports?("xmtp", :rich_blocks)
# => false
Query if a plugin supports a specific feature within a capability.
Examples
Registry.supports_feature?("telegram", :rich_blocks, :markdown)
# => true
Registry.supports_feature?("discord", :rich_blocks, :buttons)
# => false
@spec unregister(binary()) :: :ok
Unregister a channel plugin.
Validates a capability request for a plugin.
Examples
Registry.validate("telegram", :attachments, %{size: 5_000_000, mime_type: "image/png"})
# => :ok
Registry.validate("xmtp", :attachments, %{size: 1_000})
# => {:error, :capability_not_supported}