How it works
T3AF owns the provider rows. The child extension exposes feature-specific provider fields in T3AF > AI Features. At runtime, the feature resolves the provider in this order:- Provider selected in the runtime modal, if the request includes one.
- Feature default saved in AI Features.
- Global default provider fallback.
Supported implementation hook
Child extensions register provider dropdowns by implementing:NITSAN\NsT3AF\Contract\FeatureProviderFormOptionsInterface
Register the service with:
t3af.feature_provider_form_options
T3AF uses the registered service to render provider options in the feature settings drawer.
Known feature fields
AI Assistant uses feature-specific default provider fields such as:defaultProviderForSeodefaultProviderForPagesdefaultProviderForContentdefaultProviderForTranslationdefaultModeldefaultEmbeddingsModel
Translation note
defaultModelForTranslation still selects the translation backend, such as DeepL, Google, or an AI-based path. defaultProviderForTranslation applies only to LLM completion paths that use the T3AF completion gateway.
Configuration workflow
- Register a feature card with Custom AI Features.
- Add the provider field to that feature’s settings schema.
- Implement
FeatureProviderFormOptionsInterface. - Tag the service with
t3af.feature_provider_form_options. - Flush caches.
- Open T3AF > AI Features and verify the provider dropdown.
- Save a default provider and test the runtime feature.
Best practices
- Keep provider field names stable.
- Always include an inherit/default option.
- Use the same label, AI Provider, when the same choice appears in runtime modals.
- Resolve providers through the feature runtime path instead of reading provider rows directly.
- Do not hardcode provider IDs in feature logic.
Verification
- Open T3AF > AI Providers and confirm at least one provider is enabled.
- Open T3AF > AI Features.
- Open the feature settings drawer.
- Confirm the provider dropdown contains enabled providers.
- Save a feature default.
- Open the feature runtime modal and confirm the saved provider is preselected.
Troubleshooting
Dropdown is missing- Confirm the form-options service implements the correct interface.
- Confirm the service is tagged with
t3af.feature_provider_form_options. - Confirm the related feature card and scope provider are active.
- Confirm the request field name matches the saved setting.
- Confirm the feature handles
defaultor empty values as fallback. - Confirm the saved provider row still exists and is enabled.