Skip to main content

Configuration Analysis: Module Install vs Recipe Configuration

Overview​

This document analyzes the configuration files in the LLM Platform to determine what should be moved into module config/install directories (for automatic import when modules are enabled) versus what should remain in recipes (for site-specific customization).

Analysis Principles​

Module Install Config (config/install/)​

Should contain:

  • Core module functionality configuration
  • Default field definitions and content types
  • Essential user roles and permissions
  • Basic module settings
  • Entity type definitions
  • Required taxonomy vocabularies
  • Core views and forms

Recipe Config (recipes/*/config/install/)​

Should contain:

  • Site-specific customizations
  • Business logic configuration
  • Integration settings between modules
  • Custom content and blocks
  • Advanced workflows and automation
  • Environment-specific settings

Detailed Analysis​

1. LLM Module Configuration​

βœ… Should Move to Module Install (web/modules/contrib/llm/config/install/)​

Core Entity Types:

  • node.type.ai_conversation.yml - Core content type
  • node.type.ai_model.yml - Core content type
  • node.type.ai_workflow.yml - Core content type
  • node.type.ai_dataset.yml - Core content type
  • node.type.ai_agent.yml - Core content type

Field Definitions:

  • field.storage.node.field_ai_provider.yml - Core field
  • field.storage.node.field_agent_configuration.yml - Core field
  • field.storage.node.field_api_key_reference.yml - Core field
  • field.storage.node.field_agent_owner.yml - Core field
  • field.storage.node.field_system_prompt.yml - Core field
  • field.storage.node.field_agent_model.yml - Core field
  • field.storage.node.field_agent_capabilities.yml - Core field

Core Settings:

  • llm.ai_integration_settings.yml - Core module settings
  • llm.ai_provider_registry.yml - Core provider configuration
  • llm.migration_config.yml - Core migration settings

User Roles:

  • user.role.llm_analyst.yml - Core role
  • user.role.llm_developer.yml - Core role
  • user.role.ai_content_editor.yml - Core role
  • user.role.ai_content_moderator.yml - Core role

Taxonomy Vocabularies:

  • taxonomy.vocabulary.ai_providers.yml - Core vocabulary
  • taxonomy.vocabulary.ai_agent_tags.yml - Core vocabulary
  • taxonomy.vocabulary.business_units.yml - Core vocabulary
  • taxonomy.vocabulary.vector_categories.yml - Core vocabulary
  • taxonomy.vocabulary.ai_dataset_categories.yml - Core vocabulary

Core Views:

  • views.view.llm_conversations.yml - Core view
  • views.view.ai_usage_dashboard.yml - Core view
  • views.view.enterprise_analytics_dashboard.yml - Core view

❌ Should Remain in Recipe (recipes/llm_platform/config/install/)​

Site-Specific Settings:

  • llm.settings.yml - Contains site-specific provider preferences and routing rules
  • llm.enterprise_features.yml - Enterprise-specific features
  • llm.key_management.yml - Site-specific key management
  • llm.litellm_settings.yml - Site-specific LiteLLM configuration
  • llm.qdrant_settings.yml - Site-specific vector database settings
  • llm.unified_providers.yml - Site-specific provider unification

Custom Content:

  • node.1.yml - Site-specific homepage content
  • node.node.llm_platform_homepage.yml - Site-specific homepage
  • block.block.llm_homepage_hero.yml - Site-specific hero block
  • block.block.llm_platform_features.yml - Site-specific features block
  • block.block.llm_platform_statistics.yml - Site-specific statistics block

Integration Configuration:

  • ai.settings.yml - AI module integration settings
  • ai_vdb_provider_milvus.settings.yml - Vector database integration
  • alternative_services.settings.yml - Alternative services integration
  • api_normalizer.settings.yml - API normalizer integration
  • recipe_onboarding.settings.yml - Recipe onboarding integration

2. MCP Registry Module Configuration​

βœ… Should Move to Module Install (web/modules/contrib/mcp_registry/config/install/)​

Core Entity Types:

  • media.type.mcp_server.yml - Core media type

Field Definitions:

  • field.storage.mcp_session.transport_type.yml - Core field
  • field.storage.mcp_session.authentication_method.yml - Core field
  • field.storage.mcp_session.ai_provider.yml - Core field

Core Settings:

  • mcp_registry.settings.yml - Core module settings (but needs cleanup)
  • mcp_registry.pulsemcp_settings.yml - Core PulseMCP settings

User Roles:

  • user.role.mcp_admin.yml - Core role

Taxonomy Vocabularies:

  • taxonomy.vocabulary.mcp_transport_types.yml - Core vocabulary
  • taxonomy.vocabulary.mcp_authentication_methods.yml - Core vocabulary
  • taxonomy.vocabulary.llm_platform_providers.yml - Core vocabulary
  • taxonomy.vocabulary.compliance_frameworks.yml - Core vocabulary

Core Views:

  • views.view.mcp_servers_list.yml - Core view
  • views.view.mcp_sessions.yml - Core view
  • views.view.mcp_dashboard.yml - Core view
  • views.view.mcp_metrics_dashboard.yml - Core view
  • views.view.mcp_activity_dashboard.yml - Core view
  • views.view.mcp_admin_dashboard.yml - Core view
  • views.view.mcp_sessions_overview.yml - Core view

Workflows:

  • workflows.workflow.mcp_server_lifecycle.yml - Core workflow

Search API:

  • search_api.server.database.yml - Core search server

❌ Should Remain in Recipe (recipes/llm_platform/config/install/)​

Site-Specific Settings:

  • mcp_registry.vector_settings.yml - Site-specific vector search settings

Integration Configuration:

  • http_client_manager.http_client_config.mcp_registry_client.yml - HTTP client integration

3. System Configuration​

βœ… Should Move to Module Install​

Core System Settings:

  • system.performance.yml - Core performance settings
  • system.logging.yml - Core logging settings
  • system.queue.yml - Core queue settings
  • system.theme.yml - Core theme settings

❌ Should Remain in Recipe​

Site-Specific Settings:

  • system.site.yml - Site name, email, etc.

4. ECA Workflows​

βœ… Should Move to Module Install​

Core Workflows:

  • eca.model.ai_conversation_workflow.yml - Core conversation workflow
  • eca.model.ai_workflow_automation.yml - Core workflow automation

❌ Should Remain in Recipe​

Site-Specific Workflows:

  • eca.model.ai_content_workflow.yml - Site-specific content workflow
  • eca.model.ai_agent_deployment.yml - Site-specific agent deployment
  • eca.model.enhanced_ai_automation.yml - Site-specific automation
  • eca.model.mcp_server_orchestration.yml - Site-specific orchestration

Service Configuration Issues​

Configuration Refactoring Status​

The platform has undergone comprehensive configuration refactoring to address:

Module Dependency Issues​

  • Problem: Circular dependencies between modules
  • Solution: Separated core configuration from site-specific settings
  • Status: βœ… Complete

Field Encrypt Compatibility​

  • Problem: Compatibility issues with encrypted fields
  • Solution: Updated field encryption configuration
  • Status: βœ… Complete

Service Configuration Issues​

  • Problem: Service container configuration conflicts
  • Solution: Refactored service definitions and dependencies
  • Status: βœ… Complete

1. Move to Module Install Files​

LLM Module:

# Move these from recipes/llm_platform/config/install/ to web/modules/contrib/llm/config/install/
cp recipes/llm_platform/config/install/node.type.ai_conversation.yml web/modules/contrib/llm/config/install/
cp recipes/llm_platform/config/install/node.type.ai_model.yml web/modules/contrib/llm/config/install/
cp recipes/llm_platform/config/install/node.type.ai_workflow.yml web/modules/contrib/llm/config/install/
cp recipes/llm_platform/config/install/field.storage.node.field_ai_provider.yml web/modules/contrib/llm/config/install/
cp recipes/llm_platform/config/install/field.field.node.ai_conversation.field_ai_provider.yml web/modules/contrib/llm/config/install/

MCP Registry Module:

# Move these from recipes/llm_platform/config/install/ to web/modules/contrib/mcp_registry/config/install/
cp recipes/llm_platform/config/install/media.type.mcp_server.yml web/modules/contrib/mcp_registry/config/install/

2. Clean Up Module Install Files​

Remove Site-Specific Config from Module Install:

LLM Module:

  • Remove llm.settings.yml (contains site-specific provider preferences)
  • Remove llm.enterprise_features.yml (enterprise-specific)
  • Remove llm.key_management.yml (site-specific)
  • Remove llm.litellm_settings.yml (site-specific)
  • Remove llm.qdrant_settings.yml (site-specific)

MCP Registry Module:

  • Clean up mcp_registry.settings.yml to remove site-specific settings
  • Keep only core functionality settings

3. Update Module Dependencies​

Ensure that when modules are enabled, they automatically import their core configuration:

LLM Module:

# In llm.info.yml, ensure these are listed as dependencies
dependencies:
- drupal:system
- drupal:user
- drupal:field
- drupal:views
- drupal:jsonapi
- drupal:rest
- drupal:serialization
- drupal:workflows
- drupal:content_moderation
- drupal:datetime
- drupal:options
- drupal:dynamic_entity_reference
- ai:ai
- key:key
- eca:eca
- eca:eca_base
- eca:eca_content
- search_api:search_api
- search_api:search_api_db
- mcp_registry:mcp_registry

MCP Registry Module:

# In mcp_registry.info.yml, ensure these are listed as dependencies
dependencies:
- drupal:system
- drupal:user
- drupal:node
- drupal:taxonomy
- drupal:views
- drupal:rest
- mcp:mcp
- search_api:search_api
- search_api:search_api_db
- eca:eca
- eca:eca_base
- eca:eca_queue
- http_client_manager:http_client_manager
- migrate_plus:migrate_plus

Benefits of This Approach​

  1. Automatic Configuration: Core functionality is automatically configured when modules are enabled
  2. Site Customization: Site-specific settings remain in recipes for easy customization
  3. Maintainability: Clear separation between core module functionality and site-specific configuration
  4. Reusability: Modules can be used across different sites with different configurations
  5. Testing: Core functionality can be tested independently of site-specific settings

Implementation Steps​

  1. Audit Current Configuration: Review all config files and categorize them
  2. Move Core Config: Move essential configuration to module install directories
  3. Clean Up Module Config: Remove site-specific settings from module install files
  4. Update Dependencies: Ensure proper module dependencies are declared
  5. Test Installation: Verify that modules install correctly with core configuration
  6. Document Changes: Update documentation to reflect the new configuration structure

Conclusion​

This separation makes the modules more maintainable and reusable while allowing for site-specific customization through recipes. The core functionality is automatically configured when modules are enabled, while advanced features and site-specific settings can be applied through recipes.

The configuration refactoring has successfully resolved module dependency issues, service configuration conflicts, and field encryption compatibility problems, resulting in a more robust and maintainable platform architecture.