Issue #3574756: Per-block content sources and optional AI overrides

Move content_sources from global config to per-block configuration. Each block instance now carries its own content sources and can optionally override global AI settings (provider, model, prompt, etc.).

  • Add ContentSourceFormTrait for shared form helpers
  • Add block_instance_id (auto-generated UUID) per block instance
  • Add content_sources and AI override fields to block config
  • Update ContentIndexer to build superset from all block instances
  • Update ChatService to accept config as parameter
  • Update ChatApiController to resolve block config by instance ID
  • Update JS to support multiple independent chatbot instances
  • Add update_10003 to remove content_sources from global config
  • Trigger re-indexing via hook_block_update/insert after save

Closes #3574756

Merge request reports

Loading