Behaviour for Vibe plugins.
Plugins are BEAM modules, not model-facing tools by default. They can observe lifecycle events, expose supervised children, register slash commands, provide eval APIs, add model-facing actions, and update renderer-neutral UI state.
Use plugin APIs when a capability should be composable from Vibe.Eval; expose
model-facing actions only when the model needs direct tool access.
Summary
Types
Callbacks
@callback apis(term()) :: [Vibe.Plugin.API.t() | keyword() | map()]
@callback children(term()) :: [Supervisor.child_spec() | {module(), term()} | module()]
@callback presentation_document(term()) :: Vibe.Presentation.Document.t() | keyword() | map()
@callback shutdown(term()) :: :ok