Discovery for AI-translatable adapters.
A feature module opts a resource into AI translation by exporting
ai_translatables/0 returning [{resource_type, adapter_module}], where
adapter_module implements PhoenixKitAI.Translatable. This scans every
module known to PhoenixKit.ModuleRegistry for that function (duck-typed —
the function is not a PhoenixKit.Module callback, so feature modules
declare AI-translatability without core knowing anything about AI).
A host application that is not a kit module joins the same pipeline through config:
config :phoenix_kit_ai, translatables: [{"product", MyApp.AI.ProductTranslatable}]resource_type strings must be globally unique; on a collision the first
registered module wins — configured entries come first, so a host can
also override a module's adapter for a type.
Summary
Functions
%{resource_type => adapter_module} for every registered module that
exports ai_translatables/0.
Resolve the adapter for a resource_type, or nil.