# Prompt log — 24h 2026-06-28 ======================================================================== ## [1] summariseModule:ai:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI (Artificial Intelligence) (machine name: ai) Reporting period: last 24h (2026-06-28T05:00:06+00:00 to 2026-06-29T05:00:06+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Ahmad Khalil (ahmad-khalil-imagex), Artem Dmitriiev (a.dmitriiev), Ronald te Brake (ronaldtebrake), velmir_taky (root_emarketing)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

AI (Artificial Intelligence)

then use

,

,

    /
  • , and as needed. Output only the HTML fragment with no surrounding , , or
    tags. After the project summary prose, add a single subsection titled "

    How can I help on this project?

    " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Add rich-text image description support to AI Automators](https://git.drupalcode.org/project/ai/-/work_items/3586478) State: opened | Updated: 2026-06-29 | Author: Levente Besenyei (LeventeB) | Assigned: Joshua Fernandes (joshua1234511) | Labels: AI Initiative Sprint, AI Product Development, category::feature, priority::normal Description: ## Summary Add optional rich-text image description support to AI Automators for AI-based formatted text fields, including metadata storage for generated image descriptions. Related/source issue: https://git.drupalcode.org/project/ai_initiative/-/work_items/3585695 ## Problem AI Automators can use formatted text as input, but images embedded in that text are currently ignored unless they are already available through a separate image/media field. This makes automations less accurate for content that depends on visual context (for example: summaries, quality checks, and editorial pre-screen… ### [Add Functional Tests for AI CKEditor](https://git.drupalcode.org/project/ai/-/work_items/3477173) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, aiCkeditor, category::task, needs backport to 1.3.x Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1302 !1257 >>> Problem/Motivation Add tests that tries out the e2e AI Ckeditor. Add screenshots on failure. Steps to reproduce Proposed resolution Remaining tasks User interface changes API changes Data model changes ### [Batch embeddings for improved indexing performance](https://git.drupalcode.org/project/ai/-/work_items/3568648) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Sergiu Nagailic (Nikro) | Labels: AI Initiative Sprint, AI Product Development, aiSearch, candidate 1.5.x Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1704 [Batch embeddings for improved indexing performance](https://git.drupalcode.org/project/ai/-/merge_requests/1704) | State: opened | Author: Artem Dmitriiev (a.dmitriiev), 286 diff lines Description: >>> [!note] Migrated issue Reported by: [paulsheldrake](https://www.drupal.org/user/1350686) Related to !1126 >>> [Tracker] Update Summary: Increase embeddings performance Short Description: Support batching for embeddings so multile chunks can be converted and inserted at a time instead of doing each chunk sequentially. Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Indexing is slow for vector DBs Proposed resolution Add batching so more chunks can be process in one go. This MR updates the underlying classes t… ### [RestrictToTopic guardrail: add semantic topic matching mode](https://git.drupalcode.org/project/ai/-/work_items/3584977) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, Needs manual testing, aiCoreModule Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Add a semantic matching mode to the RestrictToTopic guardrail so LLM-identified topics are matched against the configured list by meaning rather than exact string equality. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation The restrict_to_topic guardrail in src/Plugin/AiGuardrail/RestrictToTopic.php asks an LLM which of the configured topics are present in the input text, then uses an exact-string in_… ### [Add SensitiveContentStream guardrail and kernel test for StreamableGuardrailInterface mid-stream buffering and evaluation](https://git.drupalcode.org/project/ai/-/work_items/3584951) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::feature Description: >>> [!note] Migrated issue Reported by: [abhisekmazumdar](https://www.drupal.org/user/3557964) >>> [Tracker] **Update Summary:** SensitiveContentStream plugin added; kernel tests pass; pipeline green on 1.x **Short Description:** Add a concrete streaming guardrail plugin that suppresses marked content mid-stream **Check-in Date:** 06/04/2026 *Metadata is used by the [AI Tracker](https://www.drupalstarforge.ai/). Docs and additional fields [here](https://www.drupalstarforge.ai/ai-dashboard/docs).* [/Tracker] ## Problem/Motivation #3582179 introduced `StreamableGuardrailInterface` — a guar… ### [Document FunctionalJavascript test conventions and add CI check for ungrouped/unrecorded tests](https://git.drupalcode.org/project/ai/-/work_items/3582633) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::task, documentation Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1432 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Document FunctionalJavascript test conventions and add CI check for ungrouped/unrecorded tests Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation The AI module has a system for running FunctionalJavascript tests in CI that relies on two conventions: Every new FJS test class must have a @group annotation with the issue number it belongs to, so the filter script (scripts/filter-functio… ### [Add event hook to ai_ckeditor to allow context injection](https://git.drupalcode.org/project/ai/-/work_items/3581952) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Jesse Hofmann-Smith (jessehs) | Labels: AI Initiative Sprint, AI Product Development, aiCkeditor, category::feature Description: >>> [!note] Migrated issue Reported by: [jessehs](https://www.drupal.org/user/620440) Related to !1469 !1425 >>> Problem/Motivation The ai_ckeditor module provides AI-powered CKEditor 5 actions (Tone, Translate, Summarize, etc.) but has zero entity awareness — it doesn't know what content type, bundle, or entity ID the editor is attached to. The ai_context module provides a sophisticated scope-based context selection system that can inject bundle-specific writing guidelines into AI prompts. These two modules cannot communicate because: ai_ckeditor does not pass entity information (… ### [Guardrail plugins only evaluate the last message](https://git.drupalcode.org/project/ai/-/work_items/3579088) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, Needs manual testing, aiCoreModule Description: >>> [!note] Migrated issue Reported by: [abhisekmazumdar](https://www.drupal.org/user/3557964) Related to !1467 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Both RegexpGuardrail and RestrictToTopic only inspect the last message in a conversation. The full chat history is passed in via ChatInput, but both plugins call end($messages) and evaluate that single message only. In a mult… ### [Indexing breaks with custom SearchAPI DataSource](https://git.drupalcode.org/project/ai/-/work_items/3575992) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::bug Description: >>> [!note] Migrated issue Reported by: [mxr576](https://www.drupal.org/user/315522) Related to !1321 !1248 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation We have a homegrown Search API that indexes things :tm: but they are not content entities and the data source does not extend \Drupal\search_api\Plugin\search_api\datasource\ContentEntity. Wh… ### [How does the provider notify of better models](https://git.drupalcode.org/project/ai/-/work_items/3575689) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Bruno Bruno (bbruno) | Labels: AI Initiative Sprint, AI Product Development, Needs UX review, aiCoreModule Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation We are currently setting opinionited default models in many providers as the default provider/model for a specific operation type if nothing already exists. The problem with this is that AI world moves really fast, so a model that was top of t… ### [Clean up ai_observability settings form](https://git.drupalcode.org/project/ai/-/work_items/3574499) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiObservability, category::task Description: >>> [!note] Migrated issue Reported by: [svendecabooter](https://www.drupal.org/user/35369) Related to !1221 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation It seems the \Drupal\ai_observability\Form\SettingsForm can use some cleanup / removal of unnecessary code: Uses both #default_value and #config_target. The former is not needed if the latter is used. Simplify constants ... ### [[AI Prompts] Update the Type Casing of Entities/Permissions](https://git.drupalcode.org/project/ai/-/work_items/3574417) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::task Description: >>> [!note] Migrated issue Reported by: [robloach](https://www.drupal.org/user/61114) Related to !1223 >>> [Tracker] Update Summary: Created the issue Short Description: Update the casing of AI Prompt Types Check-in Date: 02/18/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Following #3567796: UX: AI Prompts: Improve UX around initial setup, the AI Prompts user interface has a mix of letter casing. For example: "AI Prompt type". Would be good to consolidate them so that they're all using Title Case, as similar with other entities ac… ### [Provide proper support for "unconfigured" AI provider state](https://git.drupalcode.org/project/ai/-/work_items/3572645) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::bug, priority::major Description: >>> [!note] Migrated issue Reported by: [mxr576](https://www.drupal.org/user/315522) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation This is the second time we have hit a WSOD with the Gemini provider where simply enabling the module can break pages that instantiate AI provider clients. See #3572638: WSOD after module enabled. At the moment, this does not look like something that can… ### [The Toolbar Chatbot runs the fold out animation on page reload](https://git.drupalcode.org/project/ai/-/work_items/3568246) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, Needs UX review, aiChatbot Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1428 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation The chatbot was greatly improved with #3554510: Sync Design of Toolbar Chatbot with Canvas AI Chatbot, but one issue is that if you have a local storage to remember the position, when its open on page load it runs the open up… ### [Require merge commits into main branches to include an issue reference in the format #[number], without restricting commit messages on feature branches](https://git.drupalcode.org/project/ai/-/work_items/3566613) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::task Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1285 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Require merge commits into main branches to include an issue reference in the format #[number], without restricting commit messages on feature branches. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation We want better traceability between code changes and Drupal.org issues by ensuring that anything merged into main branches (e.g. 1.2.x, 1.3.x, 2.0.x) references the relevant issue num… ### [Research: Open standard for saving one request](https://git.drupalcode.org/project/ai/-/work_items/3566569) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, discussion Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Research an open standard for exporting and importing a single AI request between logging, observability, and AI API Explorer. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation We currently have multiple developer and observability tools such as AI Logging, AI Observability, and AI API Explorer, each capturing AI requests in different formats and at different stages. When a request fails or behaves un… ### [Create validator for structured content](https://git.drupalcode.org/project/ai/-/work_items/3561971) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1385 !1242 !1210 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Create a validator of structured content Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Currently we have an input in specific places like ECA, AI Agents or AI API Explorer where you can provide a structured content as a big json or yaml blob in a textarea. Since there are very specific rules about ho… ### [Fix Translate Text Explorer form functionality](https://git.drupalcode.org/project/ai/-/work_items/3553353) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, Needs tests, aiApiExplorer Description: >>> [!note] Migrated issue Reported by: [jhuhta](https://www.drupal.org/user/3387868) Related to !1333 !963 >>> Problem/Motivation When using the Translate Text Explorer, it always results in an exception: An error occurred The following error occurred while processing your request: Form errors cannot be set after form validation has finished. Of the following exception type: LogicException The reason seem to be the inconsistent use of a prefix in the form code. Steps to reproduce (required for bugs, but not feature requests) Have an translate text type of a provider (like ai_provider_d… ### [The chatbot config, default avatar does not accept tokens](https://git.drupalcode.org/project/ai/-/work_items/3546675) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiChatbot, category::feature Description: >>> [!note] Migrated issue Reported by: [anaconda777](https://www.drupal.org/user/3595801) Related to !1255 >>> Problem/Motivation In the block settings of the chat bot, the defaul avatar always shows User picture. Some sites may not use User picture image, instead a image field from user Profile. For example tokens in the field "Default Avatar" wont work, instead the default user pic is showed: [current-user:profile:field_profile_image] [current-user:profile:field_profile_image:entity] Steps to reproduce (required for bugs, but not feature requests) Please provide information like AI mo… ### [Move the input of structured output to an object.](https://git.drupalcode.org/project/ai/-/work_items/3545462) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::task Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1114 !873 !1115 >>> --- AI TRACKER METADATA --- Update Summary: Changes to make it easier to input structured output. Check-in Date: MM/DD/YYYY (US format) [When we should see progress/get an update] Due Date: MM/DD/YYYY (US format) [When the issue should be fully completed] Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 AI Tracker found here: https://www.drupalstarforge.ai/ --- END METADATA --- Problem/Motivation The current solution… ### [Provide AI usage reports in Drupal admin panel](https://git.drupalcode.org/project/ai/-/work_items/3535260) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Alexey Korepov (murz) | Labels: AI Initiative Sprint, AI Product Development, Vienna2025, aiLogging Description: >>> [!note] Migrated issue Reported by: [tonytosta](https://www.drupal.org/user/262359) Related to !826 >>> The AI module bundle should provide an easy way to view calls to AI providers - log requests and responses locally, build usage reports, available directly in the Drupal admin panel out of the box, without using any external tools. Steps to reproduce (required for bugs, but not feature requests) I will list these steps even though it is not required: Install AI module Install AI Usage Reports module See usage reports in the Drupal admin panel: logs of requests and responses, aggreg… ### [Chatbot closes itself when adding a modal](https://git.drupalcode.org/project/ai/-/work_items/3499451) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiChatbot, category::bug Description: >>> [!note] Migrated issue Reported by: [heyyo](https://www.drupal.org/user/474388) Related to !1277 >>> Problem/Motivation ChatBot closes itself, and impossible to reopen-it, without refreshing the page Steps to reproduce 1. Create new content with CKEditor, for example basic page 2. Open ChatBot 3. Add Media into Ckeditor, we can see ChatBot closes 4. Include the Media 5. It's impossible to reopen the ChatBot > Related issue: [Issue #3505569](https://www.drupal.org/node/3505569) ### [Create plugins for interacting with multimedia in AI](https://git.drupalcode.org/project/ai/-/work_items/3463843) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Alphons Jaimon (AJV009) | Labels: AI Initiative Sprint, AI Product Development, aiCkeditor, category::task Description: >>> [!note] Migrated issue Reported by: [kevinquillen](https://www.drupal.org/user/317279) Related to !1431 !761 >>> Problem/Motivation Now that #3462674: Create a generic AI plugin layer for CKEditor is pending a merge, one of the final OOTB AI plugins for CKEditor is generating an image from providers and saving the result back to the media library in Drupal. This would be a core piece of CKEditor plugin functionality. This is true for text to speech or audio providers as well. This is more of an intermediate task as I assume the plugin would need to understand how to convert the saved … ### [ai_ckeditor: streamGenerateContent causes 400 Bad Request with Gemini 2.x models](https://git.drupalcode.org/project/ai/-/work_items/3586425) State: opened | Updated: 2026-06-28 | Author: josecarlosmedero | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::bug, priority::major Description: **Problem / Motivation** `AiRequest.php` calls `setStreamedOutput(TRUE)` for all providers. The PHP client `gemini-api-php` sends a malformed request body when calling `streamGenerateContent` against Gemini 2.x models, resulting in `400 Bad Request`. The non-streaming endpoint `generateContent` works correctly with the same payload. The error in logs: `Error invoking model response: Client error: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:streamGenerateContent resulted in a 400 Bad Request response` Confirmed: the identical payload sent to `generateConten… ### [Save AI Content Suggestion plugin settings inside ai_content_suggestions.settings config object](https://git.drupalcode.org/project/ai/-/work_items/3586437) State: opened | Updated: 2026-06-28 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiContentSuggestions, category::feature Description: ## Summary At the moment the settings of AI Content Suggestion plugins are splitted between 3 config objects: - ai_content_suggestions.settings - ai_content_suggestions.prompts - ai_content_suggestions.tone ## Problem Content object `ai_content_suggestions.settings` needs to have all plugin settings to avoid loading unnecessary configurations, this way the plugin instantiation could be easier as configuration will exist in the same config file. > Change record: [#3591233](https://www.drupal.org/node/3591233) ### [AI Assistant runner fatals when an ai_agent config entity shares its ID with a code-defined AiAgent plugin](https://git.drupalcode.org/project/ai/-/work_items/3586449) State: opened | Updated: 2026-06-28 | Author: Ahmad Khalil (ahmad-khalil-imagex) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, priority::normal, state::rtbc Description: Project: AI\ Component: AI Assistant API\ Version: 1.4.x\ Issue type: Bug **Problem/Motivation** Drupal\\ai_assistant_api\\Service\\AgentRunner::runAsAgent() resolves the assistant's underlying agent through the plugin.manager.ai_agents plugin manager: // AgentRunner.php:74\\ $agent = this-\>aiAgentPluginManager-\>createInstance(assistant_id); The plugin manager surfaces two kinds of definitions under a single ID namespace: 1. Code-defined AiAgent plugins, which extend AiAgentBase. 2. Config-entity agents, which are wrapped at discovery time in AiAgentEntityWrapper. When a code plugin a… ### [Add interactive refinement capability to Field Widget Actions](https://git.drupalcode.org/project/ai/-/work_items/3586468) State: opened | Updated: 2026-06-28 | Author: Edward Zwart (ezeedub) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, priority::normal Description: ## Summary Add support for interactive refinement in ai_automators Field Widget Action plugins, allowing users to iteratively improve AI-generated content through conversational prompts before accepting it into a field. This is the companion issue to https://www.drupal.org/project/field_widget_actions/issues/3547306, which adds the modal infrastructure. This issue covers wiring up the automator plugins to use it. ## Problem Field Widg… ### [Document the AI module ecosystem: a categorized list of related modules with links and summaries](https://git.drupalcode.org/project/ai/-/work_items/3586482) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Rob Loach (robloach) | Labels: AI Initiative Sprint, AI Product Development, category::task, priority::normal Description: ## Description The AI module has grown a large ecosystem of companion projects on drupal.org — providers, vector database (VDB) providers, agents, recipes, tools, automators, and full distributions/CMS profiles. Today there is no single, curated page in the AI module's documentation that tells a site builder or developer **what exists, where to find it, and what each project does.** Discovering these modules currently means searching drupal.org by hand or relying on word of mouth. A maintained ecosystem index would make the AI module dramatically easier to adopt: people could see at a glance… ### [Add a deterministic script to auto-generate the providers/operation-types matrix from GitLab](https://git.drupalcode.org/project/ai/-/work_items/3586488) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::task, documentation Description: ## Description The provider/operation-type matrix at `docs/providers/matris.md` is maintained by hand. Today the only way it stays current is a note at the bottom asking contributors to open a pull request when their provider is missing — so it drifts out of date and is incomplete. We should add a **deterministic** script under `scripts/` that discovers every AI provider plugin published on `git.drupalcode.org`, works out which operation types each one supports, and regenerates `docs/providers/matris.md` from that data. Determinism matters so the script can run in CI / on a schedule and prod… ### [Generalize behaviour of FWA with Automators (AI Core v2)](https://git.drupalcode.org/project/ai/-/work_items/3586515) State: opened | Updated: 2026-06-28 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiAutomators, category::task Description: The refactor was done for version 1.x (1.4.x and 1.5.x). It was not possible to easily cherry-pick the changes to 2.x and 2.0.x. This issue is to port changes from https://git.drupalcode.org/project/ai/-/merge_requests/1536 to 2.x and 2.0.x branches. ### [Config action to verify if any vector database is there and it is setup](https://git.drupalcode.org/project/ai/-/work_items/3586517) State: opened | Updated: 2026-06-28 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::feature Description: ## Summary At the moment there is a config action `verifySetupAi` that is able to check whether the specific vector database provider is there in the system and it is setup. This is possible with `vdb_provider_is_setup` payload. In the real use case the plugin name of the vdb provider is not that relevant, as it is needed to know that any vdb provider is there and it is properly configured (setup) to create a search api server. One (any) would be enough without actually specifying which one. ## Problem There is no way at the moment to check that any vdb provider is installed and configured… ### [Add a Moderation Guardrail plugin (configurable moderation provider/model as a guardrail)](https://git.drupalcode.org/project/ai/-/work_items/3586531) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, aiExternalModeration Description: ## Goal Add a single configurable **Moderation Guardrail** plugin to the **Guardrails** system, so any moderation provider/model can be used as a guardrail. This makes "each moderation provider becomes a possible guardrail" achievable through configuration of one plugin, and is the foundation for folding external moderation into Guardrails. This issue covers **only creating the plugin**. The migration of existing `ai.external_moderation` configuration onto guardrail sets, and the deprecation of the old moderation runner, are handled separately in **#3586528** (which is blocked by this issue)… ### [Add Summarization operation type support to the echoai test provider](https://git.drupalcode.org/project/ai/-/work_items/3586537) State: opened | Updated: 2026-06-28 | Author: Ahmad Khader (Ahmad-Khader) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, Easy Wins, category::task Description: ## Description The echoai mock provider (`Drupal\ai_test\Plugin\AiProvider\EchoProvider`, in the `ai_test` submodule) implements several operation types so that downstream modules can kernel-test their integrations against a deterministic provider. It does not yet implement the **Summarization** operation type. ## Acceptance criteria * `echoai__ai` reports support for the `summarize` operation type and is selectable for it. * Calling `summarize()` with text `Foo` returns a `SummarizationOutput` whose normalized value is `Summary of: Foo`. * Consumers (e.g. the `ai_integration_eca` Summariz… ### [[Research] Mechanism to force deprecated bundled submodules onto their contrib version (start with ai_validations)](https://git.drupalcode.org/project/ai/-/work_items/3586538) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiValidations, category::plan Description: ## Summary Research and define a **repeatable mechanism** for forcing a site off a **deprecated bundled submodule** (shipped inside AI Core) and onto the **standalone contrib module** of the same machine name. Use **`ai_validations`** as the first concrete case, then generalise the outcome into a documented "deprecate-and-switch" playbook for the other submodules being moved to contrib. This is the missing *"how"* behind the deprecation work already started in #3552888 (Move out AI Validations), #3554535 / [CR 3570275](https://www.drupal.org/node/3570275) (AI Translate) and #3586497 (AI Sear… ### [Add an AI reranking processor for Search API (owned by the AI module)](https://git.drupalcode.org/project/ai/-/work_items/3586543) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::feature Description: ### Problem/Motivation Reranking improves the precision of semantic search by re-ordering an initial result set with a dedicated rerank model (or a general-purpose LLM). AI Core already added a `rerank` operation type in [#3488114](https://www.drupal.org/project/ai/issues/3488114) (now closed), but nothing in the ecosystem consumes it yet. [#3557901 — Add Reranking Support to AI Search](https://git.drupalcode.org/project/ai_search/-/work_items/3557901) proposed adding reranking directly to AI Search. On reflection it makes more sense for the **AI module itself to own this**: reranking is a g… ### [Introduce a modern AI Chatbot frontend library](https://git.drupalcode.org/project/ai/-/work_items/3586571) State: opened | Updated: 2026-06-28 | Author: Bruno Bruno (bbruno) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, why::needsInfo Description: ## Description The current AI Chatbot module is tightly coupled to the DeepChat library. DeepChat does more than render the UI - it also handles the API communication, chat state, and message history. Functionality such as tool calling, conversation history, and thread management is implemented in a DeepChat-specific way, making it difficult to swap in alternative chat interfaces. [assistant-ui](https://www.assistant-ui.com/) was identified as a promising alternative - a React-based component library that supports custom API endpoints and offers significantly easier customization than DeepCha… ### [[2.x] Add a setup-automators agent skill to configure automators on fields](https://git.drupalcode.org/project/ai/-/work_items/3586564) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Ann Mary Sruthy (annmarysruthy) | Labels: AI Initiative Sprint, AI Innovation, aiAutomators, category::task Description: ## Description The AI Automators submodule lets site builders attach an **automator** to a field so its value is generated automatically when the entity is saved (for example, summarising body text into a summary field, or generating alt text for an image). Configuring an automator today means working through the field's admin UI. This task adds a `setup-automators` agent skill (under `modules/ai_automators/.agents/skills/`) that configures automators on fields, driven through the [Tool module](https://www.drupal.org/project/tool)'s tools via `drush tool:run`. It is the Automators counterpar… ### [[1.x] Add a setup-automators agent skill to configure automators on fields](https://git.drupalcode.org/project/ai/-/work_items/3586563) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Ann Mary Sruthy (annmarysruthy) | Labels: AI Initiative Sprint, AI Innovation, aiAutomators, category::task Description: ## Description The AI Automators submodule lets site builders attach an **automator** to a field so its value is generated automatically when the entity is saved (for example, summarising body text into a summary field, or generating alt text for an image). Configuring an automator today means working through the field's admin UI. This task adds a `setup-automators` agent skill (under `modules/ai_automators/.agents/skills/`) that configures automators on fields, driven through the [Tool module](https://www.drupal.org/project/tool)'s tools via `drush tool:run`. It is the Automators counterpar… ### [Add a configure-ai-settings agent skill for general AI settings (default models, providers, timeout, trusted domains)](https://git.drupalcode.org/project/ai/-/work_items/3586562) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, aiCoreModule, category::task Description: ## Description Following the same pattern as the `setup-guardrails` skill (#3586561), the AI module would benefit from a companion skill that configures the module's **general settings** on a running site, driven through the [Tool module](https://www.drupal.org/project/tool)'s tools via `drush tool:run`. Today these settings can only be inspected and changed through the admin UI at `/admin/config/ai/settings`. This task adds a `configure-ai-settings` skill (sibling of `create-guardrail-plugin` and `setup-guardrails`, under `ai/.agents/skills/`) covering the core operational settings stored i… ### [Add a setup-guardrails agent skill to configure guardrails, guardrail sets, and global guardrails](https://git.drupalcode.org/project/ai/-/work_items/3586561) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, aiCoreModule, category::task Description: ## Description The AI module already ships a `create-guardrail-plugin` agent skill that *authors* new guardrail plugin classes. There is, however, no equivalent skill for *operating* the guardrails that already exist — i.e. configuring them on a running site. Site builders and agents currently have to drive the admin UI by hand to wire up guardrails, guardrail sets, and the global guardrail list. This task adds a `setup-guardrails` skill (sibling of `create-guardrail-plugin`, under `ai/.agents/skills/`) that configures guardrails rather than creating them, driven through the [Tool module](ht… ### [Enforce execution principal in AiAssistantApiRunner (no fallback to session user when executor is provided)](https://git.drupalcode.org/project/ai/-/work_items/3574723) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Abhishek Dhariwal (adaptative) | Labels: AI Initiative Sprint, AI Innovation, category::task, priority::normal Description: >>> [!note] Migrated issue Reported by: [scott falconer](https://www.drupal.org/user/52557) Related to !1233 >>> Problem/Motivation Issue #3574662 hardened the /api/deepchat boundary by rejecting caller-supplied execution identity fields. However, the shared runner layer still depends on ambient current-user behavior in AiAssistantApiRunner, which is unsafe for queue/cron/sessionless execution paths and weakens the #3573899 execution-principal contract. Proposed resolution Add explicit executor support to AiAssistantApiRunner (executor passed as UID at runner boundary). Resolve executor… ### [Drupal AI Contribution meeting 2026-06-29](https://git.drupalcode.org/project/ai/-/work_items/3586575) State: opened | Updated: 2026-06-28 | Author: Valery Lourie (valthebald) | Assigned: unassigned | Labels: Description: Drupal AI Contribution meeting from June 29 at 18:00 to June 30, 2026 19:00 (Central European time, check your local time at https://www.timebie.com/std/berlin.php?q=18) Previous meeting [#3586498: Drupal AI Contribution meeting 2026-06-15](https://git.drupalcode.org/project/ai/-/work_items/3586498) ## Where #ai-contrib channel in [Drupal Slack](https://www.drupal.org/slack/) ## Agenda ### Attendees self-intro and interests ### Follow-up to topics of previous meeting ### Suggest your topic in comments ### Add the issue you want to discuss as a comment or related issue to this meeting … ### [Agent Skill 'create-ai-api-explorer' failed validation](https://git.drupalcode.org/project/ai/-/work_items/3586574) State: opened | Updated: 2026-06-28 | Author: Ronald te Brake (ronaldtebrake) | Assigned: unassigned | Labels: aiApiExplorer, category::bug Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1732 [Update the Ai API Explorer Skill name, matching the directory as per Agent Skills specification](https://git.drupalcode.org/project/ai/-/merge_requests/1732) | State: opened | Author: Ronald te Brake (ronaldtebrake), 11 diff lines Description: ## Summary The Agent Skill in ai_api_explorer does not comply with the Agent Skills specification - https://agentskills.io/specification#name-field which could lead to it not being invoked by Agents. In https://git.drupalcode.org/project/ai_best_practices/-/work_items/3588963 you can see our validation showed this: ``` [WARNING] Skill 'create-ai-api-explorer' failed validation: Directory name 'create-ai-api-explorer' must match skill name 'create-new-explorer' ``` ## Steps to reproduce 1. Install `drupal/ai` 2. `ddev composer require --dev drupal/ai_best_practices:@dev` 3. See the vali… --- MERGE REQUESTS (24h) --- ### [Issue #3477173: Add functional tests for AI CKEditor](https://git.drupalcode.org/project/ai/-/merge_requests/1302) State: opened | Author: velmir_taky (root_emarketing) | Branch: 3477173-add-functional-tests-all | 635 diff lines Description: Closes #3477173 ### [Issue #3568648: Batch embeddings as a first-class operation type (follow-up to !1704)](https://git.drupalcode.org/project/ai/-/merge_requests/1726) State: opened | Author: Ahmad Khalil (ahmad-khalil-imagex) | Branch: 3568648-batch-embeddings-long-running-approach | 607 diff lines Description: # !1726 — ai (#3568648) Pushed a follow-up that makes batch embeddings a first-class, non-breaking operation type and hardens the VDB path. ## Summary * New `BatchEmbeddingsInterface` operation type with ID `batch_embeddings`. * Opt-in. * Extends `OperationTypeInterface`. * Makes `batchEmbeddings()` a trigger method so it routes through `ProviderProxy`. * This ensures the operation gets: * Events * Config normalization * Tags * `ai_logging` * `EmbeddingsInterface` is untouched, so existing providers are unaffected. * `OpenAiBasedProviderClientBase` now implements `Ba… --- COMMITS (24h) --- (none) ======================================================================== ## [2] summariseModule:ai_initiative:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Drupal AI Initiative (machine name: ai_initiative) Reporting period: last 24h (2026-06-28T05:00:06+00:00 to 2026-06-29T05:00:06+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

    Drupal AI Initiative

    then use

    ,

    ,

      /
    • , and as needed. Output only the HTML fragment with no surrounding , , or
      tags. After the project summary prose, add a single subsection titled "

      How can I help on this project?

      " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Create AI Validations Recipe](https://git.drupalcode.org/project/ai_initiative/-/work_items/3585699) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::task, priority::normal Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Description We want to create a new Drupal AI recipe in a separate project ai_recipe_validations, that provides a turnkey configuration for the AI Validations module. This recipe is intended to be used in the Drupal AI Demo and must be fully compatible with Drupal CMS (Starshot). Instead of creating new… ### [Recipe: AI Automators comment-spam scoring and auto-unpublish](https://git.drupalcode.org/project/ai_initiative/-/work_items/3585304) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, ideas Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Ship a recipe that wires AI Automators onto the core Comment entity to score spam on a custom_field and auto-unpublish comments scoring 8 or higher, with a View for triage. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation AI Automators is powerful but the on-ramp is still "wire it up yourself" - even for the canonical moderation use case of scoring comments for spam. We want a Drupal recipe that site… ### [Create documentation on how to create issues that are testable on DrupalForge](https://git.drupalcode.org/project/ai_initiative/-/work_items/3583362) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::task, documentation Description: >>> [!note] Migrated issue Reported by: [afoster](https://www.drupal.org/user/594458) >>> [Tracker] Update Summary: Blocked — document how to create DrupalForge-testable issues spanning multiple dev module versions Check-in Date: 04/13/2026 Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Many AI issues span multiple modules at once. For example, when we work on UI improvements in the AI module and need to use those same improvements in CCC, reviewers need dev versions of both modules installed together to t… ### [[Meta] Create AI Review Functionality / Create Technical Concept](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575158) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Christoph Breidert (breidert) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Based on the agreed functional concept and UX design, define the technical approach for implementing the AI-powered content review system. This concept will be the foundation for implementation in the next sprint. Tasks Define the architecture of the review pipeline: how reviews are triggered, … ### [[Meta] Create AI Review Functionality / Create UX](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575157) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Angela Saldaña (angela_saldana) | Labels: AI Initiative Sprint, AI Product Development, category::task, priority::normal Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Design the user experience for the AI-powered content review system, covering all key interactions an editor encounters when working with review results. Tasks Review and align with the UX briefing provided by the functional concept before starting design work Design the "Review with AI" trigge… ### [[Meta] Create AI CMS Demo System / Create Hoster POC — amazee.io](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575149) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Dan Lemon (dan2k3k4) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Create the first hoster-specific branch of the AI CMS Demo System, adapting the main branch baseline to work on Amazee.io. This will serve as the reference implementation for how hoster branches are structured and maintained. Tasks Branch off main and set up the Amazee.io-specific configuration… ### [[Meta] Create AI CMS Demo System / Create Demo POC](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575147) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Dan Lemon (dan2k3k4) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Set up a minimal working demo instance based on Drupal CMS that integrates a curated set of AI functionality developed during the Product Development Sprints. This POC represents the main branch baseline that all hoster branches build upon. Tasks Set up a minimal Drupal CMS installation as the … ### [[Meta] Create AI CMS Demo System / Create Technical Concept](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575145) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Dan Lemon (dan2k3k4) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Define and document the technical foundation of the AI CMS Demo System — the branching strategy, the customization approach for different hosters, and the contribution workflow. Tasks Document the branching model: how main, hoster branches, and the demo branch relate to each other and how… ### [[Meta] Create AI CMS Demo System / Organize and Set Up Repository Access](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575143) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Christoph Breidert (breidert) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Set up the GitLab repository for the AI CMS Demo System and configure access for all Drupal AI Partners (Makers). Tasks Create the GitLab project with the agreed repository structure Configure access permissions so the repository is restricted to Drupal AI Partners (Makers) Set up the initial b… ### [Start setting up AI Starterkit](https://git.drupalcode.org/project/ai_initiative/-/work_items/3569199) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Research and initial setup for AI Starterkit showcase website Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation There is a growing need to demonstrate the full production capabilities of the AI Initiatives ecosystem in a concrete, opinionated, and easy-to-consume way. While the AI module and related projects provide powerful building blocks, there is currently no canonical showcase that ties these tog… ### [Create QA image for DrupalPod](https://git.drupalcode.org/project/ai_initiative/-/work_items/3558437) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Tawny Bartlett (littlepixiez) | Labels: AI Initiative Sprint, AI Product Development, Quality Assurance, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> Problem/Motivation Currently its very hard to do QA on some issue in the AI issue queue, because you have to setup a lot of things locally. DrupalPod+DrupalForge has a solution for this: https://www.drupal.org/docs/develop/development-tools/drupalpod/drupalpod-drupal-forge Per discussions with Salman and Darren at DrupalForge, the easiest is that we create our own base image and work from that. This exists here: https://github.com/drupalforge/DrupalPod-AI-QA We need to fill that with all the … ### [[Meta] AI Content Review Workflow](https://git.drupalcode.org/project/ai_initiative/-/work_items/3545606) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Christoph Breidert (breidert) | Labels: AI Initiative Sprint, AI Product Development, category::plan, planning Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> Goals & Guiding Principles Provide a native Drupal way to review content with the help of AI through an intuitive user interface. This functionality should integrate seamlessly with Drupal's existing content management workflows while offering AI-powered assistance for common editorial tasks. Key principles: Examples include AI-powered content rating systems, automated suggestions for guideline compliance, content flagging for review, brand voice consistency checks, and legal/regulatory complianc… ### [GitLab workflow automation for AI Initiative repos (exploration + rollout)](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586474) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative, AI Initiative Sprint, AI Innovation, AI Product Development Description: ## Summary Build out an automated GitLab workflow layer for the Drupal AI Initiative's GitLab projects (`project/ai`, `project/ai_agents`, providers, etc.) so that issue and MR housekeeping — state transitions, label hygiene, completeness checks, dependency review pings — happens automatically instead of requiring manual maintainer effort. This is split into two phases: 1. **Exploration** — evaluate which Drupal-side platform is the right host for the automation logic (Rules, ECA, or a custom module on top of [`gitlab_api`](https://www.drupal.org/project/gitlab_api)). 2. **Automation rollou… ### [Module Finder: recruit beta testers and drive incremental improvements](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586577) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::task, feedback Description: ## Summary Recruit beta testers for the **Module Finder** and use their feedback to make incremental improvements. Module Finder is an AI-powered semantic search over all Drupal contributed modules: it has a UI for searching, and an agent skill that does the same search so a coding agent can check whether functionality already exists in the community **before** writing custom code — avoiding reinventing what contrib already provides. The immediate goal is to put it in front of real users, collect "what could be done better", and iterate in small increments. A beta link will be shared with an… ### [[Meta] Skills for hosting providers: control deployment and environment setup](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586575) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation Description: ## Summary Across the AI Initiative we want agent skills that can control **deployment and environment setup** on the various hosting providers Drupal sites run on. The goal is that a developer can set up and deploy environments through normal text instructions, with the skill translating that intent into the provider's own API or CLI. This meta tracks the effort and holds one sub-issue per hosting provider. ## Goals - A consistent pattern for provider "deployment & environment" skills, reusable across hosts. - For each supported provider: create/configure an environment and deploy to it fr… ### [Research: DevPanel API — what deployment & environment automation is possible](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586576) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: Sprint13-2026, ai::outside Description: ## Research Question Can [DevPanel](https://devpanel.com) environment setup and deployment be driven programmatically — enough that an agent skill could set up and deploy to **real** DevPanel environments from natural-language instructions? What does the DevPanel API/CLI expose, and where are its limits? ## Background Part of the hosting-provider skills meta #3586575. Before building a DevPanel deployment skill, we need to know what the platform actually allows through its API/CLI — authentication, environment lifecycle, deploys — so we can scope (or rule out) a skill realistically. ## Sco… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [3] summariseModule:ai_agents_test:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Agents Test (machine name: ai_agents_test) Reporting period: last 24h (2026-06-28T05:00:06+00:00 to 2026-06-29T05:00:06+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

      AI Agents Test

      then use

      ,

      ,

        /
      • , and as needed. Output only the HTML fragment with no surrounding , , or
        tags. After the project summary prose, add a single subsection titled "

        How can I help on this project?

        " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Run more than one test group in Bulk - Test Collections?](https://git.drupalcode.org/project/ai_agents_test/-/work_items/3541324) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [yautja_cetanu](https://www.drupal.org/user/626050) Related to !11 >>> Problem/Motivation When doing automated tests or just trying different models and not using Tests to help with prompt engineering its good to just fire off all the same tests you want and get the overall results. Steps to reproduce Proposed resolution Maybe make views bulk operation style UI so you can click a checkbox next to the test groups you want to run and also run all. Or we could have a Tag on test groups and run all of a specific tag? Maybe this is better if we are goin… ### [Research: merging ai_agents_test with ai_eval (and AiLlm test harness)](https://git.drupalcode.org/project/ai_agents_test/-/work_items/3585124) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::plan, code Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Research whether ai_agents_test should be merged with ai_eval, and how the core ai module's tests/src/AiLlm harness fits into the picture. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation We currently have three overlapping efforts in the Drupal AI ecosystem that each cover part of "validate that an AI configuration actually works": ai_agents_test - a Drupal module that lets site builders build test… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [4] summariseModule:gemini_provider:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Gemini Provider (machine name: gemini_provider) Reporting period: last 24h (2026-06-28T05:00:06+00:00 to 2026-06-29T05:00:06+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

        Gemini Provider

        then use

        ,

        ,

          /
        • , and as needed. Output only the HTML fragment with no surrounding , , or
          tags. After the project summary prose, add a single subsection titled "

          How can I help on this project?

          " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Image Embeddings](https://git.drupalcode.org/project/gemini_provider/-/work_items/3588392) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !35 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Gemini is one of the only providers that has file embeddings, outside of AWS Titan. This means that you can index and search using an image and image likeness. Currently the embedding solution only allows for text, we should add at least images here (and think … ### [Add support for batch embeddings](https://git.drupalcode.org/project/gemini_provider/-/work_items/3589183) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: >>> [!note] Migrated issue Reported by: [a.dmitriiev](https://www.drupal.org/user/3235287) Related to !37 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation As a follow up to this issue https://git.drupalcode.org/project/ai/-/work_items/3568648 it would be nice to add support of batch embeddings as Gemini models can do that. Proposed resolution Use method batchEmbedContents from Gemini client when EmbeddingsInput conta… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [5] summariseModule:ai_agents:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Agents (machine name: ai_agents) Reporting period: last 24h (2026-06-28T05:00:06+00:00 to 2026-06-29T05:00:06+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

          AI Agents

          then use

          ,

          ,

            /
          • , and as needed. Output only the HTML fragment with no surrounding , , or
            tags. After the project summary prose, add a single subsection titled "

            How can I help on this project?

            " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Explore export/sync plugin system for AI Agents to external agent platforms (Claude Code, VAPI, etc.)](https://git.drupalcode.org/project/ai_agents/-/work_items/3577241) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !249 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Explore export/sync plugin system for AI Agents to external agent platforms (Claude Code, VAPI, etc.) Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation The AI Agents module currently allows defining and configuring agents inside Drupal. However, many modern AI ecosystems expect agents to exist inside external platforms such as Claude Code or services like VAPI. In many cases Drupal sh… ### [Add views agent](https://git.drupalcode.org/project/ai_agents/-/work_items/3542457) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, AI Views, Workstream 4a Description: >>> [!note] Migrated issue Reported by: [jibran](https://www.drupal.org/user/1198144) Related to !206 !172 >>> Problem/Motivation --- AI TRACKER METADATA --- Update Summary: This is an example bit of metadata to test things working with the tracker. Check-in Date: 09/01/2025 (US format) [When we should see progress/get an update] Due Date: 09/09/2025 (US format) [When the issue should be fully completed] Blocked by: #3528730: Create ShortTermMemoryPlugin(New issues on new lines) #3528549: Allow tool calling in streamed chat Additional Collaborators: jibran AI Tracker found here: https://… ### [Create an ChatProcessor](https://git.drupalcode.org/project/ai_agents/-/work_items/3585984) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, state::rtbc Description: With https://git.drupalcode.org/project/ai/-/work_items/3492940 the agents could create ChatProcessor that has the settings the AI Assistant layer has. Discussion has to be made if we already support multiple threads and want that in the future, so you can basically have one chat where you can pick the agent you talk to. But for 1-to-1 functionality parity, it means that the consumer sets one agent per chatbot. ### Proposed resolution Create a ChatProcessor for agent that has a form that sets:\ \* Agent\ \* Specific Error Messages (?)\ \* Allow History (?) We need to discuss how we store h… ### [AI Agent entity form should reject machine names that collide with existing code-plugin IDs](https://git.drupalcode.org/project/ai_agents/-/work_items/3586026) State: opened | Updated: 2026-06-28 | Author: Ahmad Khalil (ahmad-khalil-imagex) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, state::rtbc Description: Project: AI Agents\ Component: Code\ Version: 1.4.x\ Issue type: Bug **Problem/Motivation** AiAgentManager merges two types of plugin definitions under a single ID namespace: 1. Code-defined AiAgent plugins discovered via parent::findDefinitions(). 2. ai_agent config entities, merged in by AiAgentManager::findDefinitions() at src/PluginManager/AiAgentManager.php:196. When an admin saves an ai_agent config entity with a machine name that matches an existing code-plugin ID, two failure modes occur: 1. The config entity is silently dropped from plugin discovery — the merge in findDefinitions… ### [Use the `ai_json_schema` editor for the AI Agent structured-output schema field](https://git.drupalcode.org/project/ai_agents/-/work_items/3586042) State: opened | Updated: 2026-06-28 | Author: Ahmad Khader (Ahmad-Khader) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::bug, state::needsWork Description: ## Description The AI Agent form renders the **structured output** JSON schema as a plain `textarea` (`AiAgentForm::buildFormMetadata()`, `$form['prompt_detail']['structured_output_detail']['structured_output_schema']`). That makes a schema cumbersome to add (no validation or editor affordances, easy to ship malformed JSON) and hard to read once saved (a wall of escaped JSON). Switch it to the AI module's dedicated `'#type' => 'ai_json_schema'` element (`Drupal\ai\Element\AiJsonSchema`), so adding a schema uses a purpose-built CodeMirror editor (syntax highlighting, JSON linting) and a saved… ### [Add possibility to catch all errors on a tool](https://git.drupalcode.org/project/ai_agents/-/work_items/3547994) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Needs screenshots, Needs tests Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !220 >>> Problem/Motivation Right now you have to throw specific errors for the agent to continue running. However this should be possible for an agent creator to decide themselves. If you for instance don't have permissions to run a tool, currently the whole run dies and it stops executing there and the UI has to take care of presenting this to the end user. But there could easily be agents that should be available to different roles, where it should be possible for certain roles to… ### [Let an agent use a role when running a tool](https://git.drupalcode.org/project/ai_agents/-/work_items/3518167) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::feature, code Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !87 >>> Problem/Motivation Currently the modus operandi is that the permissions checks that happens in tools, happens on the session that is running it. In AI Agents Explorer or the AI Assistants API, this means the user that triggers the query. There are however cases where agents should be completely autonomous or where they are triggered in queues/cron jobs, where there is no sessions attached. In those cases it should be possible for the person that sets up the agent to be able to… ### [Allow agents to have permissions, user or a role](https://git.drupalcode.org/project/ai_agents/-/work_items/3586019) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: scott falconer (scottfalconer) | Labels: AI Initiative Sprint, AI Innovation, category::feature, group::ai-initiative Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> Problem/Motivation There are two problems right now in terms of agents and roles/permissions: 1. If we use only the end-users permissions, the agent itself will have the same permissions, and wide generic tools that are not constrained, might be used as attack vectors via prompt injection. 2. When autonomous agents runs in cron, ECA or something else, they run as an anonymous user, meaning that they might not be able to solve what they want to solve, because they don't have enough permissions… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [6] summariseModule:tool:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Tool API (machine name: tool) Reporting period: last 24h (2026-06-28T05:00:06+00:00 to 2026-06-29T05:00:06+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

            Tool API

            then use

            ,

            ,

              /
            • , and as needed. Output only the HTML fragment with no surrounding , , or
              tags. After the project summary prose, add a single subsection titled "

              How can I help on this project?

              " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [MapDefinitionNormalizer and ContextDefinitionNormalizer break REST serialization (same as #3568588)](https://git.drupalcode.org/project/tool/-/work_items/3582939) State: opened | Updated: 2026-06-28 | Author: Stephan Huber (stmh) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation Description: ### Steps to reproduce 1. Install Drupal 11.x with the REST module enabled and a content entity exposed via a `ResourceBase` plugin that calls `$serializer->normalize($entity, 'json')` (e.g. any custom REST resource that returns entities as normalized arrays). 2. Enable the Tool module (verified on 1.0.0-alpha9, 1.0.0-beta1, and 1.0.x-dev). 3. Request the REST endpoint and inspect the JSON response — or reproduce directly via `drush php:eval`: ```php $node = \Drupal::entityTypeManager()->getStorage('node')->load(1); print_r(\Drupal::service('serializer')->normalize($node, 'json')); … ### [Allow controlling Tool return format](https://git.drupalcode.org/project/tool/-/work_items/3582933) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::feature, code Description: >>> [!note] Migrated issue Reported by: [b_sharpe](https://www.drupal.org/user/2512258) >>> Problem/Motivation Currently the return of a tool is textual which is fine for AI to analyze, but sometimes in MCP or other methods like AG-UI that want the raw result. Steps to reproduce Call a tool and observe the result, it will be something like: Tool Plugin executed successfully: View 'my_view' executed successfully.\nOutput for results: { actual tool result }Proposed resolution I see a few ways forward here Change to just spit out the raw result directly Separate the result from the text so … ### [Allow tool execute to be previewed](https://git.drupalcode.org/project/tool/-/work_items/3558037) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::task, code Description: >>> [!note] Migrated issue Reported by: [michaellander](https://www.drupal.org/user/636494) >>> Problem/Motivation It's been requested that we allow tools to be 'previewed'. This would mostly only affect tools that write out a permanent change. This is helpful in UI's when you want to simulate a flow, or debug, and this may be helpful in AI to allow more advanced 'planning' strategies. Proposed resolution Implement a preview method: <?phppublic function preview() {  $tool->setPreview();  $tool->execute();  $tool->setPreview(FALSE);}$tool->preview();?> An… ### [Introduce support for Discovery, Planning and Execute calls for MCP and Agents](https://git.drupalcode.org/project/tool/-/work_items/3546292) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::plan, code Description: >>> [!note] Migrated issue Reported by: [michaellander](https://www.drupal.org/user/636494) >>> Problem/Motivation The challenge with MCP right now is there seems to be a soft cap around 40 tools, and because all tools are sent on every request, more noise = more hallucinations and more failures. AI Agents on the other hand have similar degradation with tool counts, but are also currently lacking a reliable short term memory layer for better context management, meaning chaining many tool calls together quickly hits caps for requests/tokens. Proposed resolution We can reduce some of the to… ### [Proposal: make Tool's declarations introspectable over the CLI, and enrich input schema](https://git.drupalcode.org/project/tool/-/work_items/3582943) State: opened | Updated: 2026-06-28 | Author: Matt Glaman (mglaman) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation Description: ## Goal Tool stays consumer-agnostic. Give consumers — the Drush CLI, `mcp_server`, a future planner — enough *introspectable* metadata to understand and present a tool they didn't author, **before** invoking it. Most of what's needed already exists in the Tool API model; the work is mostly **surfacing** it over the CLI, plus **one genuinely additive** piece (richer input schema). Two deliverables (A additive, B surfacing); each can ship as its own MR. This issue is the umbrella proposal for a shared discussion. ## Background This comes out of building [`canvas_tools`](https://www.drupal.o… ### [File Input Handling](https://git.drupalcode.org/project/tool/-/work_items/3572774) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::task, code Description: >>> [!note] Migrated issue Reported by: [abhisekmazumdar](https://www.drupal.org/user/3557964) Related to !73 >>> Problem/Motivation The Tool API enables to be invoked by AI agents, which may include operations on files. We need to research how Tools should accept and process file inputs securely. This is a PoC and research work This means that after the research and proof of concept work, a few decisions will be made. All the required issue will be created, which may be included in this module or another one. Key research areas include Input formats File loading Normalization and schema… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [7] summariseModule:canvas:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Drupal Canvas (machine name: canvas) Reporting period: last 24h (2026-06-28T05:00:06+00:00 to 2026-06-29T05:00:06+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Narendra Singh Rathore (NarendraR), Rajab Natshah (RajabNatshah)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

              Drupal Canvas

              then use

              ,

              ,

                /
              • , and as needed. Output only the HTML fragment with no surrounding , , or
                tags. After the project summary prose, add a single subsection titled "

                How can I help on this project?

                " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Dependency Dashboard](https://git.drupalcode.org/project/canvas/-/work_items/3591657) State: opened | Updated: 2026-06-29 | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Assigned: unassigned | Labels: Description: This issue lists Renovate updates and detected dependencies. Read the [Dependency Dashboard](https://docs.renovatebot.com/key-concepts/dashboard/) docs to learn more. ## Repository Problems Renovate tried to run on this repository, but found these problems. - ⚠️ WARN: Failed to set branch status - ⚠️ WARN: Rate limit exceeded for api.github.com, as no hostRules set for this host. Please set a GITHUB_COM_TOKEN - ⚠️ WARN: No tool releases found. - ⚠️ WARN: No github.com token has been configured. Skipping release notes retrieval ## Deprecations / Replacements > ⚠️ **Warning** > The foll… --- MERGE REQUESTS (24h) --- ### [3591734: WSOD AssertionError: assert(!$data instanceof ComponentInputsMapping) in assert() when requesting tmgmt translation job](https://git.drupalcode.org/project/canvas/-/merge_requests/1296) State: opened | Author: Narendra Singh Rathore (NarendraR) | Branch: 3591734-wsod-assertionerror-assertdata-instanceof-componentinputsmapping | 216 diff lines Description: [Description of changes] AI-Generated: Yes (Used opencode to fix the error). ## Testing instructions - [ ] Setup TMGMT and all related modules for translation to work on Canvas - [ ] Create a code component with Date prop with single cardinality. - [ ] Create a Canvas Page and place above code component and publish the page - [ ] Go to `/admin/tmgmt/sources` and Click Request translation button after selected desired language to translate in. - [ ] Error will appear. Closes #3591734 ### [chore(deps): update dependency @eslint/compat to v2](https://git.drupalcode.org/project/canvas/-/merge_requests/1306) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/eslint-compat-2.x | 13 diff lines Description: This MR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@eslint/compat](https://github.com/eslint/rewrite/tree/main/packages/compat#readme) ([source](https://github.com/eslint/rewrite/tree/HEAD/packages/compat)) | [`^1.3.1` → `^2.0.0`](https://renovatebot.com/diffs/npm/@eslint%2fcompat/1.4.1/2.1.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@eslint%2fcompat/2.1.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confide… ### [chore(deps): update dependency @chromatic-com/storybook to v5](https://git.drupalcode.org/project/canvas/-/merge_requests/1305) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/chromatic-com-storybook-5.x | 13 diff lines Description: This MR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@chromatic-com/storybook](https://github.com/chromaui/addon-visual-tests) | [`^3.2.2` → `^5.0.0`](https://renovatebot.com/diffs/npm/@chromatic-com%2fstorybook/3.2.7/5.2.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@chromatic-com%2fstorybook/5.2.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@chromatic-com%2fstorybook/3.2.7/5.2.1?slim=true) | >… ### [fix(deps): update npm minor and patch](https://git.drupalcode.org/project/canvas/-/merge_requests/1238) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/npm-minor-and-patch | 77 diff lines Description: This MR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@axe-core/playwright](https://github.com/dequelabs/axe-core-npm) | [`4.11.1` → `4.12.1`](https://renovatebot.com/diffs/npm/@axe-core%2fplaywright/4.11.1/4.12.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@axe-core%2fplaywright/4.12.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@axe-core%2fplaywright/4.11.1/4.12.1?slim=true) | | [@babel/parser](… ### [chore(deps): update mysql docker tag to v8.4](https://git.drupalcode.org/project/canvas/-/merge_requests/1272) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/mysql-8.x | 13 diff lines Description: This MR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | mysql | service-image | minor | `8.0` → `8.4` | --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "before 6am on Monday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever MR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this MR, c… ### [feat: #3567225 Allow per-node override of Content Template via checkbox in node selector](https://git.drupalcode.org/project/canvas/-/merge_requests/948) State: opened | Author: Rajab Natshah (RajabNatshah) | Branch: 3567225-allow-per-node-override | 261 diff lines Description: Closes #3567225 ## Summary Allows editing a Canvas layout on an individual node, overriding its Content Template. - A per-node Canvas editor (`/canvas/editor/node/{node}`) edits the node's own layout. - Field linking (dynamic prop sources) resolves against the node as the host entity. When editing a Content Template, the preview entity remains the host. - The Page Data panel is hidden in the per-node editor, and when `drupalSettings.canvas.hidePageDataPanel` is `TRUE`. - Prop-source suggestions are offered for node layouts, not only Content Templates. ## Changes - Back end: `ApiLayoutCont… --- COMMITS (24h) --- (none) ======================================================================== ## [8] summariseModule:ai_context:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Context Control Center (CCC) (machine name: ai_context) Reporting period: last 24h (2026-06-28T05:00:06+00:00 to 2026-06-29T05:00:06+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

                Context Control Center (CCC)

                then use

                ,

                ,

                  /
                • , and as needed. Output only the HTML fragment with no surrounding , , or
                  tags. After the project summary prose, add a single subsection titled "

                  How can I help on this project?

                  " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Clean up CCC tooltip, truncation, and icon-only content](https://git.drupalcode.org/project/ai_context/-/work_items/3586302) State: opened | Updated: 2026-06-29 | Author: Kristen Pol (kepol) | Assigned: Joshua Fernandes (joshua1234511) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **3. Tooltip, Truncation, And Icon-Only Content** **Priority:** High to Medium **Why group these together:** These UI patterns all expose important information through `data-ai-tooltip`, truncation, or visual icons. They should be reviewed as one accessibility pass. Includes: - Replace links in `#markup`. - Add new-tab accessible warnings and `rel`. - Fix CSS-only external-link indicator assumptions. ## Solution ### 3.1 Make tooltip-dependent content ava… ### [Clean up CCC cacheability and access metadata](https://git.drupalcode.org/project/ai_context/-/work_items/3586300) State: opened | Updated: 2026-06-29 | Author: Kristen Pol (kepol) | Assigned: Joshua Fernandes (joshua1234511) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **1. Cacheability And Access Metadata** **Priority:** High **Why group these together:** These fixes all involve Drupal render/cacheability metadata and access-result cache contexts. They should be reviewed together to avoid fixing one stale-cache path while leaving related cacheability gaps. Includes: - `AiContextOverviewController` cache metadata. - Duplicate overview query cleanup. - `AiContextRenderer` settings cache dependency. ## Solution ### 1.1 A… ### [Allow subcontext scope to override parent scope](https://git.drupalcode.org/project/ai_context/-/work_items/3586218) State: opened | Updated: 2026-06-29 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Description: ## Problem/motivation Follow-up to: #3576092 ## Solution From the other issue: Discussion with Emma+Aidan at UX sync: - Toggle (true/false) is defaulted to "Same as parent" (true) right above Global and then hide all of them - Description: "Disable to customize scope." Here's a [plan from cursor](https://www.drupal.org/files/issues/2026-04-21/subcontext_scope_inheritance_51216439.plan_.md) that can be updated to reflect ^ ## Tasks - [x] Add code - [x] Review code - [ ] Manually test code ## AI usage - [ ] AI assisted issue - [ ] AI assisted code - [x] AI generated code ### [Add full view layout for context item canonical and revision pages based on new design](https://git.drupalcode.org/project/ai_context/-/work_items/3586220) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: Daniel Rodriguez (danrod) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Description: ## Problem/motivation Follow-up to: #3586141 ### Summary Replace the default field-list entity view at `/admin/ai/context/items/{id}` with a designed **full** view mode: two-column layout (main content + sidebar), scope/subcontext details, and subcontext navigation. The same layout is used on revision view routes. ### Design and walkthrough There is a new design for the context view page based on UX review and feedback. ### Problem The canonical context item page rendered the default entity view display — a plain field list that was hard to scan and did not surface scope, subconte… ### [Improve conditional subcontext disabled-state behavior and admin UX](https://git.drupalcode.org/project/ai_context/-/work_items/3586292) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Description Follow-up to: #3586207+s ### Summary When **Enable conditional subcontext AI decisions** (`conditional_subcontext_enabled`) is off, conditional subcontext children should not participate in normal context selection. This issue implements that behavior and adds admin UX so editors understand why conditional items are inactive, can reach the setting to re-enable the feature, and get clear warnings when editing affected items. ### Problem / motivation Previously, disabling conditional subcontext AI caused **all conditional children to be included without an AI call**. That wa… ### [Add #[RunTestsInSeparateProcesses] attribute to all kernel test classes](https://git.drupalcode.org/project/ai_context/-/work_items/3586280) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Description _**Verify the issue problem and solution before proceeding.**_ Drupal 11.3 deprecates kernel test classes that do not declare the PHPUnit `#[RunTestsInSeparateProcesses]` attribute. From Drupal 12.0, missing the attribute will throw an exception ([change record](https://www.drupal.org/node/3548485)). The ai_context module currently has **4 of 39** kernel test classes with the attribute: - `AiContextChildrenServiceTest` - `AiContextItemFormGlobalCountTest` - `AiContextTextFieldMigrationTest` - `AiContextUpdate10010Test` The remaining **35** kernel test classes need: ```php … ### [Clean up CCC inconsistencies and DX issues before rc1 (part 3)](https://git.drupalcode.org/project/ai_context/-/work_items/3586271) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: Follow-up to: #3586192 _**Verify the issue problem and solution before proceeding.**_ ## Title **AI Context: Consistency / DX cleanup (final, constructor promotion, snake_case locals, service interfaces)** --- ## Description Follow-up to #3586192 / naming & DX review. Addresses the remaining **consistency / DX** items that were explicitly out of scope for the naming MR. **No functional or API behavior changes** — style, clarity, and maintainability only. ### Background The naming/DX MR covered route/permission renames, dead code removal, `new self` in final classes, and snake_case fix… ### [Update relevant CCC skipped tests](https://git.drupalcode.org/project/ai_context/-/work_items/3586263) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: _**Verify the issue problem and solution before proceeding.**_ Audit of `web/modules/contrib/ai_context/tests` — static review of all `markTestSkipped()` usage and conditional skip paths. **Note:** `dynamic_entity_reference` is present in this project (`web/modules/contrib/dynamic_entity_reference`), so Category B skips should **not** fire here. PHPUnit also lacks `SIMPLETEST_DB` in `web/core/phpunit.xml`, which causes kernel/functional tests to error rather than skip — that is a test-runner config issue, not an intentional skip in module code. --- ## Summary | Category | Skip sites in c… ### [Clean up CCC test and documentation consistency before rc1](https://git.drupalcode.org/project/ai_context/-/work_items/3586299) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **7. Test Quality And Test Documentation** **Priority:** Medium **Why group these together:** These fixes all improve test reliability and signal. They can be split further if the test changes become large. Includes: - Context prefix default alignment. - `getManageUrl()` docs update. - Optional `hook_help()` decision/follow-up. - `tests/README.md` environment guidance. ## Solution ### 7.1 Make integration-test process metadata consistent **Files:** - `… ### [Clean up CCC accessible interactive links and external links](https://git.drupalcode.org/project/ai_context/-/work_items/3586301) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **2. Accessible Interactive Links And External Links** **Priority:** High **Why group these together:** These are all link-rendering issues. Fixing them together allows one consistent pattern for render-array links, new-tab warnings, and link styling. Includes: - List-builder revisions operation cacheable access result. - Revision UI boolean access checks. ## Solution ### 2.1 Replace interactive links embedded in `#markup` **Files:** - `src/Form/AiCont… ### [Clean up CCC JavaScript filter feedback](https://git.drupalcode.org/project/ai_context/-/work_items/3586303) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **4. JavaScript Filter Feedback** **Priority:** High **Why group these together:** Both filters implement similar client-side table filtering and should expose the same accessible feedback pattern. Includes: - Pill-list overflow accessible text. - Truncated description accessible text. - Icon-only indicators. - Manual assistive technology check for `ai/ai_global` tooltip behavior. ## Solution ### 4.1 Announce filtered result counts **Files:** - `js/ai_… ### [Clean up CCC form and table accessibility cleanup](https://git.drupalcode.org/project/ai_context/-/work_items/3586304) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **5. Form And Table Accessibility Cleanup** **Priority:** Medium **Why group these together:** These are smaller Form API and admin UI accessibility improvements. They can be handled in one cleanup issue. Includes: - `Drupal.announce()` result counts for both JS filters. - Tests for filter announcements if feasible. ## Solution ### 5.1 Replace disabled read-only selects with text **File:** - `src/Form/AiContextAgentForm.php` **Problem:** Read-only s… ### [Clean up CCC documentation and API consistency](https://git.drupalcode.org/project/ai_context/-/work_items/3586305) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **6. Documentation And API Consistency** **Priority:** High to Medium **Why group these together:** These are low-risk docs/code consistency fixes that prevent contributors from copying stale API names or relying on a fallback that differs from install defaults. Includes: - Disabled select replacements. - Help list render arrays. - Table captions. - Emoji warning cleanup. ## Solution ### 6.1 Align the default context prefix **Files:** - `config/install… ### [Clean up CCC configuration policy checks](https://git.drupalcode.org/project/ai_context/-/work_items/3586306) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **8. Configuration Policy Checks** **Priority:** Low to Medium **Why group these together:** These are not confirmed bugs. They should be handled as maintainer decisions or reproducibility checks before code changes. Includes: - Reproduce or dismiss simple config dependency concerns. - Confirm Scheduler dependency policy. ## Solution ### 8.1 Verify simple install config dependencies **Files:** - `config/install/ai_context.settings.yml` - `config/instal… ### [Sprint 13 CCC roadmap updates, sprint planning, and issue triage](https://git.drupalcode.org/project/ai_context/-/work_items/3586293) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/Motivation Prioritize backlog items for the sprint to align with roadmap, releases, and project needs. --- ## Proposed resolution Groom sprint issues --- ## Target date or deadline 27 to 10 July 2026 --- ## Remaining tasks - Go through backlog and prioritize - Create new issues as needed - Identify what goes into sprint - Tune mid-sprint as needed - Update roadmap meta as needed --- ## Related issues - [#3567798: [META] CCC MVP 1.0 roadmap](https://www.drupal.org/project/ai_context/issues/3567798) - [#3586182: [META] CCC beta3 release planning](https://www.drupal.org/… ### [Provide real sample context items for end user use](https://git.drupalcode.org/project/ai_context/-/work_items/3586279) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Spin off from: #3586244+s Pulling the info from the other ticket. --- It would be really helpful to provide (optional) example context items for this module. There is a mention of this in #3586175, but I wanted to open a separate issue for it because it might make sense to provide a recipe for example content items (similar to this for AI Guardrails: https://www.drupal.org/project/ai_recipe_guardrails_pii) As I'm learning to use the module, I find that I have to spin up an instance of https://www.drupalforge.org/template/driesnote-chicago in order to see some type… ### [[Feature] Add ExternalContextProviderInterface and ContextQueryInterface to support RAG/vector store integrations](https://git.drupalcode.org/project/ai_context/-/work_items/3586289) State: opened | Updated: 2026-06-28 | Author: josecarlosmedero | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Summary Follow-up to: #3586257+s ## Problem We built an external RAG integration on top of CCC (AI Knowledge Connector — a vector store + semantic retrieval module for Drupal 11) and hit three specific API gaps that currently require workarounds. We're raising these before rc1 so the team can evaluate whether a formal API would be worth adding to make the integration pattern stable and documented for the ecosystem. The current workaround path works (we're using `BuildSystemPromptEvent`) but it's fragile across agent types, bypasses CCC's token limit logic, and gives no observability … ### [[Meta] Fix CCC issues based on AI Best Practices results](https://git.drupalcode.org/project/ai_context/-/work_items/3586298) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Ran AI Best Practices against ai_context and found some things that need fixing: GPT 5.5 doc pulling out all the actionable things: [ai-context-actionable-fix-plan.md](https://git.drupalcode.org/-/project/191993/uploads/c3b583782d3be83fde707399a020b762/ai-context-actionable-fix-plan.md) ## Solution GPT 5.5 assessment: For RC1, I’d only block on items that affect **public API, config shape/defaults, installability, or release expectations**. Most accessibility, render-cache, and UI/test cleanup can happen after RC1 as bug/UX fixes. ### Sho… ### [Evaluate Annotations module and how it might work with CCC](https://git.drupalcode.org/project/ai_context/-/work_items/3586268) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation The new [Annotations module](https://www.drupal.org/project/annotations) has overlap with CCC. ### Video From NikLP: No demo videos yet but how y'all feel about a gen AI video outlining my new module suite? :smiling_face_with_tear: https://www.linkedin.com/posts/niklepage_drupal-activity-7469809314463891456-j8u8/ ### Nik's integration approach [ai_context-local.patch](https://git.drupalcode.org/-/project/191993/uploads/5591cdf6801c901c1d6bc021f4975b60/ai_context-local.patch) [adr-ai-context-provider.md](https://git.drupalcode.org/-/project/191993/uploads/75577ae14… ### [[Discuss] Add boundaries / exclusions to scope plugins](https://git.drupalcode.org/project/ai_context/-/work_items/3586197) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Innovation, AI Sprint 10, AI Sprint 11 Description: ## Problem/motivation Follow-up to: #3586195 Boundaries / exclusions were discussed quite a bit in the past, but hasn't been implemented yet. Example context item: - Tone and voice - Scope - Use case = Writing Words - Entity bundle = exclude for Support Notes (content type) Translation: The context will be applicable to any agent subscription with use case = writing words unless it's a node that's a Support Notes content type ## Solution Add an exclusion option for each scope item and bake that into the logic Could be a dropdown per scope item: - None (neutral/default) - Include… ### [Update project page to make it more clear that CCC is for agents](https://git.drupalcode.org/project/ai_context/-/work_items/3586278) State: opened | Updated: 2026-06-28 | Author: Michael Anello (ultimike) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Innovation, AI Sprint 13, AI UX Description: Via https://git.drupalcode.org/project/ai_context/-/work_items/3586270#note_1263889, I think the main CCC project page description should be super-clear that CCC is currently designed to only work with AI agents and not other AI-related tasks. At the very least, I suggest the first sentence of the project description on https://www.drupal.org/project/ai_context be changed from: > Context Control Center (CCC) helps Drupal AI use your content, rules, and standards to deliver more accurate, relevant results. to > Context Control Center (CCC) helps Drupal AI **agents** use your content, rules,… ### [Promote Document Loader: Context Importer from experimental to stable](https://git.drupalcode.org/project/ai_context/-/work_items/3586282) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Description Follow-up to: #3586275+s canvas#3575644+s ### Summary The `ai_context_document_loader` submodule (Document Loader: Context Importer) is currently marked `lifecycle: experimental`. The initial integration work is largely complete: upstream dependencies are on stable constraints (`document_loader:^2.0.3`, `ai_file_to_text:^1.0`), and temporary Document Loader Composer patches have been removed. Before removing the experimental lifecycle flag, we should close out documentation, testing, and install-behavior follow-ups. The Canvas StringLongItemOverride patch ([#3575644](https:… ### [Rename entity bundle and target entity scope plugins for better DX](https://git.drupalcode.org/project/ai_context/-/work_items/3586276) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Description: ## Problem/solution Follow up to: #3586148+s The naming of the entity bundle and target entity scope plugins is confusing. ## Solution **AiContextScopeEntityBundle** Rename Entity Bundle => Entity Type at a code-level because there are bundleless content entities. Label: Entity Types Description: Apply this context to every entity of a chosen type, for example all Article nodes, every Document media item, or every Canvas page. Choose this when the context is true for the whole type, not a single item. **AiContextScopeTargetEntity** Rename Target Entity => Entity Item because target… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [9] summariseModule:ai_search:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Search (machine name: ai_search) Reporting period: last 24h (2026-06-28T05:00:06+00:00 to 2026-06-29T05:00:06+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

                  AI Search

                  then use

                  ,

                  ,

                    /
                  • , and as needed. Output only the HTML fragment with no surrounding , , or
                    tags. After the project summary prose, add a single subsection titled "

                    How can I help on this project?

                    " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Fix 2.x branch integration with AI 2.x now that Symfony Platform is integrated](https://git.drupalcode.org/project/ai_search/-/work_items/3584015) State: opened | Updated: 2026-06-28 | Author: Scott Euser (scotteuser) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::bug, priority::major Description: # Problem/motivation Tests now fail because of #3574187 ## Steps to reproduce E.g. run `ddev exec ./vendor/bin/phpunit -c core/phpunit.xml.dist modules/contrib/ai_search/tests/src/Functional/AiSearchSetupMySqlTest.php --filter=testContentIndexingCompleted` # Proposed resolution - Wait until https://git.drupalcode.org/project/ai/-/work_items/3586495 is merged - Update AI Search compatibility with AI Core 2.x branch - Document any breaking changes needed in VDB Providers ### [Batch embeddings for improved indexing performance](https://git.drupalcode.org/project/ai_search/-/work_items/3584024) State: opened | Updated: 2026-06-28 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: Sergiu Nagailic (Nikro) | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: This is a placeholder for AI Core issue https://git.drupalcode.org/project/ai/-/work_items/3568648 . The development of ai_search submodule is deprecated, so this issue is for porting functionality from parent issue. ### [Named argument spread into `querySearch()` includes keys it does not accept, causing PHP fatal](https://git.drupalcode.org/project/ai_search/-/work_items/3584028) State: opened | Updated: 2026-06-28 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: unassigned | Labels: Description: ## Problem `doSearch()` assigns `vector_input` and `query` into `$params` before the `if/else` branch: ```php $params['vector_input'] = $vector_input; $params['query'] = $query; if (!empty($vector_input)) { $response = $vdb_client->vectorSearch(...$params); } else { $response = $vdb_client->querySearch(...$params); // $params still has vector_input and query } ``` `querySearch()` does not accept `vector_input` or `query` as parameters. Spreading `$params` into it causes a PHP fatal: ``` PHP Fatal error: Unknown named argument $vector_input ``` ## Steps to reproduce 1. Install `ai_se… ### [PluginException from getSearchVectorInput() is not caught, returning empty results with no error](https://git.drupalcode.org/project/ai_search/-/work_items/3584026) State: opened | Updated: 2026-06-28 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: unassigned | Labels: Description: ## Problem When the configured embeddings engine plugin cannot be instantiated, `getSearchVectorInput()` throws a `PluginException`. Nothing catches it in the search path. The search returns empty results with no error logged and no message shown to the user or admin. There is no way to tell from the outside whether the search ran and found nothing, or crashed before running at all. Common triggers: - The AI provider module is disabled or uninstalled - `embeddings_engine` in config references a provider ID that no longer exists - The provider is not fully configured ## Steps to reproduce … ### [Logger not injected in `create()`, causing fatal error on error paths](https://git.drupalcode.org/project/ai_search/-/work_items/3584025) State: opened | Updated: 2026-06-28 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: unassigned | Labels: Description: ## Problem `SearchApiAiSearchBackend::create()` does not inject the logger service. The class calls `$this->logger->error()` inside `doSearch()` when something goes wrong. Because the property is never set, any error path throws a PHP fatal instead of writing a log entry. In practice this means a misconfigured provider produces a fatal error rather than a clear watchdog message. The real problem is hidden. ## Steps to reproduce 1. Install `ai_search`. 2. Configure a Search API index with the AI Search backend. 3. Set an embeddings engine that is misconfigured (wrong provider ID, missing AP… ### [vectorSearch() is never called for embedding-free VDB providers](https://git.drupalcode.org/project/ai_search/-/work_items/3584027) State: opened | Updated: 2026-06-28 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: unassigned | Labels: Description: ## Problem `doSearch()` calls `vectorSearch()` only when `$vector_input` is non-empty: ```php if (!empty($vector_input)) { $response = $vdb_client->vectorSearch(...$params); } else { $response = $vdb_client->querySearch(...$params); } ``` VDB providers that do not use embeddings (LLM reasoning, BM25, keyword trees, etc.) always have an empty `$vector_input`. So `querySearch()` is always called instead of `vectorSearch()`. `querySearch()` is for browse queries with no search terms. It does not receive the query text. A search for "climate change" calls `querySearch()` with no keywords a… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [10] summariseModule:field_widget_actions:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Field Widget Actions (machine name: field_widget_actions) Reporting period: last 24h (2026-06-28T05:00:06+00:00 to 2026-06-29T05:00:06+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

                    Field Widget Actions

                    then use

                    ,

                    ,

                      /
                    • , and as needed. Output only the HTML fragment with no surrounding , , or
                      tags. After the project summary prose, add a single subsection titled "

                      How can I help on this project?

                      " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Generate UUIDs for list-style widget-action settings applied via config actions](https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578823) State: opened | Updated: 2026-06-28 | Author: Daniel Bosen (daniel.bosen) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, state::needsWork Description: The setupFieldWidgetAction config action requires every field widget action to be declared in the recipe with a hard-coded UUID as its array key. Because those UUIDs were static, you can not add multiple suggestion buttons to a single edit form: the actions collide on their keys, so every button ends up writing its AI content suggestion into the same field instead of each button targeting its own field. Let the recipe declare actions as a plain list and have the plugin generate a unique UUID per item at apply time — exactly as the UI does when actions are added interactively — so each button … --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [11] summariseModule:orchestration:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Orchestration (machine name: orchestration) Reporting period: last 24h (2026-06-28T05:00:06+00:00 to 2026-06-29T05:00:06+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

                      Orchestration

                      then use

                      ,

                      ,

                        /
                      • , and as needed. Output only the HTML fragment with no surrounding , , or
                        tags. After the project summary prose, add a single subsection titled "

                        How can I help on this project?

                        " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Using JSON Schema to define "input", "output" and "config"](https://git.drupalcode.org/project/orchestration/-/work_items/3554622) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::plan, code Description: >>> [!note] Migrated issue Reported by: [d34dman](https://www.drupal.org/user/751698) >>> Problem/Motivation JSON Schema gives you a portable contract for each “thing” (task/node) and lets you auto-validate, auto-document, and even auto-generate forms. For an orchestration layer, a clean split into input, output, and config per node is intuitive and scales. Why JSON-Schema fits? - Contracts at the edges: Each node publishes exactly what it consumes (input) and emits (output), so composition is safe. - Runtime safety: Validate at design-time (when building a workflow) and at run… ### [Integrate with n8n](https://git.drupalcode.org/project/orchestration/-/work_items/3551197) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Stephen Mulvihill (smulvihill) | Labels: AI Initiative Sprint, AI Innovation, category::feature, code Description: >>> [!note] Migrated issue Reported by: [jurgenhaas](https://www.drupal.org/user/168924) >>> Problem/Motivation Extend the Orchestration module to support n8n as an automation provider, similar to existing Activepieces integration. This enhancement will enable bidirectional communication between Drupal and n8n, allowing workflows to both trigger n8n automations from Drupal entity events (create, update, delete, publish) and perform actions in Drupal (create/update entities, media, users, taxonomy, etc.) via n8n nodes. The implementation will include: A new N8nDriver in the Orchestration m… ### [[orchestration_eca] Add "Execute Orchestration service" ECA action to allow ECA to invoke registered services](https://git.drupalcode.org/project/orchestration/-/work_items/3575105) State: opened | Updated: 2026-06-28 | Author: Shibin Das (D34dMan) | Assigned: Shibin Das (D34dMan) | Labels: category::feature, state::accepted, v1.0.x-dev Description: ## Problem / Motivation The `orchestration_eca` submodule currently bridges ECA and the Orchestration module in one direction only: it exposes ECA models _as_ Orchestration services, so external callers can invoke ECA workflows via the Orchestration HTTP API. The reverse direction is missing. There is no ECA Action plugin that allows an ECA model to `_invoke_` a registered Orchestration service. This means ECA cannot use its rich event and condition system to trigger any of the services registered by other `ServicesProviderInterface` implementations. Current: External → Orchestration → E… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [12] summariseModule:agui:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AG-UI (machine name: agui) Reporting period: last 24h (2026-06-28T05:00:06+00:00 to 2026-06-29T05:00:06+00:00) You are writing for a technical developer audience. Focus on: what was merged or shipped, specific bugs fixed, APIs changed, and what is blocking progress. Be specific — mention function names, module names, and MR references where relevant. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

                        AG-UI

                        then use

                        ,

                        ,

                          /
                        • , and as needed. Output only the HTML fragment with no surrounding , , or
                          tags. After the project summary prose, add a single subsection titled "

                          How can I help on this project?

                          " aimed at a developer. Suggest 2-3 concrete technical actions a contributor could take right now. Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, check the data for each issue: - If an issue shows a Related MR with state 'opened', do NOT suggest creating a patch or MR — one already exists. Suggest reviewing it instead. - If all Related MRs for an issue are merged, do NOT suggest reviewing them — they are already done. - If an issue is unassigned with no Related MRs, it is a good candidate to pick up. - Only suggest actions that are genuinely still needed given the current state in the data above. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [[META] Improve Drupal Assistant Implementation](https://git.drupalcode.org/project/agui/-/work_items/3572388) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Bryan Sharpe (b_sharpe) | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: >>> [!note] Migrated issue Reported by: [b_sharpe](https://www.drupal.org/user/2512258) >>> Problem/Motivation The current Drupal Assistant implementation in the demo page was a POC meant to show it can work with AG-UI, this should instead align to become a replacement for the ai_chatbot (Deepchat). This might spawn AI module tickets so we can hook into the events used. We should align also with the Polling service so this is where we could emit ag-ui events. I believe the following could/should work: A single, non-streamed request with all events - This just needs a refactor, technicall… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [13] generateTldr:developer ======================================================================== You are an editor distilling a Drupal AI project newsletter into its most important highlights. You are writing for a technical developer audience. Be specific — name modules, merged features, and critical bugs. Read all the module summaries below. Separate the highlights into two categories: - SHIPPED: things that were merged, fixed, released, or completed during this period. - ONGOING: things that are actively in progress, under review, or blocked. Be specific — name the module, what happened, and why it matters. Do not use emoticons or mdashes. Do not include any text outside the two sections. When you mention a specific issue or merge request, add an inline citation using [N] where N is the reference number from the list below. You may cite multiple references per item, e.g. [1][3]. Place citations immediately after the relevant phrase, before any punctuation. Format as two HTML sections. Use exactly this structure (all
                        • elements must be inside the
                            , never outside it):

                            Shipped

                            1. Title here — One sentence explanation [1].
                            2. Another title — One sentence explanation.

                            Ongoing

                            1. Title here — One sentence explanation [2].
                            Up to 5 items per section. Do not output any text, tags, or characters outside these two sections. Output only the HTML fragment, no surrounding tags. --- REFERENCE LIST --- [1] Add rich-text image description support to AI Automators (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586478 [2] Add Functional Tests for AI CKEditor (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3477173 [3] Batch embeddings for improved indexing performance (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3568648 [4] RestrictToTopic guardrail: add semantic topic matching mode (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3584977 [5] Add SensitiveContentStream guardrail and kernel test for StreamableGuardrailInterface mid-stream buffering and evaluation (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3584951 [6] Document FunctionalJavascript test conventions and add CI check for ungrouped/unrecorded tests (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3582633 [7] Add event hook to ai_ckeditor to allow context injection (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3581952 [8] Guardrail plugins only evaluate the last message (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3579088 [9] Indexing breaks with custom SearchAPI DataSource (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3575992 [10] How does the provider notify of better models (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3575689 [11] Clean up ai_observability settings form (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3574499 [12] [AI Prompts] Update the Type Casing of Entities/Permissions (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3574417 [13] Provide proper support for "unconfigured" AI provider state (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3572645 [14] The Toolbar Chatbot runs the fold out animation on page reload (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3568246 [15] Require merge commits into main branches to include an issue reference in the format #[number], without restricting commit messages on feature branches (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3566613 [16] Research: Open standard for saving one request (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3566569 [17] Create validator for structured content (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3561971 [18] Fix Translate Text Explorer form functionality (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3553353 [19] The chatbot config, default avatar does not accept tokens (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3546675 [20] Move the input of structured output to an object. (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3545462 [21] Provide AI usage reports in Drupal admin panel (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3535260 [22] Chatbot closes itself when adding a modal (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3499451 [23] Create plugins for interacting with multimedia in AI (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3463843 [24] ai_ckeditor: streamGenerateContent causes 400 Bad Request with Gemini 2.x models (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586425 [25] Save AI Content Suggestion plugin settings inside ai_content_suggestions.settings config object (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586437 [26] AI Assistant runner fatals when an ai_agent config entity shares its ID with a code-defined AiAgent plugin (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586449 [27] Add interactive refinement capability to Field Widget Actions (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586468 [28] Document the AI module ecosystem: a categorized list of related modules with links and summaries (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586482 [29] Add a deterministic script to auto-generate the providers/operation-types matrix from GitLab (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586488 [30] Generalize behaviour of FWA with Automators (AI Core v2) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586515 [31] Config action to verify if any vector database is there and it is setup (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586517 [32] Add a Moderation Guardrail plugin (configurable moderation provider/model as a guardrail) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586531 [33] Add Summarization operation type support to the echoai test provider (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586537 [34] [Research] Mechanism to force deprecated bundled submodules onto their contrib version (start with ai_validations) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586538 [35] Add an AI reranking processor for Search API (owned by the AI module) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586543 [36] Introduce a modern AI Chatbot frontend library (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586571 [37] [2.x] Add a setup-automators agent skill to configure automators on fields (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586564 [38] [1.x] Add a setup-automators agent skill to configure automators on fields (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586563 [39] Add a configure-ai-settings agent skill for general AI settings (default models, providers, timeout, trusted domains) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586562 [40] Add a setup-guardrails agent skill to configure guardrails, guardrail sets, and global guardrails (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586561 [41] Enforce execution principal in AiAssistantApiRunner (no fallback to session user when executor is provided) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3574723 [42] Drupal AI Contribution meeting 2026-06-29 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586575 [43] Agent Skill 'create-ai-api-explorer' failed validation (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586574 [44] Issue #3477173: Add functional tests for AI CKEditor (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1302 [45] Issue #3568648: Batch embeddings as a first-class operation type (follow-up to !1704) (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1726 [46] Batch embeddings for improved indexing performance (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1704 [47] Update the Ai API Explorer Skill name, matching the directory as per Agent Skills specification (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1732 [48] Create AI Validations Recipe (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3585699 [49] Recipe: AI Automators comment-spam scoring and auto-unpublish (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3585304 [50] Create documentation on how to create issues that are testable on DrupalForge (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3583362 [51] [Meta] Create AI Review Functionality / Create Technical Concept (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575158 [52] [Meta] Create AI Review Functionality / Create UX (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575157 [53] [Meta] Create AI CMS Demo System / Create Hoster POC — amazee.io (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575149 [54] [Meta] Create AI CMS Demo System / Create Demo POC (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575147 [55] [Meta] Create AI CMS Demo System / Create Technical Concept (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575145 [56] [Meta] Create AI CMS Demo System / Organize and Set Up Repository Access (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575143 [57] Start setting up AI Starterkit (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3569199 [58] Create QA image for DrupalPod (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3558437 [59] [Meta] AI Content Review Workflow (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3545606 [60] GitLab workflow automation for AI Initiative repos (exploration + rollout) (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586474 [61] Module Finder: recruit beta testers and drive incremental improvements (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586577 [62] [Meta] Skills for hosting providers: control deployment and environment setup (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586575 [63] Research: DevPanel API — what deployment & environment automation is possible (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586576 [64] Run more than one test group in Bulk - Test Collections? (ai_agents_test, Issue) — https://git.drupalcode.org/project/ai_agents_test/-/work_items/3541324 [65] Research: merging ai_agents_test with ai_eval (and AiLlm test harness) (ai_agents_test, Issue) — https://git.drupalcode.org/project/ai_agents_test/-/work_items/3585124 [66] Image Embeddings (gemini_provider, Issue) — https://git.drupalcode.org/project/gemini_provider/-/work_items/3588392 [67] Add support for batch embeddings (gemini_provider, Issue) — https://git.drupalcode.org/project/gemini_provider/-/work_items/3589183 [68] Explore export/sync plugin system for AI Agents to external agent platforms (Claude Code, VAPI, etc.) (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3577241 [69] Add views agent (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3542457 [70] Create an ChatProcessor (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3585984 [71] AI Agent entity form should reject machine names that collide with existing code-plugin IDs (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586026 [72] Use the `ai_json_schema` editor for the AI Agent structured-output schema field (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586042 [73] Add possibility to catch all errors on a tool (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3547994 [74] Let an agent use a role when running a tool (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3518167 [75] Allow agents to have permissions, user or a role (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586019 [76] MapDefinitionNormalizer and ContextDefinitionNormalizer break REST serialization (same as #3568588) (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582939 [77] Allow controlling Tool return format (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582933 [78] Allow tool execute to be previewed (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3558037 [79] Introduce support for Discovery, Planning and Execute calls for MCP and Agents (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3546292 [80] Proposal: make Tool's declarations introspectable over the CLI, and enrich input schema (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582943 [81] File Input Handling (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3572774 [82] Dependency Dashboard (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591657 [83] 3591734: WSOD AssertionError: assert(!$data instanceof ComponentInputsMapping) in assert() when requesting tmgmt translation job (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1296 [84] chore(deps): update dependency @eslint/compat to v2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1306 [85] chore(deps): update dependency @chromatic-com/storybook to v5 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1305 [86] fix(deps): update npm minor and patch (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1238 [87] chore(deps): update mysql docker tag to v8.4 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1272 [88] feat: #3567225 Allow per-node override of Content Template via checkbox in node selector (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/948 [89] Clean up CCC tooltip, truncation, and icon-only content (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586302 [90] Clean up CCC cacheability and access metadata (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586300 [91] Allow subcontext scope to override parent scope (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586218 [92] Add full view layout for context item canonical and revision pages based on new design (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586220 [93] Improve conditional subcontext disabled-state behavior and admin UX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586292 [94] Add #[RunTestsInSeparateProcesses] attribute to all kernel test classes (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586280 [95] Clean up CCC inconsistencies and DX issues before rc1 (part 3) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586271 [96] Update relevant CCC skipped tests (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586263 [97] Clean up CCC test and documentation consistency before rc1 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586299 [98] Clean up CCC accessible interactive links and external links (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586301 [99] Clean up CCC JavaScript filter feedback (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586303 [100] Clean up CCC form and table accessibility cleanup (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586304 [101] Clean up CCC documentation and API consistency (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586305 [102] Clean up CCC configuration policy checks (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586306 [103] Sprint 13 CCC roadmap updates, sprint planning, and issue triage (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586293 [104] Provide real sample context items for end user use (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586279 [105] [Feature] Add ExternalContextProviderInterface and ContextQueryInterface to support RAG/vector store integrations (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586289 [106] [Meta] Fix CCC issues based on AI Best Practices results (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586298 [107] Evaluate Annotations module and how it might work with CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586268 [108] [Discuss] Add boundaries / exclusions to scope plugins (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586197 [109] Update project page to make it more clear that CCC is for agents (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586278 [110] Promote Document Loader: Context Importer from experimental to stable (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586282 [111] Rename entity bundle and target entity scope plugins for better DX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586276 [112] Fix 2.x branch integration with AI 2.x now that Symfony Platform is integrated (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584015 [113] Batch embeddings for improved indexing performance (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584024 [114] Named argument spread into `querySearch()` includes keys it does not accept, causing PHP fatal (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584028 [115] PluginException from getSearchVectorInput() is not caught, returning empty results with no error (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584026 [116] Logger not injected in `create()`, causing fatal error on error paths (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584025 [117] vectorSearch() is never called for embedding-free VDB providers (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584027 [118] Generate UUIDs for list-style widget-action settings applied via config actions (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578823 [119] Using JSON Schema to define "input", "output" and "config" (orchestration, Issue) — https://git.drupalcode.org/project/orchestration/-/work_items/3554622 [120] Integrate with n8n (orchestration, Issue) — https://git.drupalcode.org/project/orchestration/-/work_items/3551197 [121] [orchestration_eca] Add "Execute Orchestration service" ECA action to allow ECA to invoke registered services (orchestration, Issue) — https://git.drupalcode.org/project/orchestration/-/work_items/3575105 [122] [META] Improve Drupal Assistant Implementation (agui, Issue) — https://git.drupalcode.org/project/agui/-/work_items/3572388 --- MODULE SUMMARIES ---

                            AI (Artificial Intelligence)

                            Development activity over the past 24 hours focused on embedding performance optimization, guardrail testing, and agent skill infrastructure. A follow-up to the batch embeddings work was pushed in MR !1726, introducing BatchEmbeddingsInterface as a first-class operation type. This non-breaking change allows providers to opt into batch processing while maintaining backwards compatibility with the existing EmbeddingsInterface. The implementation ensures batch operations receive events, config normalization, and logging support through ProviderProxy.

                            Functional test coverage for AI CKEditor continued in MR !1302, with work on Add Functional Tests for AI CKEditor reaching the point where the issue was closed. A validation bug in the AI API Explorer agent skill was identified: the skill name create-new-explorer does not match its directory name create-ai-api-explorer, violating the Agent Skills specification. MR !1732 was opened to correct this mismatch in Agent Skill 'create-ai-api-explorer' failed validation.

                            Discussion continued on several open issues including ai_ckeditor: streamGenerateContent causes 400 Bad Request with Gemini 2.x models, where streaming requests to Gemini 2.x models fail due to malformed payloads from the PHP client, and Guardrail plugins only evaluate the last message, which affects multi-turn conversations.

                            How can I help on this project?

                            Review MR !1726 for the batch embeddings refactor and test against your vector database provider. Investigate the Gemini 2.x streaming payload issue in ai_ckeditor: streamGenerateContent causes 400 Bad Request with Gemini 2.x models to identify whether the fix belongs in the provider or client library. Pick up Add Summarization operation type support to the echoai test provider, an unassigned Easy Win with no open MRs.

                            Contributors: Ahmad Khalil (ahmad-khalil-imagex), Ronald te Brake (ronaldtebrake), velmir_taky (root_emarketing)

                            ---

                            Drupal AI Initiative

                            The reporting period saw no merge requests merged or commits pushed. Activity focused on planning and issue updates across multiple workstreams.

                            Several meta issues tracking major product development efforts received updates, including work on AI Content Review Workflow, the AI CMS Demo System (covering repository setup, technical concepts, and hoster-specific POCs), and AI Review functionality (both UX and technical concept phases). These remain in active planning stages.

                            New issues opened during the period include exploration of GitLab workflow automation for AI Initiative repos, which proposes using Rules, ECA, or a custom module atop gitlab_api to automate issue and MR housekeeping. A meta for hosting provider deployment skills was created to track agent-driven deployment and environment setup across hosting platforms, with initial research scoped for DevPanel's API capabilities. Work continues on Module Finder beta testing, aiming to recruit testers for the semantic search tool that helps agents discover existing contributed modules before writing custom code.

                            Recipe development remains a focus area, with issues open for AI Validations and AI Automators comment-spam scoring recipes.

                            How can I help on this project?

                            ---

                            AI Agents Test

                            The AI Agents Test module saw no merge activity or code changes during this period. Two planning issues were updated that focus on the future direction of the module. The Research: merging ai_agents_test with ai_eval (and AiLlm test harness) issue is exploring whether the module should be consolidated with ai_eval, and how it relates to the core AI module's test harness infrastructure. Separately, Run more than one test group in Bulk - Test Collections? examines adding bulk operations functionality to run multiple test groups simultaneously, potentially using either a views-style bulk operation UI or a tag-based system for grouping tests.

                            Both issues remain in the planning and requirements phase, with no implementation work merged yet. The module appears to be at a crossroads regarding its architectural direction and relationship to other testing tools in the Drupal AI ecosystem.

                            How can I help on this project?

                            • Contribute research and recommendations on the ai_eval merger research issue by documenting use cases and technical overlaps between the three testing systems.
                            • Design a bulk test execution approach for the test collections issue and propose an implementation strategy.
                            ---

                            Gemini Provider

                            Activity in the Gemini Provider module remained light during the reporting period, with no merge requests merged or commits pushed. Development focus appears centered on expanding embedding capabilities beyond the current text-only implementation.

                            Two feature requests remain open. Image Embeddings proposes leveraging Gemini's support for file embeddings to enable indexing and searching using image data, a capability shared with AWS Titan but not widely available across other providers. Separately, Add support for batch embeddings aims to utilize Gemini's batchEmbedContents method when EmbeddingsInput contains multiple items, following patterns established in the core AI module.

                            Both issues have related merge requests (MR !35 and !37 respectively) in opened state, indicating active development work that has not yet been merged.

                            How can I help on this project?

                            • Review the opened merge requests for Image Embeddings (MR !35) and batch embeddings support (MR !37) to help move these features toward completion.
                            • Test the batch embedding implementation against various input sizes to verify performance characteristics.
                            ---

                            AI Agents

                            No code was merged during this period, but several issues saw status updates and are approaching completion. Two issues reached RTBC status: Create an ChatProcessor, which will enable agents to participate in the AI Assistant chatbot layer with configurable history and error messaging, and AI Agent entity form should reject machine names that collide with existing code-plugin IDs, a fix for a namespace collision bug in AiAgentManager::findDefinitions() that causes config entities to silently overwrite code-defined plugins.

                            Work also continued on agent permission models. Two related issues explore ways for agents to execute tools with specific roles or permissions rather than inheriting the invoking user's context—important for autonomous agents running via cron or ECA. Additionally, Use the ai_json_schema editor for the AI Agent structured-output schema field moved to Needs Work; it proposes replacing the plain textarea in AiAgentForm::buildFormMetadata() with the dedicated ai_json_schema CodeMirror element for better schema validation and editing.

                            How can I help on this project?

                            Review Create an ChatProcessor or AI Agent entity form should reject machine names that collide with existing code-plugin IDs, both marked RTBC and awaiting final commit. Alternatively, pick up Use the ai_json_schema editor for the AI Agent structured-output schema field, currently Needs Work and unassigned.

                            ---

                            Tool API

                            No merge requests or commits landed during this period. Discussion continued on several architectural questions affecting tool consumers and interoperability.

                            A bug report was filed for MapDefinitionNormalizer and ContextDefinitionNormalizer break REST serialization, which documents a conflict between Tool's custom normalizers and Drupal core's REST module when serializing content entities to JSON. The normalizers intercept TypedData context and map definitions globally, breaking entity serialization in unrelated subsystems.

                            Three feature and planning issues saw activity: Allow controlling Tool return format discusses separating raw tool output from textual wrapper messages for consumers like MCP and AG-UI; Allow tool execute to be previewed explores a preview mode for simulating tool execution without permanent side effects; and Introduce support for Discovery, Planning and Execute calls for MCP and Agents addresses scaling challenges when tool counts exceed 40.

                            A proposal was opened to make Tool's declarations introspectable over the CLI, and enrich input schema, aiming to surface tool metadata for consumers like Drush and mcp_server without invoking the tool itself.

                            How can I help on this project?

                            Investigate the REST serialization conflict in MapDefinitionNormalizer and ContextDefinitionNormalizer break REST serialization and propose a scoping fix for the normalizers. Weigh in on the CLI introspection proposal in Proposal: make Tool's declarations introspectable over the CLI to help shape the metadata surfacing approach.

                            ---

                            Drupal Canvas

                            Activity this period focused on bug fixes and dependency updates. A merge request addressing WSOD AssertionError: assert(!$data instanceof ComponentInputsMapping) in assert() when requesting tmgmt translation job was opened to resolve a fatal error that occurs when requesting translation jobs through TMGMT for Canvas pages containing date components with single cardinality.

                            Multiple dependency update merge requests were opened via automated tooling, including updates to @eslint/compat to v2, @chromatic-com/storybook to v5, and various npm minor and patch updates. A MySQL Docker tag update to v8.4 is also pending review.

                            The per-node Content Template override feature remains open, introducing a per-node Canvas editor at /canvas/editor/node/{node} with changes to ApiLayoutController and field linking resolution.

                            How can I help on this project?

                            • Review the TMGMT translation WSOD fix by testing with date components and translation workflows.
                            • Test the per-node override feature to validate field linking and editor isolation behavior.
                            • Review pending dependency updates to ensure compatibility with the existing Canvas codebase.

                            Contributors: project_19391_bot_cb443e60680723bba08a5351bf595251, Narendra Singh Rathore (NarendraR), Rajab Natshah (RajabNatshah)

                            ---

                            Context Control Center (CCC)

                            Activity this period focused on release planning and issue triage as the project prepares for rc1. Work continued on Sprint 13 CCC roadmap updates, sprint planning, and issue triage to align backlog priorities with the upcoming milestone.

                            Two significant feature discussions emerged. An ExternalContextProviderInterface and ContextQueryInterface proposal was opened to support RAG and vector store integrations, highlighting API gaps in the current BuildSystemPromptEvent workflow that affect token limit logic and observability. Separately, evaluation began on how the new Annotations module might integrate with CCC via Evaluate Annotations module and how it might work with CCC.

                            Pre-rc1 cleanup work advanced across multiple fronts, organized under [Meta] Fix CCC issues based on AI Best Practices results. Child issues now track cacheability metadata, accessible interactive links, tooltip and truncation accessibility, JavaScript filter feedback, form and table accessibility, documentation consistency, and configuration policy checks. PHPUnit compatibility was addressed in Add #[RunTestsInSeparateProcesses] attribute to all kernel test classes, with 35 of 39 kernel tests requiring the Drupal 11.3+ attribute.

                            How can I help on this project?

                            Review open design and API proposals, particularly the RAG integration interface design. Help validate or reproduce configuration policy checks in the AI Best Practices cleanup issues. Contribute patches for the PHPUnit attribute migration across the remaining 35 kernel test classes.

                            ---

                            AI Search

                            The AI Search module saw no merges or commits during the reporting period, but five new bug reports were opened related to core functionality and compatibility issues.

                            Three critical bugs were identified in the SearchApiAiSearchBackend class. The logger service is not injected in create(), causing fatal errors when doSearch() tries to log errors. A named argument spread issue was reported where doSearch() passes vector_input and query parameters to querySearch(), which does not accept them, triggering PHP fatals. Additionally, PluginException errors from getSearchVectorInput() are not caught, causing silent failures when embeddings engines cannot be instantiated.

                            A logic bug was reported where vectorSearch() is never called for embedding-free VDB providers because the method is only invoked when $vector_input is non-empty, forcing all such providers through querySearch() instead.

                            Work on 2.x branch integration with AI 2.x is blocked pending an upstream merge in the AI Core module. Development continues on batch embeddings support for improved indexing performance.

                            How can I help on this project?

                            Pick up one of the unassigned bugs in SearchApiAiSearchBackend: fixing the missing logger injection, catching PluginException in the search path, or correcting the named argument spread into querySearch(). Each has clear reproduction steps and would improve stability.

                            ---

                            Field Widget Actions

                            Activity this period centered on configuration improvements for programmatic field widget action deployment. The issue Generate UUIDs for list-style widget-action settings applied via config actions was updated, tracking work to allow recipes to declare widget actions as a plain list rather than requiring hard-coded UUIDs. This addresses a collision problem where multiple suggestion buttons on a single form would target the same field instead of their intended targets. The proposed solution generates unique UUIDs at apply time, mirroring the behavior of the interactive UI. The issue remains in needs work status with no merge requests yet submitted.

                            No merge requests were merged and no commits were pushed during this reporting period.

                            How can I help on this project?

                            ---

                            Orchestration

                            Activity this period centered on planning and feature proposals. Discussion continued on Using JSON Schema to define "input", "output" and "config", which explores adopting JSON Schema as a portable contract mechanism for orchestration nodes. The proposal aims to split each node's interface into input, output, and config schemas to enable runtime validation, auto-documentation, and safer workflow composition.

                            Work also progressed on Integrate with n8n, which would add n8n as an automation provider alongside the existing Activepieces integration. The feature would enable bidirectional communication, allowing Drupal entity events to trigger n8n workflows and n8n nodes to perform Drupal actions.

                            A new issue was updated: [orchestration_eca] Add "Execute Orchestration service" ECA action. This proposes filling a gap in the orchestration_eca submodule, which currently only exposes ECA models as Orchestration services but lacks an action to invoke registered services from within ECA workflows.

                            No merge requests were completed or commits pushed during this period.

                            How can I help on this project?

                            Review the JSON Schema proposal and provide feedback on the contract design. Contribute to the n8n integration feature by testing or reviewing the planned N8nDriver implementation. Help design or implement the Execute Orchestration service ECA action to close the bidirectional integration gap.

                            ---

                            AG-UI

                            No merge requests were completed or commits pushed during this period. The [META] Improve Drupal Assistant Implementation issue remains open and assigned. This meta issue proposes refactoring the current Drupal Assistant proof-of-concept to align with the AI module's architecture and potentially replace the ai_chatbot (Deepchat) implementation. The work involves integrating with the Polling service to emit ag-ui events and determining the optimal approach between single non-streamed requests with all events versus a streaming implementation.

                            The issue represents a significant architectural decision point for how the Drupal Assistant will integrate with both the AI module's event system and AG-UI's component framework, but no concrete implementation progress occurred in the reporting window.

                            How can I help on this project?

                            Review the architectural proposals in the [META] Improve Drupal Assistant Implementation meta issue and provide feedback on the streaming versus non-streamed approach. Check the AG-UI issue queue for unassigned bugs or feature requests that could be picked up.

                            ======================================================================== ## [14] factcheck:tldr:developer ======================================================================== Layer-1 corrections: 1 Judge flags: 3 ======================================================================== ## [15] summariseModule:ai:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI (Artificial Intelligence) (machine name: ai) Reporting period: last 24h (2026-06-28T05:00:06+00:00 to 2026-06-29T05:00:06+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: Ahmad Khalil (ahmad-khalil-imagex), Artem Dmitriiev (a.dmitriiev), Ronald te Brake (ronaldtebrake), velmir_taky (root_emarketing)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                            AI (Artificial Intelligence)

                            then use

                            ,

                            ,

                              /
                            • , and as needed. Output only the HTML fragment with no surrounding , , or
                              tags. After the project summary prose, add a single subsection titled "

                              How can I help on this project?

                              " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Add rich-text image description support to AI Automators](https://git.drupalcode.org/project/ai/-/work_items/3586478) State: opened | Updated: 2026-06-29 | Author: Levente Besenyei (LeventeB) | Assigned: Joshua Fernandes (joshua1234511) | Labels: AI Initiative Sprint, AI Product Development, category::feature, priority::normal Description: ## Summary Add optional rich-text image description support to AI Automators for AI-based formatted text fields, including metadata storage for generated image descriptions. Related/source issue: https://git.drupalcode.org/project/ai_initiative/-/work_items/3585695 ## Problem AI Automators can use formatted text as input, but images embedded in that text are currently ignored unless they are already available through a separate image/media field. This makes automations less accurate for content that depends on visual context (for example: summaries, quality checks, and editorial pre-screen… ### [Add Functional Tests for AI CKEditor](https://git.drupalcode.org/project/ai/-/work_items/3477173) State: closed | Updated: 2026-06-29 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, aiCkeditor, category::task, needs backport to 1.3.x Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1302 !1257 >>> Problem/Motivation Add tests that tries out the e2e AI Ckeditor. Add screenshots on failure. Steps to reproduce Proposed resolution Remaining tasks User interface changes API changes Data model changes ### [Batch embeddings for improved indexing performance](https://git.drupalcode.org/project/ai/-/work_items/3568648) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Sergiu Nagailic (Nikro) | Labels: AI Initiative Sprint, AI Product Development, aiSearch, candidate 1.5.x Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1704 [Batch embeddings for improved indexing performance](https://git.drupalcode.org/project/ai/-/merge_requests/1704) | State: opened | Author: Artem Dmitriiev (a.dmitriiev), 286 diff lines Description: >>> [!note] Migrated issue Reported by: [paulsheldrake](https://www.drupal.org/user/1350686) Related to !1126 >>> [Tracker] Update Summary: Increase embeddings performance Short Description: Support batching for embeddings so multile chunks can be converted and inserted at a time instead of doing each chunk sequentially. Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Indexing is slow for vector DBs Proposed resolution Add batching so more chunks can be process in one go. This MR updates the underlying classes t… ### [RestrictToTopic guardrail: add semantic topic matching mode](https://git.drupalcode.org/project/ai/-/work_items/3584977) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, Needs manual testing, aiCoreModule Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Add a semantic matching mode to the RestrictToTopic guardrail so LLM-identified topics are matched against the configured list by meaning rather than exact string equality. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation The restrict_to_topic guardrail in src/Plugin/AiGuardrail/RestrictToTopic.php asks an LLM which of the configured topics are present in the input text, then uses an exact-string in_… ### [Add SensitiveContentStream guardrail and kernel test for StreamableGuardrailInterface mid-stream buffering and evaluation](https://git.drupalcode.org/project/ai/-/work_items/3584951) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::feature Description: >>> [!note] Migrated issue Reported by: [abhisekmazumdar](https://www.drupal.org/user/3557964) >>> [Tracker] **Update Summary:** SensitiveContentStream plugin added; kernel tests pass; pipeline green on 1.x **Short Description:** Add a concrete streaming guardrail plugin that suppresses marked content mid-stream **Check-in Date:** 06/04/2026 *Metadata is used by the [AI Tracker](https://www.drupalstarforge.ai/). Docs and additional fields [here](https://www.drupalstarforge.ai/ai-dashboard/docs).* [/Tracker] ## Problem/Motivation #3582179 introduced `StreamableGuardrailInterface` — a guar… ### [Document FunctionalJavascript test conventions and add CI check for ungrouped/unrecorded tests](https://git.drupalcode.org/project/ai/-/work_items/3582633) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::task, documentation Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1432 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Document FunctionalJavascript test conventions and add CI check for ungrouped/unrecorded tests Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation The AI module has a system for running FunctionalJavascript tests in CI that relies on two conventions: Every new FJS test class must have a @group annotation with the issue number it belongs to, so the filter script (scripts/filter-functio… ### [Add event hook to ai_ckeditor to allow context injection](https://git.drupalcode.org/project/ai/-/work_items/3581952) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Jesse Hofmann-Smith (jessehs) | Labels: AI Initiative Sprint, AI Product Development, aiCkeditor, category::feature Description: >>> [!note] Migrated issue Reported by: [jessehs](https://www.drupal.org/user/620440) Related to !1469 !1425 >>> Problem/Motivation The ai_ckeditor module provides AI-powered CKEditor 5 actions (Tone, Translate, Summarize, etc.) but has zero entity awareness — it doesn't know what content type, bundle, or entity ID the editor is attached to. The ai_context module provides a sophisticated scope-based context selection system that can inject bundle-specific writing guidelines into AI prompts. These two modules cannot communicate because: ai_ckeditor does not pass entity information (… ### [Guardrail plugins only evaluate the last message](https://git.drupalcode.org/project/ai/-/work_items/3579088) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, Needs manual testing, aiCoreModule Description: >>> [!note] Migrated issue Reported by: [abhisekmazumdar](https://www.drupal.org/user/3557964) Related to !1467 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Both RegexpGuardrail and RestrictToTopic only inspect the last message in a conversation. The full chat history is passed in via ChatInput, but both plugins call end($messages) and evaluate that single message only. In a mult… ### [Indexing breaks with custom SearchAPI DataSource](https://git.drupalcode.org/project/ai/-/work_items/3575992) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::bug Description: >>> [!note] Migrated issue Reported by: [mxr576](https://www.drupal.org/user/315522) Related to !1321 !1248 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation We have a homegrown Search API that indexes things :tm: but they are not content entities and the data source does not extend \Drupal\search_api\Plugin\search_api\datasource\ContentEntity. Wh… ### [How does the provider notify of better models](https://git.drupalcode.org/project/ai/-/work_items/3575689) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Bruno Bruno (bbruno) | Labels: AI Initiative Sprint, AI Product Development, Needs UX review, aiCoreModule Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation We are currently setting opinionited default models in many providers as the default provider/model for a specific operation type if nothing already exists. The problem with this is that AI world moves really fast, so a model that was top of t… ### [Clean up ai_observability settings form](https://git.drupalcode.org/project/ai/-/work_items/3574499) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiObservability, category::task Description: >>> [!note] Migrated issue Reported by: [svendecabooter](https://www.drupal.org/user/35369) Related to !1221 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation It seems the \Drupal\ai_observability\Form\SettingsForm can use some cleanup / removal of unnecessary code: Uses both #default_value and #config_target. The former is not needed if the latter is used. Simplify constants ... ### [[AI Prompts] Update the Type Casing of Entities/Permissions](https://git.drupalcode.org/project/ai/-/work_items/3574417) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::task Description: >>> [!note] Migrated issue Reported by: [robloach](https://www.drupal.org/user/61114) Related to !1223 >>> [Tracker] Update Summary: Created the issue Short Description: Update the casing of AI Prompt Types Check-in Date: 02/18/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Following #3567796: UX: AI Prompts: Improve UX around initial setup, the AI Prompts user interface has a mix of letter casing. For example: "AI Prompt type". Would be good to consolidate them so that they're all using Title Case, as similar with other entities ac… ### [Provide proper support for "unconfigured" AI provider state](https://git.drupalcode.org/project/ai/-/work_items/3572645) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::bug, priority::major Description: >>> [!note] Migrated issue Reported by: [mxr576](https://www.drupal.org/user/315522) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation This is the second time we have hit a WSOD with the Gemini provider where simply enabling the module can break pages that instantiate AI provider clients. See #3572638: WSOD after module enabled. At the moment, this does not look like something that can… ### [The Toolbar Chatbot runs the fold out animation on page reload](https://git.drupalcode.org/project/ai/-/work_items/3568246) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, Needs UX review, aiChatbot Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1428 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: [One-line issue summary for stakeholders] Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation The chatbot was greatly improved with #3554510: Sync Design of Toolbar Chatbot with Canvas AI Chatbot, but one issue is that if you have a local storage to remember the position, when its open on page load it runs the open up… ### [Require merge commits into main branches to include an issue reference in the format #[number], without restricting commit messages on feature branches](https://git.drupalcode.org/project/ai/-/work_items/3566613) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::task Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1285 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Require merge commits into main branches to include an issue reference in the format #[number], without restricting commit messages on feature branches. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation We want better traceability between code changes and Drupal.org issues by ensuring that anything merged into main branches (e.g. 1.2.x, 1.3.x, 2.0.x) references the relevant issue num… ### [Research: Open standard for saving one request](https://git.drupalcode.org/project/ai/-/work_items/3566569) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, discussion Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Research an open standard for exporting and importing a single AI request between logging, observability, and AI API Explorer. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation We currently have multiple developer and observability tools such as AI Logging, AI Observability, and AI API Explorer, each capturing AI requests in different formats and at different stages. When a request fails or behaves un… ### [Create validator for structured content](https://git.drupalcode.org/project/ai/-/work_items/3561971) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1385 !1242 !1210 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Create a validator of structured content Check-in Date: MM/DD/YYYY Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Currently we have an input in specific places like ECA, AI Agents or AI API Explorer where you can provide a structured content as a big json or yaml blob in a textarea. Since there are very specific rules about ho… ### [Fix Translate Text Explorer form functionality](https://git.drupalcode.org/project/ai/-/work_items/3553353) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, Needs tests, aiApiExplorer Description: >>> [!note] Migrated issue Reported by: [jhuhta](https://www.drupal.org/user/3387868) Related to !1333 !963 >>> Problem/Motivation When using the Translate Text Explorer, it always results in an exception: An error occurred The following error occurred while processing your request: Form errors cannot be set after form validation has finished. Of the following exception type: LogicException The reason seem to be the inconsistent use of a prefix in the form code. Steps to reproduce (required for bugs, but not feature requests) Have an translate text type of a provider (like ai_provider_d… ### [The chatbot config, default avatar does not accept tokens](https://git.drupalcode.org/project/ai/-/work_items/3546675) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiChatbot, category::feature Description: >>> [!note] Migrated issue Reported by: [anaconda777](https://www.drupal.org/user/3595801) Related to !1255 >>> Problem/Motivation In the block settings of the chat bot, the defaul avatar always shows User picture. Some sites may not use User picture image, instead a image field from user Profile. For example tokens in the field "Default Avatar" wont work, instead the default user pic is showed: [current-user:profile:field_profile_image] [current-user:profile:field_profile_image:entity] Steps to reproduce (required for bugs, but not feature requests) Please provide information like AI mo… ### [Move the input of structured output to an object.](https://git.drupalcode.org/project/ai/-/work_items/3545462) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::task Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !1114 !873 !1115 >>> --- AI TRACKER METADATA --- Update Summary: Changes to make it easier to input structured output. Check-in Date: MM/DD/YYYY (US format) [When we should see progress/get an update] Due Date: MM/DD/YYYY (US format) [When the issue should be fully completed] Blocked by: [#XXXXXX] (New issues on new lines) Additional Collaborators: @username1, @username2 AI Tracker found here: https://www.drupalstarforge.ai/ --- END METADATA --- Problem/Motivation The current solution… ### [Provide AI usage reports in Drupal admin panel](https://git.drupalcode.org/project/ai/-/work_items/3535260) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Alexey Korepov (murz) | Labels: AI Initiative Sprint, AI Product Development, Vienna2025, aiLogging Description: >>> [!note] Migrated issue Reported by: [tonytosta](https://www.drupal.org/user/262359) Related to !826 >>> The AI module bundle should provide an easy way to view calls to AI providers - log requests and responses locally, build usage reports, available directly in the Drupal admin panel out of the box, without using any external tools. Steps to reproduce (required for bugs, but not feature requests) I will list these steps even though it is not required: Install AI module Install AI Usage Reports module See usage reports in the Drupal admin panel: logs of requests and responses, aggreg… ### [Chatbot closes itself when adding a modal](https://git.drupalcode.org/project/ai/-/work_items/3499451) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiChatbot, category::bug Description: >>> [!note] Migrated issue Reported by: [heyyo](https://www.drupal.org/user/474388) Related to !1277 >>> Problem/Motivation ChatBot closes itself, and impossible to reopen-it, without refreshing the page Steps to reproduce 1. Create new content with CKEditor, for example basic page 2. Open ChatBot 3. Add Media into Ckeditor, we can see ChatBot closes 4. Include the Media 5. It's impossible to reopen the ChatBot > Related issue: [Issue #3505569](https://www.drupal.org/node/3505569) ### [Create plugins for interacting with multimedia in AI](https://git.drupalcode.org/project/ai/-/work_items/3463843) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Alphons Jaimon (AJV009) | Labels: AI Initiative Sprint, AI Product Development, aiCkeditor, category::task Description: >>> [!note] Migrated issue Reported by: [kevinquillen](https://www.drupal.org/user/317279) Related to !1431 !761 >>> Problem/Motivation Now that #3462674: Create a generic AI plugin layer for CKEditor is pending a merge, one of the final OOTB AI plugins for CKEditor is generating an image from providers and saving the result back to the media library in Drupal. This would be a core piece of CKEditor plugin functionality. This is true for text to speech or audio providers as well. This is more of an intermediate task as I assume the plugin would need to understand how to convert the saved … ### [ai_ckeditor: streamGenerateContent causes 400 Bad Request with Gemini 2.x models](https://git.drupalcode.org/project/ai/-/work_items/3586425) State: opened | Updated: 2026-06-28 | Author: josecarlosmedero | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::bug, priority::major Description: **Problem / Motivation** `AiRequest.php` calls `setStreamedOutput(TRUE)` for all providers. The PHP client `gemini-api-php` sends a malformed request body when calling `streamGenerateContent` against Gemini 2.x models, resulting in `400 Bad Request`. The non-streaming endpoint `generateContent` works correctly with the same payload. The error in logs: `Error invoking model response: Client error: POST https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:streamGenerateContent resulted in a 400 Bad Request response` Confirmed: the identical payload sent to `generateConten… ### [Save AI Content Suggestion plugin settings inside ai_content_suggestions.settings config object](https://git.drupalcode.org/project/ai/-/work_items/3586437) State: opened | Updated: 2026-06-28 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiContentSuggestions, category::feature Description: ## Summary At the moment the settings of AI Content Suggestion plugins are splitted between 3 config objects: - ai_content_suggestions.settings - ai_content_suggestions.prompts - ai_content_suggestions.tone ## Problem Content object `ai_content_suggestions.settings` needs to have all plugin settings to avoid loading unnecessary configurations, this way the plugin instantiation could be easier as configuration will exist in the same config file. > Change record: [#3591233](https://www.drupal.org/node/3591233) ### [AI Assistant runner fatals when an ai_agent config entity shares its ID with a code-defined AiAgent plugin](https://git.drupalcode.org/project/ai/-/work_items/3586449) State: opened | Updated: 2026-06-28 | Author: Ahmad Khalil (ahmad-khalil-imagex) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, priority::normal, state::rtbc Description: Project: AI\ Component: AI Assistant API\ Version: 1.4.x\ Issue type: Bug **Problem/Motivation** Drupal\\ai_assistant_api\\Service\\AgentRunner::runAsAgent() resolves the assistant's underlying agent through the plugin.manager.ai_agents plugin manager: // AgentRunner.php:74\\ $agent = this-\>aiAgentPluginManager-\>createInstance(assistant_id); The plugin manager surfaces two kinds of definitions under a single ID namespace: 1. Code-defined AiAgent plugins, which extend AiAgentBase. 2. Config-entity agents, which are wrapped at discovery time in AiAgentEntityWrapper. When a code plugin a… ### [Add interactive refinement capability to Field Widget Actions](https://git.drupalcode.org/project/ai/-/work_items/3586468) State: opened | Updated: 2026-06-28 | Author: Edward Zwart (ezeedub) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, priority::normal Description: ## Summary Add support for interactive refinement in ai_automators Field Widget Action plugins, allowing users to iteratively improve AI-generated content through conversational prompts before accepting it into a field. This is the companion issue to https://www.drupal.org/project/field_widget_actions/issues/3547306, which adds the modal infrastructure. This issue covers wiring up the automator plugins to use it. ## Problem Field Widg… ### [Document the AI module ecosystem: a categorized list of related modules with links and summaries](https://git.drupalcode.org/project/ai/-/work_items/3586482) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Rob Loach (robloach) | Labels: AI Initiative Sprint, AI Product Development, category::task, priority::normal Description: ## Description The AI module has grown a large ecosystem of companion projects on drupal.org — providers, vector database (VDB) providers, agents, recipes, tools, automators, and full distributions/CMS profiles. Today there is no single, curated page in the AI module's documentation that tells a site builder or developer **what exists, where to find it, and what each project does.** Discovering these modules currently means searching drupal.org by hand or relying on word of mouth. A maintained ecosystem index would make the AI module dramatically easier to adopt: people could see at a glance… ### [Add a deterministic script to auto-generate the providers/operation-types matrix from GitLab](https://git.drupalcode.org/project/ai/-/work_items/3586488) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::task, documentation Description: ## Description The provider/operation-type matrix at `docs/providers/matris.md` is maintained by hand. Today the only way it stays current is a note at the bottom asking contributors to open a pull request when their provider is missing — so it drifts out of date and is incomplete. We should add a **deterministic** script under `scripts/` that discovers every AI provider plugin published on `git.drupalcode.org`, works out which operation types each one supports, and regenerates `docs/providers/matris.md` from that data. Determinism matters so the script can run in CI / on a schedule and prod… ### [Generalize behaviour of FWA with Automators (AI Core v2)](https://git.drupalcode.org/project/ai/-/work_items/3586515) State: opened | Updated: 2026-06-28 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiAutomators, category::task Description: The refactor was done for version 1.x (1.4.x and 1.5.x). It was not possible to easily cherry-pick the changes to 2.x and 2.0.x. This issue is to port changes from https://git.drupalcode.org/project/ai/-/merge_requests/1536 to 2.x and 2.0.x branches. ### [Config action to verify if any vector database is there and it is setup](https://git.drupalcode.org/project/ai/-/work_items/3586517) State: opened | Updated: 2026-06-28 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::feature Description: ## Summary At the moment there is a config action `verifySetupAi` that is able to check whether the specific vector database provider is there in the system and it is setup. This is possible with `vdb_provider_is_setup` payload. In the real use case the plugin name of the vdb provider is not that relevant, as it is needed to know that any vdb provider is there and it is properly configured (setup) to create a search api server. One (any) would be enough without actually specifying which one. ## Problem There is no way at the moment to check that any vdb provider is installed and configured… ### [Add a Moderation Guardrail plugin (configurable moderation provider/model as a guardrail)](https://git.drupalcode.org/project/ai/-/work_items/3586531) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, aiExternalModeration Description: ## Goal Add a single configurable **Moderation Guardrail** plugin to the **Guardrails** system, so any moderation provider/model can be used as a guardrail. This makes "each moderation provider becomes a possible guardrail" achievable through configuration of one plugin, and is the foundation for folding external moderation into Guardrails. This issue covers **only creating the plugin**. The migration of existing `ai.external_moderation` configuration onto guardrail sets, and the deprecation of the old moderation runner, are handled separately in **#3586528** (which is blocked by this issue)… ### [Add Summarization operation type support to the echoai test provider](https://git.drupalcode.org/project/ai/-/work_items/3586537) State: opened | Updated: 2026-06-28 | Author: Ahmad Khader (Ahmad-Khader) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, Easy Wins, category::task Description: ## Description The echoai mock provider (`Drupal\ai_test\Plugin\AiProvider\EchoProvider`, in the `ai_test` submodule) implements several operation types so that downstream modules can kernel-test their integrations against a deterministic provider. It does not yet implement the **Summarization** operation type. ## Acceptance criteria * `echoai__ai` reports support for the `summarize` operation type and is selectable for it. * Calling `summarize()` with text `Foo` returns a `SummarizationOutput` whose normalized value is `Summary of: Foo`. * Consumers (e.g. the `ai_integration_eca` Summariz… ### [[Research] Mechanism to force deprecated bundled submodules onto their contrib version (start with ai_validations)](https://git.drupalcode.org/project/ai/-/work_items/3586538) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiValidations, category::plan Description: ## Summary Research and define a **repeatable mechanism** for forcing a site off a **deprecated bundled submodule** (shipped inside AI Core) and onto the **standalone contrib module** of the same machine name. Use **`ai_validations`** as the first concrete case, then generalise the outcome into a documented "deprecate-and-switch" playbook for the other submodules being moved to contrib. This is the missing *"how"* behind the deprecation work already started in #3552888 (Move out AI Validations), #3554535 / [CR 3570275](https://www.drupal.org/node/3570275) (AI Translate) and #3586497 (AI Sear… ### [Add an AI reranking processor for Search API (owned by the AI module)](https://git.drupalcode.org/project/ai/-/work_items/3586543) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, aiCoreModule, category::feature Description: ### Problem/Motivation Reranking improves the precision of semantic search by re-ordering an initial result set with a dedicated rerank model (or a general-purpose LLM). AI Core already added a `rerank` operation type in [#3488114](https://www.drupal.org/project/ai/issues/3488114) (now closed), but nothing in the ecosystem consumes it yet. [#3557901 — Add Reranking Support to AI Search](https://git.drupalcode.org/project/ai_search/-/work_items/3557901) proposed adding reranking directly to AI Search. On reflection it makes more sense for the **AI module itself to own this**: reranking is a g… ### [Introduce a modern AI Chatbot frontend library](https://git.drupalcode.org/project/ai/-/work_items/3586571) State: opened | Updated: 2026-06-28 | Author: Bruno Bruno (bbruno) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, why::needsInfo Description: ## Description The current AI Chatbot module is tightly coupled to the DeepChat library. DeepChat does more than render the UI - it also handles the API communication, chat state, and message history. Functionality such as tool calling, conversation history, and thread management is implemented in a DeepChat-specific way, making it difficult to swap in alternative chat interfaces. [assistant-ui](https://www.assistant-ui.com/) was identified as a promising alternative - a React-based component library that supports custom API endpoints and offers significantly easier customization than DeepCha… ### [[2.x] Add a setup-automators agent skill to configure automators on fields](https://git.drupalcode.org/project/ai/-/work_items/3586564) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Ann Mary Sruthy (annmarysruthy) | Labels: AI Initiative Sprint, AI Innovation, aiAutomators, category::task Description: ## Description The AI Automators submodule lets site builders attach an **automator** to a field so its value is generated automatically when the entity is saved (for example, summarising body text into a summary field, or generating alt text for an image). Configuring an automator today means working through the field's admin UI. This task adds a `setup-automators` agent skill (under `modules/ai_automators/.agents/skills/`) that configures automators on fields, driven through the [Tool module](https://www.drupal.org/project/tool)'s tools via `drush tool:run`. It is the Automators counterpar… ### [[1.x] Add a setup-automators agent skill to configure automators on fields](https://git.drupalcode.org/project/ai/-/work_items/3586563) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Ann Mary Sruthy (annmarysruthy) | Labels: AI Initiative Sprint, AI Innovation, aiAutomators, category::task Description: ## Description The AI Automators submodule lets site builders attach an **automator** to a field so its value is generated automatically when the entity is saved (for example, summarising body text into a summary field, or generating alt text for an image). Configuring an automator today means working through the field's admin UI. This task adds a `setup-automators` agent skill (under `modules/ai_automators/.agents/skills/`) that configures automators on fields, driven through the [Tool module](https://www.drupal.org/project/tool)'s tools via `drush tool:run`. It is the Automators counterpar… ### [Add a configure-ai-settings agent skill for general AI settings (default models, providers, timeout, trusted domains)](https://git.drupalcode.org/project/ai/-/work_items/3586562) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, aiCoreModule, category::task Description: ## Description Following the same pattern as the `setup-guardrails` skill (#3586561), the AI module would benefit from a companion skill that configures the module's **general settings** on a running site, driven through the [Tool module](https://www.drupal.org/project/tool)'s tools via `drush tool:run`. Today these settings can only be inspected and changed through the admin UI at `/admin/config/ai/settings`. This task adds a `configure-ai-settings` skill (sibling of `create-guardrail-plugin` and `setup-guardrails`, under `ai/.agents/skills/`) covering the core operational settings stored i… ### [Add a setup-guardrails agent skill to configure guardrails, guardrail sets, and global guardrails](https://git.drupalcode.org/project/ai/-/work_items/3586561) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, aiCoreModule, category::task Description: ## Description The AI module already ships a `create-guardrail-plugin` agent skill that *authors* new guardrail plugin classes. There is, however, no equivalent skill for *operating* the guardrails that already exist — i.e. configuring them on a running site. Site builders and agents currently have to drive the admin UI by hand to wire up guardrails, guardrail sets, and the global guardrail list. This task adds a `setup-guardrails` skill (sibling of `create-guardrail-plugin`, under `ai/.agents/skills/`) that configures guardrails rather than creating them, driven through the [Tool module](ht… ### [Enforce execution principal in AiAssistantApiRunner (no fallback to session user when executor is provided)](https://git.drupalcode.org/project/ai/-/work_items/3574723) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Abhishek Dhariwal (adaptative) | Labels: AI Initiative Sprint, AI Innovation, category::task, priority::normal Description: >>> [!note] Migrated issue Reported by: [scott falconer](https://www.drupal.org/user/52557) Related to !1233 >>> Problem/Motivation Issue #3574662 hardened the /api/deepchat boundary by rejecting caller-supplied execution identity fields. However, the shared runner layer still depends on ambient current-user behavior in AiAssistantApiRunner, which is unsafe for queue/cron/sessionless execution paths and weakens the #3573899 execution-principal contract. Proposed resolution Add explicit executor support to AiAssistantApiRunner (executor passed as UID at runner boundary). Resolve executor… ### [Drupal AI Contribution meeting 2026-06-29](https://git.drupalcode.org/project/ai/-/work_items/3586575) State: opened | Updated: 2026-06-28 | Author: Valery Lourie (valthebald) | Assigned: unassigned | Labels: Description: Drupal AI Contribution meeting from June 29 at 18:00 to June 30, 2026 19:00 (Central European time, check your local time at https://www.timebie.com/std/berlin.php?q=18) Previous meeting [#3586498: Drupal AI Contribution meeting 2026-06-15](https://git.drupalcode.org/project/ai/-/work_items/3586498) ## Where #ai-contrib channel in [Drupal Slack](https://www.drupal.org/slack/) ## Agenda ### Attendees self-intro and interests ### Follow-up to topics of previous meeting ### Suggest your topic in comments ### Add the issue you want to discuss as a comment or related issue to this meeting … ### [Agent Skill 'create-ai-api-explorer' failed validation](https://git.drupalcode.org/project/ai/-/work_items/3586574) State: opened | Updated: 2026-06-28 | Author: Ronald te Brake (ronaldtebrake) | Assigned: unassigned | Labels: aiApiExplorer, category::bug Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1732 [Update the Ai API Explorer Skill name, matching the directory as per Agent Skills specification](https://git.drupalcode.org/project/ai/-/merge_requests/1732) | State: opened | Author: Ronald te Brake (ronaldtebrake), 11 diff lines Description: ## Summary The Agent Skill in ai_api_explorer does not comply with the Agent Skills specification - https://agentskills.io/specification#name-field which could lead to it not being invoked by Agents. In https://git.drupalcode.org/project/ai_best_practices/-/work_items/3588963 you can see our validation showed this: ``` [WARNING] Skill 'create-ai-api-explorer' failed validation: Directory name 'create-ai-api-explorer' must match skill name 'create-new-explorer' ``` ## Steps to reproduce 1. Install `drupal/ai` 2. `ddev composer require --dev drupal/ai_best_practices:@dev` 3. See the vali… --- MERGE REQUESTS (24h) --- ### [Issue #3477173: Add functional tests for AI CKEditor](https://git.drupalcode.org/project/ai/-/merge_requests/1302) State: opened | Author: velmir_taky (root_emarketing) | Branch: 3477173-add-functional-tests-all | 635 diff lines Description: Closes #3477173 ### [Issue #3568648: Batch embeddings as a first-class operation type (follow-up to !1704)](https://git.drupalcode.org/project/ai/-/merge_requests/1726) State: opened | Author: Ahmad Khalil (ahmad-khalil-imagex) | Branch: 3568648-batch-embeddings-long-running-approach | 607 diff lines Description: # !1726 — ai (#3568648) Pushed a follow-up that makes batch embeddings a first-class, non-breaking operation type and hardens the VDB path. ## Summary * New `BatchEmbeddingsInterface` operation type with ID `batch_embeddings`. * Opt-in. * Extends `OperationTypeInterface`. * Makes `batchEmbeddings()` a trigger method so it routes through `ProviderProxy`. * This ensures the operation gets: * Events * Config normalization * Tags * `ai_logging` * `EmbeddingsInterface` is untouched, so existing providers are unaffected. * `OpenAiBasedProviderClientBase` now implements `Ba… --- COMMITS (24h) --- (none) ======================================================================== ## [16] summariseModule:ai_initiative:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Drupal AI Initiative (machine name: ai_initiative) Reporting period: last 24h (2026-06-28T05:00:06+00:00 to 2026-06-29T05:00:06+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

                              Drupal AI Initiative

                              then use

                              ,

                              ,

                                /
                              • , and as needed. Output only the HTML fragment with no surrounding , , or
                                tags. After the project summary prose, add a single subsection titled "

                                How can I help on this project?

                                " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Create AI Validations Recipe](https://git.drupalcode.org/project/ai_initiative/-/work_items/3585699) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::task, priority::normal Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Description We want to create a new Drupal AI recipe in a separate project ai_recipe_validations, that provides a turnkey configuration for the AI Validations module. This recipe is intended to be used in the Drupal AI Demo and must be fully compatible with Drupal CMS (Starshot). Instead of creating new… ### [Recipe: AI Automators comment-spam scoring and auto-unpublish](https://git.drupalcode.org/project/ai_initiative/-/work_items/3585304) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, ideas Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Ship a recipe that wires AI Automators onto the core Comment entity to score spam on a custom_field and auto-unpublish comments scoring 8 or higher, with a View for triage. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation AI Automators is powerful but the on-ramp is still "wire it up yourself" - even for the canonical moderation use case of scoring comments for spam. We want a Drupal recipe that site… ### [Create documentation on how to create issues that are testable on DrupalForge](https://git.drupalcode.org/project/ai_initiative/-/work_items/3583362) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::task, documentation Description: >>> [!note] Migrated issue Reported by: [afoster](https://www.drupal.org/user/594458) >>> [Tracker] Update Summary: Blocked — document how to create DrupalForge-testable issues spanning multiple dev module versions Check-in Date: 04/13/2026 Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Many AI issues span multiple modules at once. For example, when we work on UI improvements in the AI module and need to use those same improvements in CCC, reviewers need dev versions of both modules installed together to t… ### [[Meta] Create AI Review Functionality / Create Technical Concept](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575158) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Christoph Breidert (breidert) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Based on the agreed functional concept and UX design, define the technical approach for implementing the AI-powered content review system. This concept will be the foundation for implementation in the next sprint. Tasks Define the architecture of the review pipeline: how reviews are triggered, … ### [[Meta] Create AI Review Functionality / Create UX](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575157) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Angela Saldaña (angela_saldana) | Labels: AI Initiative Sprint, AI Product Development, category::task, priority::normal Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Design the user experience for the AI-powered content review system, covering all key interactions an editor encounters when working with review results. Tasks Review and align with the UX briefing provided by the functional concept before starting design work Design the "Review with AI" trigge… ### [[Meta] Create AI CMS Demo System / Create Hoster POC — amazee.io](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575149) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Dan Lemon (dan2k3k4) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Create the first hoster-specific branch of the AI CMS Demo System, adapting the main branch baseline to work on Amazee.io. This will serve as the reference implementation for how hoster branches are structured and maintained. Tasks Branch off main and set up the Amazee.io-specific configuration… ### [[Meta] Create AI CMS Demo System / Create Demo POC](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575147) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Dan Lemon (dan2k3k4) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Set up a minimal working demo instance based on Drupal CMS that integrates a curated set of AI functionality developed during the Product Development Sprints. This POC represents the main branch baseline that all hoster branches build upon. Tasks Set up a minimal Drupal CMS installation as the … ### [[Meta] Create AI CMS Demo System / Create Technical Concept](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575145) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Dan Lemon (dan2k3k4) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Define and document the technical foundation of the AI CMS Demo System — the branching strategy, the customization approach for different hosters, and the contribution workflow. Tasks Document the branching model: how main, hoster branches, and the demo branch relate to each other and how… ### [[Meta] Create AI CMS Demo System / Organize and Set Up Repository Access](https://git.drupalcode.org/project/ai_initiative/-/work_items/3575143) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Christoph Breidert (breidert) | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Summary Set up the GitLab repository for the AI CMS Demo System and configure access for all Drupal AI Partners (Makers). Tasks Create the GitLab project with the agreed repository structure Configure access permissions so the repository is restricted to Drupal AI Partners (Makers) Set up the initial b… ### [Start setting up AI Starterkit](https://git.drupalcode.org/project/ai_initiative/-/work_items/3569199) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Research and initial setup for AI Starterkit showcase website Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation There is a growing need to demonstrate the full production capabilities of the AI Initiatives ecosystem in a concrete, opinionated, and easy-to-consume way. While the AI module and related projects provide powerful building blocks, there is currently no canonical showcase that ties these tog… ### [Create QA image for DrupalPod](https://git.drupalcode.org/project/ai_initiative/-/work_items/3558437) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Tawny Bartlett (littlepixiez) | Labels: AI Initiative Sprint, AI Product Development, Quality Assurance, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> Problem/Motivation Currently its very hard to do QA on some issue in the AI issue queue, because you have to setup a lot of things locally. DrupalPod+DrupalForge has a solution for this: https://www.drupal.org/docs/develop/development-tools/drupalpod/drupalpod-drupal-forge Per discussions with Salman and Darren at DrupalForge, the easiest is that we create our own base image and work from that. This exists here: https://github.com/drupalforge/DrupalPod-AI-QA We need to fill that with all the … ### [[Meta] AI Content Review Workflow](https://git.drupalcode.org/project/ai_initiative/-/work_items/3545606) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Christoph Breidert (breidert) | Labels: AI Initiative Sprint, AI Product Development, category::plan, planning Description: >>> [!note] Migrated issue Reported by: [breidert](https://www.drupal.org/user/135619) >>> Goals & Guiding Principles Provide a native Drupal way to review content with the help of AI through an intuitive user interface. This functionality should integrate seamlessly with Drupal's existing content management workflows while offering AI-powered assistance for common editorial tasks. Key principles: Examples include AI-powered content rating systems, automated suggestions for guideline compliance, content flagging for review, brand voice consistency checks, and legal/regulatory complianc… ### [GitLab workflow automation for AI Initiative repos (exploration + rollout)](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586474) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative, AI Initiative Sprint, AI Innovation, AI Product Development Description: ## Summary Build out an automated GitLab workflow layer for the Drupal AI Initiative's GitLab projects (`project/ai`, `project/ai_agents`, providers, etc.) so that issue and MR housekeeping — state transitions, label hygiene, completeness checks, dependency review pings — happens automatically instead of requiring manual maintainer effort. This is split into two phases: 1. **Exploration** — evaluate which Drupal-side platform is the right host for the automation logic (Rules, ECA, or a custom module on top of [`gitlab_api`](https://www.drupal.org/project/gitlab_api)). 2. **Automation rollou… ### [Module Finder: recruit beta testers and drive incremental improvements](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586577) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::task, feedback Description: ## Summary Recruit beta testers for the **Module Finder** and use their feedback to make incremental improvements. Module Finder is an AI-powered semantic search over all Drupal contributed modules: it has a UI for searching, and an agent skill that does the same search so a coding agent can check whether functionality already exists in the community **before** writing custom code — avoiding reinventing what contrib already provides. The immediate goal is to put it in front of real users, collect "what could be done better", and iterate in small increments. A beta link will be shared with an… ### [[Meta] Skills for hosting providers: control deployment and environment setup](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586575) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation Description: ## Summary Across the AI Initiative we want agent skills that can control **deployment and environment setup** on the various hosting providers Drupal sites run on. The goal is that a developer can set up and deploy environments through normal text instructions, with the skill translating that intent into the provider's own API or CLI. This meta tracks the effort and holds one sub-issue per hosting provider. ## Goals - A consistent pattern for provider "deployment & environment" skills, reusable across hosts. - For each supported provider: create/configure an environment and deploy to it fr… ### [Research: DevPanel API — what deployment & environment automation is possible](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586576) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: Sprint13-2026, ai::outside Description: ## Research Question Can [DevPanel](https://devpanel.com) environment setup and deployment be driven programmatically — enough that an agent skill could set up and deploy to **real** DevPanel environments from natural-language instructions? What does the DevPanel API/CLI expose, and where are its limits? ## Background Part of the hosting-provider skills meta #3586575. Before building a DevPanel deployment skill, we need to know what the platform actually allows through its API/CLI — authentication, environment lifecycle, deploys — so we can scope (or rule out) a skill realistically. ## Sco… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [17] summariseModule:ai_agents_test:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Agents Test (machine name: ai_agents_test) Reporting period: last 24h (2026-06-28T05:00:06+00:00 to 2026-06-29T05:00:06+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

                                AI Agents Test

                                then use

                                ,

                                ,

                                  /
                                • , and as needed. Output only the HTML fragment with no surrounding , , or
                                  tags. After the project summary prose, add a single subsection titled "

                                  How can I help on this project?

                                  " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Run more than one test group in Bulk - Test Collections?](https://git.drupalcode.org/project/ai_agents_test/-/work_items/3541324) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::task, code Description: >>> [!note] Migrated issue Reported by: [yautja_cetanu](https://www.drupal.org/user/626050) Related to !11 >>> Problem/Motivation When doing automated tests or just trying different models and not using Tests to help with prompt engineering its good to just fire off all the same tests you want and get the overall results. Steps to reproduce Proposed resolution Maybe make views bulk operation style UI so you can click a checkbox next to the test groups you want to run and also run all. Or we could have a Tag on test groups and run all of a specific tag? Maybe this is better if we are goin… ### [Research: merging ai_agents_test with ai_eval (and AiLlm test harness)](https://git.drupalcode.org/project/ai_agents_test/-/work_items/3585124) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::plan, code Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Research whether ai_agents_test should be merged with ai_eval, and how the core ai module's tests/src/AiLlm harness fits into the picture. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation We currently have three overlapping efforts in the Drupal AI ecosystem that each cover part of "validate that an AI configuration actually works": ai_agents_test - a Drupal module that lets site builders build test… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [18] summariseModule:gemini_provider:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Gemini Provider (machine name: gemini_provider) Reporting period: last 24h (2026-06-28T05:00:06+00:00 to 2026-06-29T05:00:06+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

                                  Gemini Provider

                                  then use

                                  ,

                                  ,

                                    /
                                  • , and as needed. Output only the HTML fragment with no surrounding , , or
                                    tags. After the project summary prose, add a single subsection titled "

                                    How can I help on this project?

                                    " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Image Embeddings](https://git.drupalcode.org/project/gemini_provider/-/work_items/3588392) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !35 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation Gemini is one of the only providers that has file embeddings, outside of AWS Titan. This means that you can index and search using an image and image likeness. Currently the embedding solution only allows for text, we should add at least images here (and think … ### [Add support for batch embeddings](https://git.drupalcode.org/project/gemini_provider/-/work_items/3589183) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: >>> [!note] Migrated issue Reported by: [a.dmitriiev](https://www.drupal.org/user/3235287) Related to !37 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Check-in Date: MM/DD/YYYY Additional Collaborators: Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation As a follow up to this issue https://git.drupalcode.org/project/ai/-/work_items/3568648 it would be nice to add support of batch embeddings as Gemini models can do that. Proposed resolution Use method batchEmbedContents from Gemini client when EmbeddingsInput conta… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [19] summariseModule:ai_agents:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Agents (machine name: ai_agents) Reporting period: last 24h (2026-06-28T05:00:06+00:00 to 2026-06-29T05:00:06+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

                                    AI Agents

                                    then use

                                    ,

                                    ,

                                      /
                                    • , and as needed. Output only the HTML fragment with no surrounding , , or
                                      tags. After the project summary prose, add a single subsection titled "

                                      How can I help on this project?

                                      " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Explore export/sync plugin system for AI Agents to external agent platforms (Claude Code, VAPI, etc.)](https://git.drupalcode.org/project/ai_agents/-/work_items/3577241) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !249 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: Explore export/sync plugin system for AI Agents to external agent platforms (Claude Code, VAPI, etc.) Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation The AI Agents module currently allows defining and configuring agents inside Drupal. However, many modern AI ecosystems expect agents to exist inside external platforms such as Claude Code or services like VAPI. In many cases Drupal sh… ### [Add views agent](https://git.drupalcode.org/project/ai_agents/-/work_items/3542457) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, AI Views, Workstream 4a Description: >>> [!note] Migrated issue Reported by: [jibran](https://www.drupal.org/user/1198144) Related to !206 !172 >>> Problem/Motivation --- AI TRACKER METADATA --- Update Summary: This is an example bit of metadata to test things working with the tracker. Check-in Date: 09/01/2025 (US format) [When we should see progress/get an update] Due Date: 09/09/2025 (US format) [When the issue should be fully completed] Blocked by: #3528730: Create ShortTermMemoryPlugin(New issues on new lines) #3528549: Allow tool calling in streamed chat Additional Collaborators: jibran AI Tracker found here: https://… ### [Create an ChatProcessor](https://git.drupalcode.org/project/ai_agents/-/work_items/3585984) State: opened | Updated: 2026-06-28 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, state::rtbc Description: With https://git.drupalcode.org/project/ai/-/work_items/3492940 the agents could create ChatProcessor that has the settings the AI Assistant layer has. Discussion has to be made if we already support multiple threads and want that in the future, so you can basically have one chat where you can pick the agent you talk to. But for 1-to-1 functionality parity, it means that the consumer sets one agent per chatbot. ### Proposed resolution Create a ChatProcessor for agent that has a form that sets:\ \* Agent\ \* Specific Error Messages (?)\ \* Allow History (?) We need to discuss how we store h… ### [AI Agent entity form should reject machine names that collide with existing code-plugin IDs](https://git.drupalcode.org/project/ai_agents/-/work_items/3586026) State: opened | Updated: 2026-06-28 | Author: Ahmad Khalil (ahmad-khalil-imagex) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, state::rtbc Description: Project: AI Agents\ Component: Code\ Version: 1.4.x\ Issue type: Bug **Problem/Motivation** AiAgentManager merges two types of plugin definitions under a single ID namespace: 1. Code-defined AiAgent plugins discovered via parent::findDefinitions(). 2. ai_agent config entities, merged in by AiAgentManager::findDefinitions() at src/PluginManager/AiAgentManager.php:196. When an admin saves an ai_agent config entity with a machine name that matches an existing code-plugin ID, two failure modes occur: 1. The config entity is silently dropped from plugin discovery — the merge in findDefinitions… ### [Use the `ai_json_schema` editor for the AI Agent structured-output schema field](https://git.drupalcode.org/project/ai_agents/-/work_items/3586042) State: opened | Updated: 2026-06-28 | Author: Ahmad Khader (Ahmad-Khader) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::bug, state::needsWork Description: ## Description The AI Agent form renders the **structured output** JSON schema as a plain `textarea` (`AiAgentForm::buildFormMetadata()`, `$form['prompt_detail']['structured_output_detail']['structured_output_schema']`). That makes a schema cumbersome to add (no validation or editor affordances, easy to ship malformed JSON) and hard to read once saved (a wall of escaped JSON). Switch it to the AI module's dedicated `'#type' => 'ai_json_schema'` element (`Drupal\ai\Element\AiJsonSchema`), so adding a schema uses a purpose-built CodeMirror editor (syntax highlighting, JSON linting) and a saved… ### [Add possibility to catch all errors on a tool](https://git.drupalcode.org/project/ai_agents/-/work_items/3547994) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Needs screenshots, Needs tests Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !220 >>> Problem/Motivation Right now you have to throw specific errors for the agent to continue running. However this should be possible for an agent creator to decide themselves. If you for instance don't have permissions to run a tool, currently the whole run dies and it stops executing there and the UI has to take care of presenting this to the end user. But there could easily be agents that should be available to different roles, where it should be possible for certain roles to… ### [Let an agent use a role when running a tool](https://git.drupalcode.org/project/ai_agents/-/work_items/3518167) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::feature, code Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !87 >>> Problem/Motivation Currently the modus operandi is that the permissions checks that happens in tools, happens on the session that is running it. In AI Agents Explorer or the AI Assistants API, this means the user that triggers the query. There are however cases where agents should be completely autonomous or where they are triggered in queues/cron jobs, where there is no sessions attached. In those cases it should be possible for the person that sets up the agent to be able to… ### [Allow agents to have permissions, user or a role](https://git.drupalcode.org/project/ai_agents/-/work_items/3586019) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: scott falconer (scottfalconer) | Labels: AI Initiative Sprint, AI Innovation, category::feature, group::ai-initiative Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> Problem/Motivation There are two problems right now in terms of agents and roles/permissions: 1. If we use only the end-users permissions, the agent itself will have the same permissions, and wide generic tools that are not constrained, might be used as attack vectors via prompt injection. 2. When autonomous agents runs in cron, ECA or something else, they run as an anonymous user, meaning that they might not be able to solve what they want to solve, because they don't have enough permissions… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [20] summariseModule:tool:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Tool API (machine name: tool) Reporting period: last 24h (2026-06-28T05:00:06+00:00 to 2026-06-29T05:00:06+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

                                      Tool API

                                      then use

                                      ,

                                      ,

                                        /
                                      • , and as needed. Output only the HTML fragment with no surrounding , , or
                                        tags. After the project summary prose, add a single subsection titled "

                                        How can I help on this project?

                                        " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [MapDefinitionNormalizer and ContextDefinitionNormalizer break REST serialization (same as #3568588)](https://git.drupalcode.org/project/tool/-/work_items/3582939) State: opened | Updated: 2026-06-28 | Author: Stephan Huber (stmh) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation Description: ### Steps to reproduce 1. Install Drupal 11.x with the REST module enabled and a content entity exposed via a `ResourceBase` plugin that calls `$serializer->normalize($entity, 'json')` (e.g. any custom REST resource that returns entities as normalized arrays). 2. Enable the Tool module (verified on 1.0.0-alpha9, 1.0.0-beta1, and 1.0.x-dev). 3. Request the REST endpoint and inspect the JSON response — or reproduce directly via `drush php:eval`: ```php $node = \Drupal::entityTypeManager()->getStorage('node')->load(1); print_r(\Drupal::service('serializer')->normalize($node, 'json')); … ### [Allow controlling Tool return format](https://git.drupalcode.org/project/tool/-/work_items/3582933) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::feature, code Description: >>> [!note] Migrated issue Reported by: [b_sharpe](https://www.drupal.org/user/2512258) >>> Problem/Motivation Currently the return of a tool is textual which is fine for AI to analyze, but sometimes in MCP or other methods like AG-UI that want the raw result. Steps to reproduce Call a tool and observe the result, it will be something like: Tool Plugin executed successfully: View 'my_view' executed successfully.\nOutput for results: { actual tool result }Proposed resolution I see a few ways forward here Change to just spit out the raw result directly Separate the result from the text so … ### [Allow tool execute to be previewed](https://git.drupalcode.org/project/tool/-/work_items/3558037) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::task, code Description: >>> [!note] Migrated issue Reported by: [michaellander](https://www.drupal.org/user/636494) >>> Problem/Motivation It's been requested that we allow tools to be 'previewed'. This would mostly only affect tools that write out a permanent change. This is helpful in UI's when you want to simulate a flow, or debug, and this may be helpful in AI to allow more advanced 'planning' strategies. Proposed resolution Implement a preview method: <?phppublic function preview() {  $tool->setPreview();  $tool->execute();  $tool->setPreview(FALSE);}$tool->preview();?> An… ### [Introduce support for Discovery, Planning and Execute calls for MCP and Agents](https://git.drupalcode.org/project/tool/-/work_items/3546292) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::plan, code Description: >>> [!note] Migrated issue Reported by: [michaellander](https://www.drupal.org/user/636494) >>> Problem/Motivation The challenge with MCP right now is there seems to be a soft cap around 40 tools, and because all tools are sent on every request, more noise = more hallucinations and more failures. AI Agents on the other hand have similar degradation with tool counts, but are also currently lacking a reliable short term memory layer for better context management, meaning chaining many tool calls together quickly hits caps for requests/tokens. Proposed resolution We can reduce some of the to… ### [Proposal: make Tool's declarations introspectable over the CLI, and enrich input schema](https://git.drupalcode.org/project/tool/-/work_items/3582943) State: opened | Updated: 2026-06-28 | Author: Matt Glaman (mglaman) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation Description: ## Goal Tool stays consumer-agnostic. Give consumers — the Drush CLI, `mcp_server`, a future planner — enough *introspectable* metadata to understand and present a tool they didn't author, **before** invoking it. Most of what's needed already exists in the Tool API model; the work is mostly **surfacing** it over the CLI, plus **one genuinely additive** piece (richer input schema). Two deliverables (A additive, B surfacing); each can ship as its own MR. This issue is the umbrella proposal for a shared discussion. ## Background This comes out of building [`canvas_tools`](https://www.drupal.o… ### [File Input Handling](https://git.drupalcode.org/project/tool/-/work_items/3572774) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::task, code Description: >>> [!note] Migrated issue Reported by: [abhisekmazumdar](https://www.drupal.org/user/3557964) Related to !73 >>> Problem/Motivation The Tool API enables to be invoked by AI agents, which may include operations on files. We need to research how Tools should accept and process file inputs securely. This is a PoC and research work This means that after the research and proof of concept work, a few decisions will be made. All the required issue will be created, which may be included in this module or another one. Key research areas include Input formats File loading Normalization and schema… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [21] summariseModule:canvas:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Drupal Canvas (machine name: canvas) Reporting period: last 24h (2026-06-28T05:00:06+00:00 to 2026-06-29T05:00:06+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. End your section with a single line listing the people who were active this period, exactly in this form (plain text, no ): "Contributors: **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Narendra Singh Rathore (NarendraR), Rajab Natshah (RajabNatshah)". Use only the names from that list, verbatim, keeping any trailing "[N]" commit count exactly as shown. Do not introduce any other names. Format your response as an HTML fragment. Start with

                                        Drupal Canvas

                                        then use

                                        ,

                                        ,

                                          /
                                        • , and as needed. Output only the HTML fragment with no surrounding , , or
                                          tags. After the project summary prose, add a single subsection titled "

                                          How can I help on this project?

                                          " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Dependency Dashboard](https://git.drupalcode.org/project/canvas/-/work_items/3591657) State: opened | Updated: 2026-06-29 | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Assigned: unassigned | Labels: Description: This issue lists Renovate updates and detected dependencies. Read the [Dependency Dashboard](https://docs.renovatebot.com/key-concepts/dashboard/) docs to learn more. ## Repository Problems Renovate tried to run on this repository, but found these problems. - ⚠️ WARN: Failed to set branch status - ⚠️ WARN: Rate limit exceeded for api.github.com, as no hostRules set for this host. Please set a GITHUB_COM_TOKEN - ⚠️ WARN: No tool releases found. - ⚠️ WARN: No github.com token has been configured. Skipping release notes retrieval ## Deprecations / Replacements > ⚠️ **Warning** > The foll… --- MERGE REQUESTS (24h) --- ### [3591734: WSOD AssertionError: assert(!$data instanceof ComponentInputsMapping) in assert() when requesting tmgmt translation job](https://git.drupalcode.org/project/canvas/-/merge_requests/1296) State: opened | Author: Narendra Singh Rathore (NarendraR) | Branch: 3591734-wsod-assertionerror-assertdata-instanceof-componentinputsmapping | 216 diff lines Description: [Description of changes] AI-Generated: Yes (Used opencode to fix the error). ## Testing instructions - [ ] Setup TMGMT and all related modules for translation to work on Canvas - [ ] Create a code component with Date prop with single cardinality. - [ ] Create a Canvas Page and place above code component and publish the page - [ ] Go to `/admin/tmgmt/sources` and Click Request translation button after selected desired language to translate in. - [ ] Error will appear. Closes #3591734 ### [chore(deps): update dependency @eslint/compat to v2](https://git.drupalcode.org/project/canvas/-/merge_requests/1306) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/eslint-compat-2.x | 13 diff lines Description: This MR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@eslint/compat](https://github.com/eslint/rewrite/tree/main/packages/compat#readme) ([source](https://github.com/eslint/rewrite/tree/HEAD/packages/compat)) | [`^1.3.1` → `^2.0.0`](https://renovatebot.com/diffs/npm/@eslint%2fcompat/1.4.1/2.1.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@eslint%2fcompat/2.1.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confide… ### [chore(deps): update dependency @chromatic-com/storybook to v5](https://git.drupalcode.org/project/canvas/-/merge_requests/1305) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/chromatic-com-storybook-5.x | 13 diff lines Description: This MR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@chromatic-com/storybook](https://github.com/chromaui/addon-visual-tests) | [`^3.2.2` → `^5.0.0`](https://renovatebot.com/diffs/npm/@chromatic-com%2fstorybook/3.2.7/5.2.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@chromatic-com%2fstorybook/5.2.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@chromatic-com%2fstorybook/3.2.7/5.2.1?slim=true) | >… ### [fix(deps): update npm minor and patch](https://git.drupalcode.org/project/canvas/-/merge_requests/1238) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/npm-minor-and-patch | 77 diff lines Description: This MR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@axe-core/playwright](https://github.com/dequelabs/axe-core-npm) | [`4.11.1` → `4.12.1`](https://renovatebot.com/diffs/npm/@axe-core%2fplaywright/4.11.1/4.12.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@axe-core%2fplaywright/4.12.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@axe-core%2fplaywright/4.11.1/4.12.1?slim=true) | | [@babel/parser](… ### [chore(deps): update mysql docker tag to v8.4](https://git.drupalcode.org/project/canvas/-/merge_requests/1272) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/mysql-8.x | 13 diff lines Description: This MR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | mysql | service-image | minor | `8.0` → `8.4` | --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - "before 6am on Monday" - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever MR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this MR, c… ### [feat: #3567225 Allow per-node override of Content Template via checkbox in node selector](https://git.drupalcode.org/project/canvas/-/merge_requests/948) State: opened | Author: Rajab Natshah (RajabNatshah) | Branch: 3567225-allow-per-node-override | 261 diff lines Description: Closes #3567225 ## Summary Allows editing a Canvas layout on an individual node, overriding its Content Template. - A per-node Canvas editor (`/canvas/editor/node/{node}`) edits the node's own layout. - Field linking (dynamic prop sources) resolves against the node as the host entity. When editing a Content Template, the preview entity remains the host. - The Page Data panel is hidden in the per-node editor, and when `drupalSettings.canvas.hidePageDataPanel` is `TRUE`. - Prop-source suggestions are offered for node layouts, not only Content Templates. ## Changes - Back end: `ApiLayoutCont… --- COMMITS (24h) --- (none) ======================================================================== ## [22] summariseModule:ai_context:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Context Control Center (CCC) (machine name: ai_context) Reporting period: last 24h (2026-06-28T05:00:06+00:00 to 2026-06-29T05:00:06+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

                                          Context Control Center (CCC)

                                          then use

                                          ,

                                          ,

                                            /
                                          • , and as needed. Output only the HTML fragment with no surrounding , , or
                                            tags. After the project summary prose, add a single subsection titled "

                                            How can I help on this project?

                                            " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Clean up CCC tooltip, truncation, and icon-only content](https://git.drupalcode.org/project/ai_context/-/work_items/3586302) State: opened | Updated: 2026-06-29 | Author: Kristen Pol (kepol) | Assigned: Joshua Fernandes (joshua1234511) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **3. Tooltip, Truncation, And Icon-Only Content** **Priority:** High to Medium **Why group these together:** These UI patterns all expose important information through `data-ai-tooltip`, truncation, or visual icons. They should be reviewed as one accessibility pass. Includes: - Replace links in `#markup`. - Add new-tab accessible warnings and `rel`. - Fix CSS-only external-link indicator assumptions. ## Solution ### 3.1 Make tooltip-dependent content ava… ### [Clean up CCC cacheability and access metadata](https://git.drupalcode.org/project/ai_context/-/work_items/3586300) State: opened | Updated: 2026-06-29 | Author: Kristen Pol (kepol) | Assigned: Joshua Fernandes (joshua1234511) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **1. Cacheability And Access Metadata** **Priority:** High **Why group these together:** These fixes all involve Drupal render/cacheability metadata and access-result cache contexts. They should be reviewed together to avoid fixing one stale-cache path while leaving related cacheability gaps. Includes: - `AiContextOverviewController` cache metadata. - Duplicate overview query cleanup. - `AiContextRenderer` settings cache dependency. ## Solution ### 1.1 A… ### [Allow subcontext scope to override parent scope](https://git.drupalcode.org/project/ai_context/-/work_items/3586218) State: opened | Updated: 2026-06-29 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Description: ## Problem/motivation Follow-up to: #3576092 ## Solution From the other issue: Discussion with Emma+Aidan at UX sync: - Toggle (true/false) is defaulted to "Same as parent" (true) right above Global and then hide all of them - Description: "Disable to customize scope." Here's a [plan from cursor](https://www.drupal.org/files/issues/2026-04-21/subcontext_scope_inheritance_51216439.plan_.md) that can be updated to reflect ^ ## Tasks - [x] Add code - [x] Review code - [ ] Manually test code ## AI usage - [ ] AI assisted issue - [ ] AI assisted code - [x] AI generated code ### [Add full view layout for context item canonical and revision pages based on new design](https://git.drupalcode.org/project/ai_context/-/work_items/3586220) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: Daniel Rodriguez (danrod) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 10 Description: ## Problem/motivation Follow-up to: #3586141 ### Summary Replace the default field-list entity view at `/admin/ai/context/items/{id}` with a designed **full** view mode: two-column layout (main content + sidebar), scope/subcontext details, and subcontext navigation. The same layout is used on revision view routes. ### Design and walkthrough There is a new design for the context view page based on UX review and feedback. ### Problem The canonical context item page rendered the default entity view display — a plain field list that was hard to scan and did not surface scope, subconte… ### [Improve conditional subcontext disabled-state behavior and admin UX](https://git.drupalcode.org/project/ai_context/-/work_items/3586292) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Description Follow-up to: #3586207+s ### Summary When **Enable conditional subcontext AI decisions** (`conditional_subcontext_enabled`) is off, conditional subcontext children should not participate in normal context selection. This issue implements that behavior and adds admin UX so editors understand why conditional items are inactive, can reach the setting to re-enable the feature, and get clear warnings when editing affected items. ### Problem / motivation Previously, disabling conditional subcontext AI caused **all conditional children to be included without an AI call**. That wa… ### [Add #[RunTestsInSeparateProcesses] attribute to all kernel test classes](https://git.drupalcode.org/project/ai_context/-/work_items/3586280) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Description _**Verify the issue problem and solution before proceeding.**_ Drupal 11.3 deprecates kernel test classes that do not declare the PHPUnit `#[RunTestsInSeparateProcesses]` attribute. From Drupal 12.0, missing the attribute will throw an exception ([change record](https://www.drupal.org/node/3548485)). The ai_context module currently has **4 of 39** kernel test classes with the attribute: - `AiContextChildrenServiceTest` - `AiContextItemFormGlobalCountTest` - `AiContextTextFieldMigrationTest` - `AiContextUpdate10010Test` The remaining **35** kernel test classes need: ```php … ### [Clean up CCC inconsistencies and DX issues before rc1 (part 3)](https://git.drupalcode.org/project/ai_context/-/work_items/3586271) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: Follow-up to: #3586192 _**Verify the issue problem and solution before proceeding.**_ ## Title **AI Context: Consistency / DX cleanup (final, constructor promotion, snake_case locals, service interfaces)** --- ## Description Follow-up to #3586192 / naming & DX review. Addresses the remaining **consistency / DX** items that were explicitly out of scope for the naming MR. **No functional or API behavior changes** — style, clarity, and maintainability only. ### Background The naming/DX MR covered route/permission renames, dead code removal, `new self` in final classes, and snake_case fix… ### [Update relevant CCC skipped tests](https://git.drupalcode.org/project/ai_context/-/work_items/3586263) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: _**Verify the issue problem and solution before proceeding.**_ Audit of `web/modules/contrib/ai_context/tests` — static review of all `markTestSkipped()` usage and conditional skip paths. **Note:** `dynamic_entity_reference` is present in this project (`web/modules/contrib/dynamic_entity_reference`), so Category B skips should **not** fire here. PHPUnit also lacks `SIMPLETEST_DB` in `web/core/phpunit.xml`, which causes kernel/functional tests to error rather than skip — that is a test-runner config issue, not an intentional skip in module code. --- ## Summary | Category | Skip sites in c… ### [Clean up CCC test and documentation consistency before rc1](https://git.drupalcode.org/project/ai_context/-/work_items/3586299) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **7. Test Quality And Test Documentation** **Priority:** Medium **Why group these together:** These fixes all improve test reliability and signal. They can be split further if the test changes become large. Includes: - Context prefix default alignment. - `getManageUrl()` docs update. - Optional `hook_help()` decision/follow-up. - `tests/README.md` environment guidance. ## Solution ### 7.1 Make integration-test process metadata consistent **Files:** - `… ### [Clean up CCC accessible interactive links and external links](https://git.drupalcode.org/project/ai_context/-/work_items/3586301) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **2. Accessible Interactive Links And External Links** **Priority:** High **Why group these together:** These are all link-rendering issues. Fixing them together allows one consistent pattern for render-array links, new-tab warnings, and link styling. Includes: - List-builder revisions operation cacheable access result. - Revision UI boolean access checks. ## Solution ### 2.1 Replace interactive links embedded in `#markup` **Files:** - `src/Form/AiCont… ### [Clean up CCC JavaScript filter feedback](https://git.drupalcode.org/project/ai_context/-/work_items/3586303) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **4. JavaScript Filter Feedback** **Priority:** High **Why group these together:** Both filters implement similar client-side table filtering and should expose the same accessible feedback pattern. Includes: - Pill-list overflow accessible text. - Truncated description accessible text. - Icon-only indicators. - Manual assistive technology check for `ai/ai_global` tooltip behavior. ## Solution ### 4.1 Announce filtered result counts **Files:** - `js/ai_… ### [Clean up CCC form and table accessibility cleanup](https://git.drupalcode.org/project/ai_context/-/work_items/3586304) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **5. Form And Table Accessibility Cleanup** **Priority:** Medium **Why group these together:** These are smaller Form API and admin UI accessibility improvements. They can be handled in one cleanup issue. Includes: - `Drupal.announce()` result counts for both JS filters. - Tests for filter announcements if feasible. ## Solution ### 5.1 Replace disabled read-only selects with text **File:** - `src/Form/AiContextAgentForm.php` **Problem:** Read-only s… ### [Clean up CCC documentation and API consistency](https://git.drupalcode.org/project/ai_context/-/work_items/3586305) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **6. Documentation And API Consistency** **Priority:** High to Medium **Why group these together:** These are low-risk docs/code consistency fixes that prevent contributors from copying stale API names or relying on a fallback that differs from install defaults. Includes: - Disabled select replacements. - Help list render arrays. - Table captions. - Emoji warning cleanup. ## Solution ### 6.1 Align the default context prefix **Files:** - `config/install… ### [Clean up CCC configuration policy checks](https://git.drupalcode.org/project/ai_context/-/work_items/3586306) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Parent: #3586298+s _**Verify the issue problem and solution before proceeding.**_ **8. Configuration Policy Checks** **Priority:** Low to Medium **Why group these together:** These are not confirmed bugs. They should be handled as maintainer decisions or reproducibility checks before code changes. Includes: - Reproduce or dismiss simple config dependency concerns. - Confirm Scheduler dependency policy. ## Solution ### 8.1 Verify simple install config dependencies **Files:** - `config/install/ai_context.settings.yml` - `config/instal… ### [Sprint 13 CCC roadmap updates, sprint planning, and issue triage](https://git.drupalcode.org/project/ai_context/-/work_items/3586293) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/Motivation Prioritize backlog items for the sprint to align with roadmap, releases, and project needs. --- ## Proposed resolution Groom sprint issues --- ## Target date or deadline 27 to 10 July 2026 --- ## Remaining tasks - Go through backlog and prioritize - Create new issues as needed - Identify what goes into sprint - Tune mid-sprint as needed - Update roadmap meta as needed --- ## Related issues - [#3567798: [META] CCC MVP 1.0 roadmap](https://www.drupal.org/project/ai_context/issues/3567798) - [#3586182: [META] CCC beta3 release planning](https://www.drupal.org/… ### [Provide real sample context items for end user use](https://git.drupalcode.org/project/ai_context/-/work_items/3586279) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Spin off from: #3586244+s Pulling the info from the other ticket. --- It would be really helpful to provide (optional) example context items for this module. There is a mention of this in #3586175, but I wanted to open a separate issue for it because it might make sense to provide a recipe for example content items (similar to this for AI Guardrails: https://www.drupal.org/project/ai_recipe_guardrails_pii) As I'm learning to use the module, I find that I have to spin up an instance of https://www.drupalforge.org/template/driesnote-chicago in order to see some type… ### [[Feature] Add ExternalContextProviderInterface and ContextQueryInterface to support RAG/vector store integrations](https://git.drupalcode.org/project/ai_context/-/work_items/3586289) State: opened | Updated: 2026-06-28 | Author: josecarlosmedero | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Summary Follow-up to: #3586257+s ## Problem We built an external RAG integration on top of CCC (AI Knowledge Connector — a vector store + semantic retrieval module for Drupal 11) and hit three specific API gaps that currently require workarounds. We're raising these before rc1 so the team can evaluate whether a formal API would be worth adding to make the integration pattern stable and documented for the ecosystem. The current workaround path works (we're using `BuildSystemPromptEvent`) but it's fragile across agent types, bypasses CCC's token limit logic, and gives no observability … ### [[Meta] Fix CCC issues based on AI Best Practices results](https://git.drupalcode.org/project/ai_context/-/work_items/3586298) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation Follow-up to: #3586258+s Ran AI Best Practices against ai_context and found some things that need fixing: GPT 5.5 doc pulling out all the actionable things: [ai-context-actionable-fix-plan.md](https://git.drupalcode.org/-/project/191993/uploads/c3b583782d3be83fde707399a020b762/ai-context-actionable-fix-plan.md) ## Solution GPT 5.5 assessment: For RC1, I’d only block on items that affect **public API, config shape/defaults, installability, or release expectations**. Most accessibility, render-cache, and UI/test cleanup can happen after RC1 as bug/UX fixes. ### Sho… ### [Evaluate Annotations module and how it might work with CCC](https://git.drupalcode.org/project/ai_context/-/work_items/3586268) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Problem/motivation The new [Annotations module](https://www.drupal.org/project/annotations) has overlap with CCC. ### Video From NikLP: No demo videos yet but how y'all feel about a gen AI video outlining my new module suite? :smiling_face_with_tear: https://www.linkedin.com/posts/niklepage_drupal-activity-7469809314463891456-j8u8/ ### Nik's integration approach [ai_context-local.patch](https://git.drupalcode.org/-/project/191993/uploads/5591cdf6801c901c1d6bc021f4975b60/ai_context-local.patch) [adr-ai-context-provider.md](https://git.drupalcode.org/-/project/191993/uploads/75577ae14… ### [[Discuss] Add boundaries / exclusions to scope plugins](https://git.drupalcode.org/project/ai_context/-/work_items/3586197) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Innovation, AI Sprint 10, AI Sprint 11 Description: ## Problem/motivation Follow-up to: #3586195 Boundaries / exclusions were discussed quite a bit in the past, but hasn't been implemented yet. Example context item: - Tone and voice - Scope - Use case = Writing Words - Entity bundle = exclude for Support Notes (content type) Translation: The context will be applicable to any agent subscription with use case = writing words unless it's a node that's a Support Notes content type ## Solution Add an exclusion option for each scope item and bake that into the logic Could be a dropdown per scope item: - None (neutral/default) - Include… ### [Update project page to make it more clear that CCC is for agents](https://git.drupalcode.org/project/ai_context/-/work_items/3586278) State: opened | Updated: 2026-06-28 | Author: Michael Anello (ultimike) | Assigned: Kristen Pol (kepol) | Labels: AI Context Management, AI Innovation, AI Sprint 13, AI UX Description: Via https://git.drupalcode.org/project/ai_context/-/work_items/3586270#note_1263889, I think the main CCC project page description should be super-clear that CCC is currently designed to only work with AI agents and not other AI-related tasks. At the very least, I suggest the first sentence of the project description on https://www.drupal.org/project/ai_context be changed from: > Context Control Center (CCC) helps Drupal AI use your content, rules, and standards to deliver more accurate, relevant results. to > Context Control Center (CCC) helps Drupal AI **agents** use your content, rules,… ### [Promote Document Loader: Context Importer from experimental to stable](https://git.drupalcode.org/project/ai_context/-/work_items/3586282) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 13 Description: ## Description Follow-up to: #3586275+s canvas#3575644+s ### Summary The `ai_context_document_loader` submodule (Document Loader: Context Importer) is currently marked `lifecycle: experimental`. The initial integration work is largely complete: upstream dependencies are on stable constraints (`document_loader:^2.0.3`, `ai_file_to_text:^1.0`), and temporary Document Loader Composer patches have been removed. Before removing the experimental lifecycle flag, we should close out documentation, testing, and install-behavior follow-ups. The Canvas StringLongItemOverride patch ([#3575644](https:… ### [Rename entity bundle and target entity scope plugins for better DX](https://git.drupalcode.org/project/ai_context/-/work_items/3586276) State: opened | Updated: 2026-06-28 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: AI Context Management, AI Initiative Sprint, AI Innovation, AI Sprint 12 Description: ## Problem/solution Follow up to: #3586148+s The naming of the entity bundle and target entity scope plugins is confusing. ## Solution **AiContextScopeEntityBundle** Rename Entity Bundle => Entity Type at a code-level because there are bundleless content entities. Label: Entity Types Description: Apply this context to every entity of a chosen type, for example all Article nodes, every Document media item, or every Canvas page. Choose this when the context is true for the whole type, not a single item. **AiContextScopeTargetEntity** Rename Target Entity => Entity Item because target… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [23] summariseModule:ai_search:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Search (machine name: ai_search) Reporting period: last 24h (2026-06-28T05:00:06+00:00 to 2026-06-29T05:00:06+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

                                            AI Search

                                            then use

                                            ,

                                            ,

                                              /
                                            • , and as needed. Output only the HTML fragment with no surrounding , , or
                                              tags. After the project summary prose, add a single subsection titled "

                                              How can I help on this project?

                                              " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Fix 2.x branch integration with AI 2.x now that Symfony Platform is integrated](https://git.drupalcode.org/project/ai_search/-/work_items/3584015) State: opened | Updated: 2026-06-28 | Author: Scott Euser (scotteuser) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::bug, priority::major Description: # Problem/motivation Tests now fail because of #3574187 ## Steps to reproduce E.g. run `ddev exec ./vendor/bin/phpunit -c core/phpunit.xml.dist modules/contrib/ai_search/tests/src/Functional/AiSearchSetupMySqlTest.php --filter=testContentIndexingCompleted` # Proposed resolution - Wait until https://git.drupalcode.org/project/ai/-/work_items/3586495 is merged - Update AI Search compatibility with AI Core 2.x branch - Document any breaking changes needed in VDB Providers ### [Batch embeddings for improved indexing performance](https://git.drupalcode.org/project/ai_search/-/work_items/3584024) State: opened | Updated: 2026-06-28 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: Sergiu Nagailic (Nikro) | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: This is a placeholder for AI Core issue https://git.drupalcode.org/project/ai/-/work_items/3568648 . The development of ai_search submodule is deprecated, so this issue is for porting functionality from parent issue. ### [Named argument spread into `querySearch()` includes keys it does not accept, causing PHP fatal](https://git.drupalcode.org/project/ai_search/-/work_items/3584028) State: opened | Updated: 2026-06-28 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: unassigned | Labels: Description: ## Problem `doSearch()` assigns `vector_input` and `query` into `$params` before the `if/else` branch: ```php $params['vector_input'] = $vector_input; $params['query'] = $query; if (!empty($vector_input)) { $response = $vdb_client->vectorSearch(...$params); } else { $response = $vdb_client->querySearch(...$params); // $params still has vector_input and query } ``` `querySearch()` does not accept `vector_input` or `query` as parameters. Spreading `$params` into it causes a PHP fatal: ``` PHP Fatal error: Unknown named argument $vector_input ``` ## Steps to reproduce 1. Install `ai_se… ### [PluginException from getSearchVectorInput() is not caught, returning empty results with no error](https://git.drupalcode.org/project/ai_search/-/work_items/3584026) State: opened | Updated: 2026-06-28 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: unassigned | Labels: Description: ## Problem When the configured embeddings engine plugin cannot be instantiated, `getSearchVectorInput()` throws a `PluginException`. Nothing catches it in the search path. The search returns empty results with no error logged and no message shown to the user or admin. There is no way to tell from the outside whether the search ran and found nothing, or crashed before running at all. Common triggers: - The AI provider module is disabled or uninstalled - `embeddings_engine` in config references a provider ID that no longer exists - The provider is not fully configured ## Steps to reproduce … ### [Logger not injected in `create()`, causing fatal error on error paths](https://git.drupalcode.org/project/ai_search/-/work_items/3584025) State: opened | Updated: 2026-06-28 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: unassigned | Labels: Description: ## Problem `SearchApiAiSearchBackend::create()` does not inject the logger service. The class calls `$this->logger->error()` inside `doSearch()` when something goes wrong. Because the property is never set, any error path throws a PHP fatal instead of writing a log entry. In practice this means a misconfigured provider produces a fatal error rather than a clear watchdog message. The real problem is hidden. ## Steps to reproduce 1. Install `ai_search`. 2. Configure a Search API index with the AI Search backend. 3. Set an embeddings engine that is misconfigured (wrong provider ID, missing AP… ### [vectorSearch() is never called for embedding-free VDB providers](https://git.drupalcode.org/project/ai_search/-/work_items/3584027) State: opened | Updated: 2026-06-28 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: unassigned | Labels: Description: ## Problem `doSearch()` calls `vectorSearch()` only when `$vector_input` is non-empty: ```php if (!empty($vector_input)) { $response = $vdb_client->vectorSearch(...$params); } else { $response = $vdb_client->querySearch(...$params); } ``` VDB providers that do not use embeddings (LLM reasoning, BM25, keyword trees, etc.) always have an empty `$vector_input`. So `querySearch()` is always called instead of `vectorSearch()`. `querySearch()` is for browse queries with no search terms. It does not receive the query text. A search for "climate change" calls `querySearch()` with no keywords a… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [24] summariseModule:field_widget_actions:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Field Widget Actions (machine name: field_widget_actions) Reporting period: last 24h (2026-06-28T05:00:06+00:00 to 2026-06-29T05:00:06+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

                                              Field Widget Actions

                                              then use

                                              ,

                                              ,

                                                /
                                              • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                tags. After the project summary prose, add a single subsection titled "

                                                How can I help on this project?

                                                " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Generate UUIDs for list-style widget-action settings applied via config actions](https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578823) State: opened | Updated: 2026-06-28 | Author: Daniel Bosen (daniel.bosen) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Product Development, category::feature, state::needsWork Description: The setupFieldWidgetAction config action requires every field widget action to be declared in the recipe with a hard-coded UUID as its array key. Because those UUIDs were static, you can not add multiple suggestion buttons to a single edit form: the actions collide on their keys, so every button ends up writing its AI content suggestion into the same field instead of each button targeting its own field. Let the recipe declare actions as a plain list and have the plugin generate a unique UUID per item at apply time — exactly as the UI does when actions are added interactively — so each button … --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [25] summariseModule:orchestration:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Orchestration (machine name: orchestration) Reporting period: last 24h (2026-06-28T05:00:06+00:00 to 2026-06-29T05:00:06+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

                                                Orchestration

                                                then use

                                                ,

                                                ,

                                                  /
                                                • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                  tags. After the project summary prose, add a single subsection titled "

                                                  How can I help on this project?

                                                  " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [Using JSON Schema to define "input", "output" and "config"](https://git.drupalcode.org/project/orchestration/-/work_items/3554622) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::plan, code Description: >>> [!note] Migrated issue Reported by: [d34dman](https://www.drupal.org/user/751698) >>> Problem/Motivation JSON Schema gives you a portable contract for each “thing” (task/node) and lets you auto-validate, auto-document, and even auto-generate forms. For an orchestration layer, a clean split into input, output, and config per node is intuitive and scales. Why JSON-Schema fits? - Contracts at the edges: Each node publishes exactly what it consumes (input) and emits (output), so composition is safe. - Runtime safety: Validate at design-time (when building a workflow) and at run… ### [Integrate with n8n](https://git.drupalcode.org/project/orchestration/-/work_items/3551197) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Stephen Mulvihill (smulvihill) | Labels: AI Initiative Sprint, AI Innovation, category::feature, code Description: >>> [!note] Migrated issue Reported by: [jurgenhaas](https://www.drupal.org/user/168924) >>> Problem/Motivation Extend the Orchestration module to support n8n as an automation provider, similar to existing Activepieces integration. This enhancement will enable bidirectional communication between Drupal and n8n, allowing workflows to both trigger n8n automations from Drupal entity events (create, update, delete, publish) and perform actions in Drupal (create/update entities, media, users, taxonomy, etc.) via n8n nodes. The implementation will include: A new N8nDriver in the Orchestration m… ### [[orchestration_eca] Add "Execute Orchestration service" ECA action to allow ECA to invoke registered services](https://git.drupalcode.org/project/orchestration/-/work_items/3575105) State: opened | Updated: 2026-06-28 | Author: Shibin Das (D34dMan) | Assigned: Shibin Das (D34dMan) | Labels: category::feature, state::accepted, v1.0.x-dev Description: ## Problem / Motivation The `orchestration_eca` submodule currently bridges ECA and the Orchestration module in one direction only: it exposes ECA models _as_ Orchestration services, so external callers can invoke ECA workflows via the Orchestration HTTP API. The reverse direction is missing. There is no ECA Action plugin that allows an ECA model to `_invoke_` a registered Orchestration service. This means ECA cannot use its rich event and condition system to trigger any of the services registered by other `ServicesProviderInterface` implementations. Current: External → Orchestration → E… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [26] summariseModule:agui:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AG-UI (machine name: agui) Reporting period: last 24h (2026-06-28T05:00:06+00:00 to 2026-06-29T05:00:06+00:00) You are writing for a non-technical executive audience (CEO/leadership level). Focus on: business impact, strategic progress, risks, and what is being delivered. Avoid technical jargon. Do not mention branch names, function names, or API details. Explain what each piece of work means for users or the project's goals. Keep risk language proportionate to the stage of the software. For alpha or beta modules, unassigned bugs or open issues are normal and expected — do not describe them as 'reputational risks' or use alarmist framing. Reserve strong risk language for issues that are genuinely critical or blocking a stable release. Focus your report on activity that occurred within the reporting period (comments, MRs merged, commits pushed, status changes). Use the issue description to understand what each issue is about and provide context, but do not report on the description itself as news — it is background information only. Do not list every issue/MR individually — synthesise into prose. Keep it under 200 words. Do not use emoticons or mdashes. Do not wrap usernames or contributor names in tags — mention them as plain text. When mentioning a specific issue or MR, always hyperlink it using the URL provided in the data (e.g. Issue Title or the Markdown equivalent). Do not reference issues or MRs by number alone — always use their title as the link text. Do NOT attribute any action to a named individual. Do not say who merged, fixed, reviewed, authored, or opened anything. The "Author" and "Assigned" labels in the data are context only — never surface them as "X did Y". Describe the work itself in the passive voice (e.g. "the provider refactor was merged"), not the person who did it. The author of a merge request is often not the person who completed or merged the work, so naming them is misleading. Do not name any individual people in this section. No one was active enough this period to list. Format your response as an HTML fragment. Start with

                                                  AG-UI

                                                  then use

                                                  ,

                                                  ,

                                                    /
                                                  • , and as needed. Output only the HTML fragment with no surrounding , , or
                                                    tags. After the project summary prose, add a single subsection titled "

                                                    How can I help on this project?

                                                    " aimed at a non-technical executive. Suggest 2-3 concrete, high-level ways a leader could support or unblock progress (e.g. resourcing, stakeholder alignment, decision-making, funding, advocacy). Keep it under 60 words. Do not add any other 'How can I help' text anywhere else in the section. CRITICAL: Before writing each suggestion, verify it against the issue data. Do not suggest actions that are already in progress or covered by an existing MR — for example, do not suggest that work needs to be started if an issue already has a Related MR. --- ISSUES UPDATED IN LAST 24h --- Each issue includes its description (for context) and the most recent comments from the last 24h (or last 5 if fewer than 5 occurred in that window). ### [[META] Improve Drupal Assistant Implementation](https://git.drupalcode.org/project/agui/-/work_items/3572388) State: opened | Updated: 2026-06-28 | Author: drupalbot | Assigned: Bryan Sharpe (b_sharpe) | Labels: AI Initiative Sprint, AI Product Development, category::feature, code Description: >>> [!note] Migrated issue Reported by: [b_sharpe](https://www.drupal.org/user/2512258) >>> Problem/Motivation The current Drupal Assistant implementation in the demo page was a POC meant to show it can work with AG-UI, this should instead align to become a replacement for the ai_chatbot (Deepchat). This might spawn AI module tickets so we can hook into the events used. We should align also with the Polling service so this is where we could emit ag-ui events. I believe the following could/should work: A single, non-streamed request with all events - This just needs a refactor, technicall… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [27] generateTldr:executive ======================================================================== You are an editor distilling a Drupal AI project newsletter into its most important highlights. You are writing for a non-technical executive audience. Focus on business impact, strategic progress, and delivery milestones. Avoid all technical jargon. Read all the module summaries below. Separate the highlights into two categories: - SHIPPED: things that were merged, fixed, released, or completed during this period. - ONGOING: things that are actively in progress, under review, or blocked. Be specific — name the module, what happened, and why it matters. Do not use emoticons or mdashes. Do not include any text outside the two sections. When you mention a specific issue or merge request, add an inline citation using [N] where N is the reference number from the list below. You may cite multiple references per item, e.g. [1][3]. Place citations immediately after the relevant phrase, before any punctuation. Format as two HTML sections. Use exactly this structure (all
                                                  • elements must be inside the
                                                      , never outside it):

                                                      Shipped

                                                      1. Title here — One sentence explanation [1].
                                                      2. Another title — One sentence explanation.

                                                      Ongoing

                                                      1. Title here — One sentence explanation [2].
                                                      Up to 5 items per section. Do not output any text, tags, or characters outside these two sections. Output only the HTML fragment, no surrounding tags. --- REFERENCE LIST --- [1] Add rich-text image description support to AI Automators (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586478 [2] Add Functional Tests for AI CKEditor (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3477173 [3] Batch embeddings for improved indexing performance (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3568648 [4] RestrictToTopic guardrail: add semantic topic matching mode (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3584977 [5] Add SensitiveContentStream guardrail and kernel test for StreamableGuardrailInterface mid-stream buffering and evaluation (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3584951 [6] Document FunctionalJavascript test conventions and add CI check for ungrouped/unrecorded tests (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3582633 [7] Add event hook to ai_ckeditor to allow context injection (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3581952 [8] Guardrail plugins only evaluate the last message (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3579088 [9] Indexing breaks with custom SearchAPI DataSource (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3575992 [10] How does the provider notify of better models (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3575689 [11] Clean up ai_observability settings form (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3574499 [12] [AI Prompts] Update the Type Casing of Entities/Permissions (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3574417 [13] Provide proper support for "unconfigured" AI provider state (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3572645 [14] The Toolbar Chatbot runs the fold out animation on page reload (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3568246 [15] Require merge commits into main branches to include an issue reference in the format #[number], without restricting commit messages on feature branches (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3566613 [16] Research: Open standard for saving one request (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3566569 [17] Create validator for structured content (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3561971 [18] Fix Translate Text Explorer form functionality (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3553353 [19] The chatbot config, default avatar does not accept tokens (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3546675 [20] Move the input of structured output to an object. (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3545462 [21] Provide AI usage reports in Drupal admin panel (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3535260 [22] Chatbot closes itself when adding a modal (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3499451 [23] Create plugins for interacting with multimedia in AI (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3463843 [24] ai_ckeditor: streamGenerateContent causes 400 Bad Request with Gemini 2.x models (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586425 [25] Save AI Content Suggestion plugin settings inside ai_content_suggestions.settings config object (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586437 [26] AI Assistant runner fatals when an ai_agent config entity shares its ID with a code-defined AiAgent plugin (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586449 [27] Add interactive refinement capability to Field Widget Actions (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586468 [28] Document the AI module ecosystem: a categorized list of related modules with links and summaries (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586482 [29] Add a deterministic script to auto-generate the providers/operation-types matrix from GitLab (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586488 [30] Generalize behaviour of FWA with Automators (AI Core v2) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586515 [31] Config action to verify if any vector database is there and it is setup (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586517 [32] Add a Moderation Guardrail plugin (configurable moderation provider/model as a guardrail) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586531 [33] Add Summarization operation type support to the echoai test provider (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586537 [34] [Research] Mechanism to force deprecated bundled submodules onto their contrib version (start with ai_validations) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586538 [35] Add an AI reranking processor for Search API (owned by the AI module) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586543 [36] Introduce a modern AI Chatbot frontend library (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586571 [37] [2.x] Add a setup-automators agent skill to configure automators on fields (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586564 [38] [1.x] Add a setup-automators agent skill to configure automators on fields (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586563 [39] Add a configure-ai-settings agent skill for general AI settings (default models, providers, timeout, trusted domains) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586562 [40] Add a setup-guardrails agent skill to configure guardrails, guardrail sets, and global guardrails (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586561 [41] Enforce execution principal in AiAssistantApiRunner (no fallback to session user when executor is provided) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3574723 [42] Drupal AI Contribution meeting 2026-06-29 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586575 [43] Agent Skill 'create-ai-api-explorer' failed validation (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586574 [44] Issue #3477173: Add functional tests for AI CKEditor (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1302 [45] Issue #3568648: Batch embeddings as a first-class operation type (follow-up to !1704) (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1726 [46] Batch embeddings for improved indexing performance (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1704 [47] Update the Ai API Explorer Skill name, matching the directory as per Agent Skills specification (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1732 [48] Create AI Validations Recipe (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3585699 [49] Recipe: AI Automators comment-spam scoring and auto-unpublish (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3585304 [50] Create documentation on how to create issues that are testable on DrupalForge (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3583362 [51] [Meta] Create AI Review Functionality / Create Technical Concept (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575158 [52] [Meta] Create AI Review Functionality / Create UX (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575157 [53] [Meta] Create AI CMS Demo System / Create Hoster POC — amazee.io (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575149 [54] [Meta] Create AI CMS Demo System / Create Demo POC (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575147 [55] [Meta] Create AI CMS Demo System / Create Technical Concept (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575145 [56] [Meta] Create AI CMS Demo System / Organize and Set Up Repository Access (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575143 [57] Start setting up AI Starterkit (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3569199 [58] Create QA image for DrupalPod (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3558437 [59] [Meta] AI Content Review Workflow (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3545606 [60] GitLab workflow automation for AI Initiative repos (exploration + rollout) (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586474 [61] Module Finder: recruit beta testers and drive incremental improvements (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586577 [62] [Meta] Skills for hosting providers: control deployment and environment setup (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586575 [63] Research: DevPanel API — what deployment & environment automation is possible (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586576 [64] Run more than one test group in Bulk - Test Collections? (ai_agents_test, Issue) — https://git.drupalcode.org/project/ai_agents_test/-/work_items/3541324 [65] Research: merging ai_agents_test with ai_eval (and AiLlm test harness) (ai_agents_test, Issue) — https://git.drupalcode.org/project/ai_agents_test/-/work_items/3585124 [66] Image Embeddings (gemini_provider, Issue) — https://git.drupalcode.org/project/gemini_provider/-/work_items/3588392 [67] Add support for batch embeddings (gemini_provider, Issue) — https://git.drupalcode.org/project/gemini_provider/-/work_items/3589183 [68] Explore export/sync plugin system for AI Agents to external agent platforms (Claude Code, VAPI, etc.) (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3577241 [69] Add views agent (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3542457 [70] Create an ChatProcessor (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3585984 [71] AI Agent entity form should reject machine names that collide with existing code-plugin IDs (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586026 [72] Use the `ai_json_schema` editor for the AI Agent structured-output schema field (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586042 [73] Add possibility to catch all errors on a tool (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3547994 [74] Let an agent use a role when running a tool (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3518167 [75] Allow agents to have permissions, user or a role (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586019 [76] MapDefinitionNormalizer and ContextDefinitionNormalizer break REST serialization (same as #3568588) (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582939 [77] Allow controlling Tool return format (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582933 [78] Allow tool execute to be previewed (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3558037 [79] Introduce support for Discovery, Planning and Execute calls for MCP and Agents (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3546292 [80] Proposal: make Tool's declarations introspectable over the CLI, and enrich input schema (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582943 [81] File Input Handling (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3572774 [82] Dependency Dashboard (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591657 [83] 3591734: WSOD AssertionError: assert(!$data instanceof ComponentInputsMapping) in assert() when requesting tmgmt translation job (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1296 [84] chore(deps): update dependency @eslint/compat to v2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1306 [85] chore(deps): update dependency @chromatic-com/storybook to v5 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1305 [86] fix(deps): update npm minor and patch (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1238 [87] chore(deps): update mysql docker tag to v8.4 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1272 [88] feat: #3567225 Allow per-node override of Content Template via checkbox in node selector (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/948 [89] Clean up CCC tooltip, truncation, and icon-only content (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586302 [90] Clean up CCC cacheability and access metadata (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586300 [91] Allow subcontext scope to override parent scope (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586218 [92] Add full view layout for context item canonical and revision pages based on new design (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586220 [93] Improve conditional subcontext disabled-state behavior and admin UX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586292 [94] Add #[RunTestsInSeparateProcesses] attribute to all kernel test classes (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586280 [95] Clean up CCC inconsistencies and DX issues before rc1 (part 3) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586271 [96] Update relevant CCC skipped tests (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586263 [97] Clean up CCC test and documentation consistency before rc1 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586299 [98] Clean up CCC accessible interactive links and external links (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586301 [99] Clean up CCC JavaScript filter feedback (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586303 [100] Clean up CCC form and table accessibility cleanup (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586304 [101] Clean up CCC documentation and API consistency (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586305 [102] Clean up CCC configuration policy checks (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586306 [103] Sprint 13 CCC roadmap updates, sprint planning, and issue triage (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586293 [104] Provide real sample context items for end user use (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586279 [105] [Feature] Add ExternalContextProviderInterface and ContextQueryInterface to support RAG/vector store integrations (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586289 [106] [Meta] Fix CCC issues based on AI Best Practices results (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586298 [107] Evaluate Annotations module and how it might work with CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586268 [108] [Discuss] Add boundaries / exclusions to scope plugins (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586197 [109] Update project page to make it more clear that CCC is for agents (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586278 [110] Promote Document Loader: Context Importer from experimental to stable (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586282 [111] Rename entity bundle and target entity scope plugins for better DX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586276 [112] Fix 2.x branch integration with AI 2.x now that Symfony Platform is integrated (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584015 [113] Batch embeddings for improved indexing performance (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584024 [114] Named argument spread into `querySearch()` includes keys it does not accept, causing PHP fatal (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584028 [115] PluginException from getSearchVectorInput() is not caught, returning empty results with no error (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584026 [116] Logger not injected in `create()`, causing fatal error on error paths (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584025 [117] vectorSearch() is never called for embedding-free VDB providers (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584027 [118] Generate UUIDs for list-style widget-action settings applied via config actions (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578823 [119] Using JSON Schema to define "input", "output" and "config" (orchestration, Issue) — https://git.drupalcode.org/project/orchestration/-/work_items/3554622 [120] Integrate with n8n (orchestration, Issue) — https://git.drupalcode.org/project/orchestration/-/work_items/3551197 [121] [orchestration_eca] Add "Execute Orchestration service" ECA action to allow ECA to invoke registered services (orchestration, Issue) — https://git.drupalcode.org/project/orchestration/-/work_items/3575105 [122] [META] Improve Drupal Assistant Implementation (agui, Issue) — https://git.drupalcode.org/project/agui/-/work_items/3572388 --- MODULE SUMMARIES ---

                                                      AI (Artificial Intelligence)

                                                      The AI module saw focused development activity over the past 24 hours, primarily around documentation, architectural improvements, and long-term product planning.

                                                      A functional test suite for AI CKEditor was closed, completing validation work that ensures editor-based AI features continue to work correctly as the module evolves. Work continued on batch embeddings support, which will reduce indexing time for vector databases by processing multiple content chunks simultaneously rather than one at a time—a meaningful performance improvement for sites with large content libraries.

                                                      Several strategic planning issues were opened to guide the module's next phase. These include creating a curated directory of related modules and providers to help adopters understand the ecosystem, defining how to transition bundled submodules (such as validations and search) to standalone projects, and designing a mechanism to notify administrators when better AI models become available from providers. Additional issues were opened to expand agent-driven configuration capabilities, allowing AI assistants to set up automators, guardrails, and core settings through conversational commands.

                                                      A validation issue was identified in one of the agent skills, where a naming mismatch could prevent the skill from being invoked correctly. A merge request has been opened to resolve this.

                                                      How can I help on this project?

                                                      • Prioritize completion of the ecosystem documentation and provider matrix script so adopters can quickly understand what exists and how to use it.
                                                      • Support resource allocation for the batch embeddings and agent skill work streams, which are foundational to both performance and usability goals.

                                                      Contributors: Ahmad Khalil (ahmad-khalil-imagex), Artem Dmitriiev (a.dmitriiev), Ronald te Brake (ronaldtebrake), velmir_taky (root_emarketing)

                                                      ---

                                                      Drupal AI Initiative

                                                      Activity during the reporting period was limited to routine issue tracking and planning. Several existing work items received status updates as part of ongoing sprint management, including issues related to content review functionality, demonstration systems, and AI-powered recipes for common use cases like comment moderation.

                                                      Two new areas of work were opened for exploration. The first involves automating GitLab workflow processes to reduce manual maintenance effort across AI Initiative repositories. The second explores deployment automation skills that would allow developers to set up and manage hosting environments through conversational instructions, with initial research focused on provider APIs.

                                                      A Module Finder beta testing initiative was also established to gather user feedback on the AI-powered semantic search tool designed to help developers discover existing contributed modules before building custom solutions.

                                                      No merge requests were completed during this period. Work continues across multiple streams including user experience design, technical architecture, and demonstration infrastructure.

                                                      How can I help on this project?

                                                      • Facilitate introductions to hosting provider technical contacts to accelerate API research and partnership discussions for deployment automation capabilities.
                                                      • Allocate budget or resources to support beta testing coordination and user research activities for Module Finder and other user-facing tools.
                                                      ---

                                                      AI Agents Test

                                                      No development activity occurred in the reporting period. Two planning issues were updated with minor metadata changes but saw no substantive progress.

                                                      Both items remain in early discovery: one explores how users might run multiple test groups together in a single operation, and the other examines whether this module should be consolidated with a related evaluation tool to avoid duplication of effort across the AI ecosystem.

                                                      The module continues in an exploratory phase with no commits or merge activity in the past 24 hours.

                                                      How can I help on this project?

                                                      • Clarify the strategic direction: decide whether consolidating testing tools is a priority, or whether parallel development should continue.
                                                      • Allocate development capacity to move planning issues into implementation if the module is expected to progress toward a usable release.
                                                      ---

                                                      Gemini Provider

                                                      The Gemini Provider module saw two feature requests updated this period, both focused on expanding the module's embedding capabilities to better leverage Google's Gemini platform strengths.

                                                      Work is being tracked to add Image Embeddings support, which would allow the system to index and search using images rather than just text. This capability is currently rare among AI providers and could differentiate the platform's content discovery features. A related merge request is already in development.

                                                      Additionally, Add support for batch embeddings is being explored to enable processing multiple items at once. This would improve efficiency when indexing large volumes of content. A merge request for this enhancement is also underway.

                                                      Both features remain in active development with no code merged this period. This is normal progress for a module working toward broader AI integration capabilities.

                                                      How can I help on this project?

                                                      • Clarify business priorities between image search capabilities and batch processing efficiency to help contributors focus resources on the highest-value feature first.
                                                      • Identify pilot use cases or content types where image embeddings would deliver immediate user value.
                                                      ---

                                                      AI Agents

                                                      Development activity this period focused on planning and refinement ahead of a stable release. Seven issues received updates, concentrating on three strategic themes: better integration with external AI platforms, improvements to the agent configuration experience, and a clearer permissions model for autonomous agents.

                                                      Work is underway to explore how agents defined in Drupal could be exported or synchronized to external platforms like Claude Code or VAPI, allowing the module to participate in broader AI ecosystems. Meanwhile, two issues moved to "ready to be committed" status: one that would prevent configuration errors when agent names collide with code-level plugin IDs, and another to add a chat processor for conversational agents.

                                                      Several issues address how agents handle permissions when running tools—particularly important for agents that operate autonomously via scheduled tasks or queues, where no logged-in user session exists. Proposals include assigning agents their own permissions, user identity, or role and letting agents assume a specific role when executing tools.

                                                      How can I help on this project?

                                                      • Prioritize a decision on the agent permissions model—multiple overlapping proposals need consolidation to unblock autonomous agent use cases.
                                                      • Consider allocating resource to review and commit the two issues marked ready, accelerating progress toward a stable release.
                                                      ---

                                                      Tool API

                                                      The Tool API project saw active discussion this period focused on improving how tools can be discovered, invoked, and integrated into AI workflows. Five issues were updated with new comments, though no code was merged.

                                                      Key themes include improving the developer and integration experience. Work continued on making tool declarations introspectable over the CLI, which would allow systems like command-line interfaces and AI agents to understand what a tool does and what inputs it needs without having to run it first. This supports a more predictable and maintainable integration pattern.

                                                      Discussion also continued on controlling tool return formats, which addresses how results are presented to different consumers, and allowing tool execution to be previewed, enabling teams to test and debug workflows without making permanent changes. Progress was also noted on strategies for discovery, planning, and execution patterns that help AI agents work more reliably when managing many tools.

                                                      One issue flagged a serialization conflict affecting REST endpoints when the Tool module is enabled, which impacts API integrations.

                                                      How can I help on this project?

                                                      • Help prioritize which integration improvements (introspection, return format control, preview mode) deliver the most value to early adopters and should be resourced first.
                                                      • Ensure the REST serialization issue is addressed quickly if API stability is important to your deployment timeline.
                                                      ---

                                                      Drupal Canvas

                                                      Activity this period focused on addressing a critical issue and maintaining project dependencies. A fix was developed for a crash that occurs when requesting translation jobs in sites using the translation management system. This was blocking users from translating pages that include certain types of content components.

                                                      Automated dependency updates were proposed for development tools and infrastructure, including updates to code quality tools and database components. These keep the project aligned with current standards and security patches.

                                                      Existing work on allowing individual pages to override their templates remains under review. This capability would give content editors more flexibility to customize specific pages without changing site-wide templates.

                                                      How can I help on this project?

                                                      • Prioritize review and testing resources for the translation fix, as it impacts multilingual deployments.
                                                      • Clarify the decision timeline for the page override feature to help guide further investment in that capability.

                                                      Contributors: **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Narendra Singh Rathore (NarendraR), Rajab Natshah (RajabNatshah)

                                                      ---

                                                      Context Control Center (CCC)

                                                      Work this period focused on preparing the module for its first release candidate. A comprehensive quality review was completed, identifying improvements across eight areas including accessibility, caching, documentation, and test coverage. These have been organized into focused cleanup issues that will strengthen the product before wider adoption.

                                                      Two strategic discussions advanced. A feature proposal was submitted for external context provider and query interfaces to support vector store and retrieval-augmented generation integrations. This would formalize a pattern already working in production but currently requiring workarounds. Separately, the team is evaluating how the new Annotations module might integrate with CCC's context management capabilities.

                                                      Planning work established the roadmap for Sprint 13, covering 27 June through 10 July. Progress continued on allowing subcontexts to override parent scope settings and on delivering a redesigned full-page layout for viewing context items. The experimental Document Loader importer submodule is being prepared for promotion to stable status once remaining documentation and testing tasks are complete.

                                                      Several usability improvements are in progress, including clearer project documentation explaining that CCC currently works with AI agents specifically, and renaming scope plugin labels to reduce confusion around entity types and bundles.

                                                      How can I help on this project?

                                                      • Prioritize whether the external provider API proposal should be included before the first release candidate, as this decision affects the supported integration patterns for ecosystem partners.
                                                      • Allocate resource time for the accessibility and caching cleanup work to ensure quality standards are met before the stable release.
                                                      ---

                                                      AI Search

                                                      The AI Search module saw significant diagnostic activity this period, with five new issues opened identifying critical defects that prevent the module from functioning correctly. No code changes were merged.

                                                      The issues uncovered represent foundational integration and error-handling problems. They include a missing logger dependency that causes crashes instead of reporting errors, a silent failure when search providers are misconfigured, and a parameter-passing error that triggers fatal errors during search operations. A fourth issue reveals that search queries are routed incorrectly for certain types of database providers, preventing search from working at all in those cases.

                                                      One issue tracks compatibility with the updated AI core module, which is waiting on upstream work. Another proposes batch processing for indexing to improve performance at scale.

                                                      These issues reflect expected discovery work in a pre-stable module. Resolving them will improve reliability and user experience.

                                                      How can I help on this project?

                                                      • Allocate dedicated development resources to address the open defects, which are blocking basic search functionality in several configurations.
                                                      • Clarify whether performance improvements like batch indexing align with the project roadmap and timeline for a stable release.
                                                      ---

                                                      Field Widget Actions

                                                      No development activity was recorded during this period. One feature request was filed to address a limitation in the module's configuration system that prevents recipes from adding multiple action buttons to a single form. Currently, when configuring actions programmatically, each button requires a manually specified unique identifier, causing buttons to overwrite each other instead of operating independently. The proposed enhancement would automatically generate these identifiers, matching the behavior users already experience when adding buttons through the interface. This would enable recipe authors to deploy more sophisticated forms with multiple action buttons without manual workarounds.

                                                      The issue remains in early design stages with no implementation work yet underway. This is expected for a module in active feature development.

                                                      How can I help on this project?

                                                      • Clarify whether multi-button recipe support is a priority for your upcoming deployments, to help the team prioritize this enhancement request.
                                                      • Ensure maintainers have capacity allocated to design and implement the configuration improvement if it aligns with strategic needs.
                                                      ---

                                                      Orchestration

                                                      The Orchestration module saw continued planning and design activity this period, with three issues receiving updates focused on expanding integration capabilities and defining architectural standards.

                                                      Work progressed on [orchestration_eca] Add "Execute Orchestration service" ECA action to allow ECA to invoke registered services, which will enable bi-directional communication between the Orchestration module and Drupal's Event-Condition-Action system. This means workflows will be able to both trigger external services and respond to them, expanding automation flexibility.

                                                      Planning continued on Integrate with n8n, which will add support for a popular workflow automation platform. Once complete, this will allow organisations to connect Drupal content and user events with thousands of external applications and services through n8n's marketplace.

                                                      Discussion also advanced on Using JSON Schema to define "input", "output" and "config", a technical proposal to standardise how workflow components validate and document their data contracts. This foundation will improve reliability and make it easier to build complex automations safely.

                                                      How can I help on this project?

                                                      • Clarify priority between the n8n integration and the ECA bidirectional feature to focus development effort.
                                                      • Connect the team with organisations willing to pilot the n8n integration once available.
                                                      • Approve or deprioritise the JSON Schema architectural proposal to reduce planning overhead.
                                                      ---

                                                      AG-UI

                                                      No development activity was recorded during this period. The project has one active planning item open: [META] Improve Drupal Assistant Implementation, which focuses on evolving an earlier proof-of-concept into a production-ready replacement for an existing chat component. This work is still in the design phase, with no code changes merged or commits made in the last 24 hours.

                                                      The module remains in active development with no urgent blockers identified during this period.

                                                      How can I help on this project?

                                                      • Confirm strategic alignment on whether the Drupal Assistant feature should proceed as a production replacement, and communicate that decision to the team.
                                                      • Ensure adequate development resourcing is available to move planned improvements from design to implementation.
                                                      ======================================================================== ## [28] factcheck:tldr:executive ======================================================================== Layer-1 corrections: 2 Judge flags: 2 ======================================================================== ## [29] generate2026Capabilities ======================================================================== You are an editor writing a strategic section for a non-technical executive audience. The Drupal AI initiative has 8 planned capabilities for 2026. Your task is to read the module activity summaries below and explain how today's progress moves each capability forward — or note where there was no relevant progress today. Be concise and direct. Focus on what matters to a business leader: is progress happening, what is the next milestone, and are there any risks? When you describe progress on a capability, add inline citations using [N] where N is the reference number from the list below. You may cite multiple references per item, e.g. [1][3]. Place citations at the end of the relevant sentence, before the closing punctuation. Output an HTML fragment using exactly this structure:

                                                      2026 Capabilities Progress

                                                      1. Capability name — One or two sentences on how today's activity relates to this goal, or "No direct progress today" if nothing relevant occurred.
                                                      Use only the 8 capabilities listed below, in the same order. Do not add, remove, or rename them. Do not output any text outside the

                                                      and
                                                        tags. --- 2026 CAPABILITIES --- 1. Page generation — Describe what you need and get a usable page, built from your actual design system components 2. Context management — A central place to define brand voice, style guides, audience profiles, and governance rules that AI can use 3. Background agents — AI that works without being prompted, responding to triggers and schedules while respecting editorial workflows 4. Design system integration — AI that builds with your components and can propose new ones when needed 5. Content creation and discovery — Smarter search, AI-powered optimization, and content drafting assistance 6. Advanced governance — Batch approvals, branch-based versioning, and comprehensive audit trails for AI changes 7. Intelligent website improvements — AI that learns from performance data, proposes concrete changes, and gets smarter over time through editorial review 8. Multi-channel campaigns — Create content for websites, social, email, and automation platforms from a single campaign goal --- REFERENCE LIST --- [1] Add rich-text image description support to AI Automators (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586478 [2] Add Functional Tests for AI CKEditor (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3477173 [3] Batch embeddings for improved indexing performance (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3568648 [4] RestrictToTopic guardrail: add semantic topic matching mode (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3584977 [5] Add SensitiveContentStream guardrail and kernel test for StreamableGuardrailInterface mid-stream buffering and evaluation (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3584951 [6] Document FunctionalJavascript test conventions and add CI check for ungrouped/unrecorded tests (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3582633 [7] Add event hook to ai_ckeditor to allow context injection (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3581952 [8] Guardrail plugins only evaluate the last message (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3579088 [9] Indexing breaks with custom SearchAPI DataSource (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3575992 [10] How does the provider notify of better models (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3575689 [11] Clean up ai_observability settings form (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3574499 [12] [AI Prompts] Update the Type Casing of Entities/Permissions (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3574417 [13] Provide proper support for "unconfigured" AI provider state (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3572645 [14] The Toolbar Chatbot runs the fold out animation on page reload (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3568246 [15] Require merge commits into main branches to include an issue reference in the format #[number], without restricting commit messages on feature branches (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3566613 [16] Research: Open standard for saving one request (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3566569 [17] Create validator for structured content (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3561971 [18] Fix Translate Text Explorer form functionality (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3553353 [19] The chatbot config, default avatar does not accept tokens (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3546675 [20] Move the input of structured output to an object. (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3545462 [21] Provide AI usage reports in Drupal admin panel (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3535260 [22] Chatbot closes itself when adding a modal (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3499451 [23] Create plugins for interacting with multimedia in AI (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3463843 [24] ai_ckeditor: streamGenerateContent causes 400 Bad Request with Gemini 2.x models (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586425 [25] Save AI Content Suggestion plugin settings inside ai_content_suggestions.settings config object (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586437 [26] AI Assistant runner fatals when an ai_agent config entity shares its ID with a code-defined AiAgent plugin (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586449 [27] Add interactive refinement capability to Field Widget Actions (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586468 [28] Document the AI module ecosystem: a categorized list of related modules with links and summaries (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586482 [29] Add a deterministic script to auto-generate the providers/operation-types matrix from GitLab (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586488 [30] Generalize behaviour of FWA with Automators (AI Core v2) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586515 [31] Config action to verify if any vector database is there and it is setup (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586517 [32] Add a Moderation Guardrail plugin (configurable moderation provider/model as a guardrail) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586531 [33] Add Summarization operation type support to the echoai test provider (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586537 [34] [Research] Mechanism to force deprecated bundled submodules onto their contrib version (start with ai_validations) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586538 [35] Add an AI reranking processor for Search API (owned by the AI module) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586543 [36] Introduce a modern AI Chatbot frontend library (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586571 [37] [2.x] Add a setup-automators agent skill to configure automators on fields (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586564 [38] [1.x] Add a setup-automators agent skill to configure automators on fields (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586563 [39] Add a configure-ai-settings agent skill for general AI settings (default models, providers, timeout, trusted domains) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586562 [40] Add a setup-guardrails agent skill to configure guardrails, guardrail sets, and global guardrails (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586561 [41] Enforce execution principal in AiAssistantApiRunner (no fallback to session user when executor is provided) (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3574723 [42] Drupal AI Contribution meeting 2026-06-29 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586575 [43] Agent Skill 'create-ai-api-explorer' failed validation (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586574 [44] Issue #3477173: Add functional tests for AI CKEditor (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1302 [45] Issue #3568648: Batch embeddings as a first-class operation type (follow-up to !1704) (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1726 [46] Batch embeddings for improved indexing performance (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1704 [47] Update the Ai API Explorer Skill name, matching the directory as per Agent Skills specification (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1732 [48] Create AI Validations Recipe (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3585699 [49] Recipe: AI Automators comment-spam scoring and auto-unpublish (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3585304 [50] Create documentation on how to create issues that are testable on DrupalForge (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3583362 [51] [Meta] Create AI Review Functionality / Create Technical Concept (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575158 [52] [Meta] Create AI Review Functionality / Create UX (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575157 [53] [Meta] Create AI CMS Demo System / Create Hoster POC — amazee.io (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575149 [54] [Meta] Create AI CMS Demo System / Create Demo POC (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575147 [55] [Meta] Create AI CMS Demo System / Create Technical Concept (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575145 [56] [Meta] Create AI CMS Demo System / Organize and Set Up Repository Access (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3575143 [57] Start setting up AI Starterkit (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3569199 [58] Create QA image for DrupalPod (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3558437 [59] [Meta] AI Content Review Workflow (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3545606 [60] GitLab workflow automation for AI Initiative repos (exploration + rollout) (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586474 [61] Module Finder: recruit beta testers and drive incremental improvements (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586577 [62] [Meta] Skills for hosting providers: control deployment and environment setup (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586575 [63] Research: DevPanel API — what deployment & environment automation is possible (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586576 [64] Run more than one test group in Bulk - Test Collections? (ai_agents_test, Issue) — https://git.drupalcode.org/project/ai_agents_test/-/work_items/3541324 [65] Research: merging ai_agents_test with ai_eval (and AiLlm test harness) (ai_agents_test, Issue) — https://git.drupalcode.org/project/ai_agents_test/-/work_items/3585124 [66] Image Embeddings (gemini_provider, Issue) — https://git.drupalcode.org/project/gemini_provider/-/work_items/3588392 [67] Add support for batch embeddings (gemini_provider, Issue) — https://git.drupalcode.org/project/gemini_provider/-/work_items/3589183 [68] Explore export/sync plugin system for AI Agents to external agent platforms (Claude Code, VAPI, etc.) (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3577241 [69] Add views agent (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3542457 [70] Create an ChatProcessor (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3585984 [71] AI Agent entity form should reject machine names that collide with existing code-plugin IDs (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586026 [72] Use the `ai_json_schema` editor for the AI Agent structured-output schema field (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586042 [73] Add possibility to catch all errors on a tool (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3547994 [74] Let an agent use a role when running a tool (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3518167 [75] Allow agents to have permissions, user or a role (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586019 [76] MapDefinitionNormalizer and ContextDefinitionNormalizer break REST serialization (same as #3568588) (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582939 [77] Allow controlling Tool return format (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582933 [78] Allow tool execute to be previewed (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3558037 [79] Introduce support for Discovery, Planning and Execute calls for MCP and Agents (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3546292 [80] Proposal: make Tool's declarations introspectable over the CLI, and enrich input schema (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3582943 [81] File Input Handling (tool, Issue) — https://git.drupalcode.org/project/tool/-/work_items/3572774 [82] Dependency Dashboard (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591657 [83] 3591734: WSOD AssertionError: assert(!$data instanceof ComponentInputsMapping) in assert() when requesting tmgmt translation job (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1296 [84] chore(deps): update dependency @eslint/compat to v2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1306 [85] chore(deps): update dependency @chromatic-com/storybook to v5 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1305 [86] fix(deps): update npm minor and patch (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1238 [87] chore(deps): update mysql docker tag to v8.4 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1272 [88] feat: #3567225 Allow per-node override of Content Template via checkbox in node selector (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/948 [89] Clean up CCC tooltip, truncation, and icon-only content (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586302 [90] Clean up CCC cacheability and access metadata (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586300 [91] Allow subcontext scope to override parent scope (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586218 [92] Add full view layout for context item canonical and revision pages based on new design (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586220 [93] Improve conditional subcontext disabled-state behavior and admin UX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586292 [94] Add #[RunTestsInSeparateProcesses] attribute to all kernel test classes (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586280 [95] Clean up CCC inconsistencies and DX issues before rc1 (part 3) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586271 [96] Update relevant CCC skipped tests (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586263 [97] Clean up CCC test and documentation consistency before rc1 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586299 [98] Clean up CCC accessible interactive links and external links (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586301 [99] Clean up CCC JavaScript filter feedback (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586303 [100] Clean up CCC form and table accessibility cleanup (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586304 [101] Clean up CCC documentation and API consistency (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586305 [102] Clean up CCC configuration policy checks (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586306 [103] Sprint 13 CCC roadmap updates, sprint planning, and issue triage (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586293 [104] Provide real sample context items for end user use (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586279 [105] [Feature] Add ExternalContextProviderInterface and ContextQueryInterface to support RAG/vector store integrations (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586289 [106] [Meta] Fix CCC issues based on AI Best Practices results (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586298 [107] Evaluate Annotations module and how it might work with CCC (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586268 [108] [Discuss] Add boundaries / exclusions to scope plugins (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586197 [109] Update project page to make it more clear that CCC is for agents (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586278 [110] Promote Document Loader: Context Importer from experimental to stable (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586282 [111] Rename entity bundle and target entity scope plugins for better DX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586276 [112] Fix 2.x branch integration with AI 2.x now that Symfony Platform is integrated (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584015 [113] Batch embeddings for improved indexing performance (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584024 [114] Named argument spread into `querySearch()` includes keys it does not accept, causing PHP fatal (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584028 [115] PluginException from getSearchVectorInput() is not caught, returning empty results with no error (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584026 [116] Logger not injected in `create()`, causing fatal error on error paths (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584025 [117] vectorSearch() is never called for embedding-free VDB providers (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584027 [118] Generate UUIDs for list-style widget-action settings applied via config actions (field_widget_actions, Issue) — https://git.drupalcode.org/project/field_widget_actions/-/work_items/3578823 [119] Using JSON Schema to define "input", "output" and "config" (orchestration, Issue) — https://git.drupalcode.org/project/orchestration/-/work_items/3554622 [120] Integrate with n8n (orchestration, Issue) — https://git.drupalcode.org/project/orchestration/-/work_items/3551197 [121] [orchestration_eca] Add "Execute Orchestration service" ECA action to allow ECA to invoke registered services (orchestration, Issue) — https://git.drupalcode.org/project/orchestration/-/work_items/3575105 [122] [META] Improve Drupal Assistant Implementation (agui, Issue) — https://git.drupalcode.org/project/agui/-/work_items/3572388 --- TODAY'S MODULE SUMMARIES ---

                                                        AI (Artificial Intelligence)

                                                        The AI module saw focused development activity over the past 24 hours, primarily around documentation, architectural improvements, and long-term product planning.

                                                        A functional test suite for AI CKEditor was closed, completing validation work that ensures editor-based AI features continue to work correctly as the module evolves. Work continued on batch embeddings support, which will reduce indexing time for vector databases by processing multiple content chunks simultaneously rather than one at a time—a meaningful performance improvement for sites with large content libraries.

                                                        Several strategic planning issues were opened to guide the module's next phase. These include creating a curated directory of related modules and providers to help adopters understand the ecosystem, defining how to transition bundled submodules (such as validations and search) to standalone projects, and designing a mechanism to notify administrators when better AI models become available from providers. Additional issues were opened to expand agent-driven configuration capabilities, allowing AI assistants to set up automators, guardrails, and core settings through conversational commands.

                                                        A validation issue was identified in one of the agent skills, where a naming mismatch could prevent the skill from being invoked correctly. A merge request has been opened to resolve this.

                                                        How can I help on this project?

                                                        • Prioritize completion of the ecosystem documentation and provider matrix script so adopters can quickly understand what exists and how to use it.
                                                        • Support resource allocation for the batch embeddings and agent skill work streams, which are foundational to both performance and usability goals.

                                                        Contributors: Ahmad Khalil (ahmad-khalil-imagex), Artem Dmitriiev (a.dmitriiev), Ronald te Brake (ronaldtebrake), velmir_taky (root_emarketing)

                                                        ---

                                                        Drupal AI Initiative

                                                        Activity during the reporting period was limited to routine issue tracking and planning. Several existing work items received status updates as part of ongoing sprint management, including issues related to content review functionality, demonstration systems, and AI-powered recipes for common use cases like comment moderation.

                                                        Two new areas of work were opened for exploration. The first involves automating GitLab workflow processes to reduce manual maintenance effort across AI Initiative repositories. The second explores deployment automation skills that would allow developers to set up and manage hosting environments through conversational instructions, with initial research focused on provider APIs.

                                                        A Module Finder beta testing initiative was also established to gather user feedback on the AI-powered semantic search tool designed to help developers discover existing contributed modules before building custom solutions.

                                                        No merge requests were completed during this period. Work continues across multiple streams including user experience design, technical architecture, and demonstration infrastructure.

                                                        How can I help on this project?

                                                        • Facilitate introductions to hosting provider technical contacts to accelerate API research and partnership discussions for deployment automation capabilities.
                                                        • Allocate budget or resources to support beta testing coordination and user research activities for Module Finder and other user-facing tools.
                                                        ---

                                                        AI Agents Test

                                                        No development activity occurred in the reporting period. Two planning issues were updated with minor metadata changes but saw no substantive progress.

                                                        Both items remain in early discovery: one explores how users might run multiple test groups together in a single operation, and the other examines whether this module should be consolidated with a related evaluation tool to avoid duplication of effort across the AI ecosystem.

                                                        The module continues in an exploratory phase with no commits or merge activity in the past 24 hours.

                                                        How can I help on this project?

                                                        • Clarify the strategic direction: decide whether consolidating testing tools is a priority, or whether parallel development should continue.
                                                        • Allocate development capacity to move planning issues into implementation if the module is expected to progress toward a usable release.
                                                        ---

                                                        Gemini Provider

                                                        The Gemini Provider module saw two feature requests updated this period, both focused on expanding the module's embedding capabilities to better leverage Google's Gemini platform strengths.

                                                        Work is being tracked to add Image Embeddings support, which would allow the system to index and search using images rather than just text. This capability is currently rare among AI providers and could differentiate the platform's content discovery features. A related merge request is already in development.

                                                        Additionally, Add support for batch embeddings is being explored to enable processing multiple items at once. This would improve efficiency when indexing large volumes of content. A merge request for this enhancement is also underway.

                                                        Both features remain in active development with no code merged this period. This is normal progress for a module working toward broader AI integration capabilities.

                                                        How can I help on this project?

                                                        • Clarify business priorities between image search capabilities and batch processing efficiency to help contributors focus resources on the highest-value feature first.
                                                        • Identify pilot use cases or content types where image embeddings would deliver immediate user value.
                                                        ---

                                                        AI Agents

                                                        Development activity this period focused on planning and refinement ahead of a stable release. Seven issues received updates, concentrating on three strategic themes: better integration with external AI platforms, improvements to the agent configuration experience, and a clearer permissions model for autonomous agents.

                                                        Work is underway to explore how agents defined in Drupal could be exported or synchronized to external platforms like Claude Code or VAPI, allowing the module to participate in broader AI ecosystems. Meanwhile, two issues moved to "ready to be committed" status: one that would prevent configuration errors when agent names collide with code-level plugin IDs, and another to add a chat processor for conversational agents.

                                                        Several issues address how agents handle permissions when running tools—particularly important for agents that operate autonomously via scheduled tasks or queues, where no logged-in user session exists. Proposals include assigning agents their own permissions, user identity, or role and letting agents assume a specific role when executing tools.

                                                        How can I help on this project?

                                                        • Prioritize a decision on the agent permissions model—multiple overlapping proposals need consolidation to unblock autonomous agent use cases.
                                                        • Consider allocating resource to review and commit the two issues marked ready, accelerating progress toward a stable release.
                                                        ---

                                                        Tool API

                                                        The Tool API project saw active discussion this period focused on improving how tools can be discovered, invoked, and integrated into AI workflows. Five issues were updated with new comments, though no code was merged.

                                                        Key themes include improving the developer and integration experience. Work continued on making tool declarations introspectable over the CLI, which would allow systems like command-line interfaces and AI agents to understand what a tool does and what inputs it needs without having to run it first. This supports a more predictable and maintainable integration pattern.

                                                        Discussion also continued on controlling tool return formats, which addresses how results are presented to different consumers, and allowing tool execution to be previewed, enabling teams to test and debug workflows without making permanent changes. Progress was also noted on strategies for discovery, planning, and execution patterns that help AI agents work more reliably when managing many tools.

                                                        One issue flagged a serialization conflict affecting REST endpoints when the Tool module is enabled, which impacts API integrations.

                                                        How can I help on this project?

                                                        • Help prioritize which integration improvements (introspection, return format control, preview mode) deliver the most value to early adopters and should be resourced first.
                                                        • Ensure the REST serialization issue is addressed quickly if API stability is important to your deployment timeline.
                                                        ---

                                                        Drupal Canvas

                                                        Activity this period focused on addressing a critical issue and maintaining project dependencies. A fix was developed for a crash that occurs when requesting translation jobs in sites using the translation management system. This was blocking users from translating pages that include certain types of content components.

                                                        Automated dependency updates were proposed for development tools and infrastructure, including updates to code quality tools and database components. These keep the project aligned with current standards and security patches.

                                                        Existing work on allowing individual pages to override their templates remains under review. This capability would give content editors more flexibility to customize specific pages without changing site-wide templates.

                                                        How can I help on this project?

                                                        • Prioritize review and testing resources for the translation fix, as it impacts multilingual deployments.
                                                        • Clarify the decision timeline for the page override feature to help guide further investment in that capability.

                                                        Contributors: **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Narendra Singh Rathore (NarendraR), Rajab Natshah (RajabNatshah)

                                                        ---

                                                        Context Control Center (CCC)

                                                        Work this period focused on preparing the module for its first release candidate. A comprehensive quality review was completed, identifying improvements across eight areas including accessibility, caching, documentation, and test coverage. These have been organized into focused cleanup issues that will strengthen the product before wider adoption.

                                                        Two strategic discussions advanced. A feature proposal was submitted for external context provider and query interfaces to support vector store and retrieval-augmented generation integrations. This would formalize a pattern already working in production but currently requiring workarounds. Separately, the team is evaluating how the new Annotations module might integrate with CCC's context management capabilities.

                                                        Planning work established the roadmap for Sprint 13, covering 27 June through 10 July. Progress continued on allowing subcontexts to override parent scope settings and on delivering a redesigned full-page layout for viewing context items. The experimental Document Loader importer submodule is being prepared for promotion to stable status once remaining documentation and testing tasks are complete.

                                                        Several usability improvements are in progress, including clearer project documentation explaining that CCC currently works with AI agents specifically, and renaming scope plugin labels to reduce confusion around entity types and bundles.

                                                        How can I help on this project?

                                                        • Prioritize whether the external provider API proposal should be included before the first release candidate, as this decision affects the supported integration patterns for ecosystem partners.
                                                        • Allocate resource time for the accessibility and caching cleanup work to ensure quality standards are met before the stable release.
                                                        ---

                                                        AI Search

                                                        The AI Search module saw significant diagnostic activity this period, with five new issues opened identifying critical defects that prevent the module from functioning correctly. No code changes were merged.

                                                        The issues uncovered represent foundational integration and error-handling problems. They include a missing logger dependency that causes crashes instead of reporting errors, a silent failure when search providers are misconfigured, and a parameter-passing error that triggers fatal errors during search operations. A fourth issue reveals that search queries are routed incorrectly for certain types of database providers, preventing search from working at all in those cases.

                                                        One issue tracks compatibility with the updated AI core module, which is waiting on upstream work. Another proposes batch processing for indexing to improve performance at scale.

                                                        These issues reflect expected discovery work in a pre-stable module. Resolving them will improve reliability and user experience.

                                                        How can I help on this project?

                                                        • Allocate dedicated development resources to address the open defects, which are blocking basic search functionality in several configurations.
                                                        • Clarify whether performance improvements like batch indexing align with the project roadmap and timeline for a stable release.
                                                        ---

                                                        Field Widget Actions

                                                        No development activity was recorded during this period. One feature request was filed to address a limitation in the module's configuration system that prevents recipes from adding multiple action buttons to a single form. Currently, when configuring actions programmatically, each button requires a manually specified unique identifier, causing buttons to overwrite each other instead of operating independently. The proposed enhancement would automatically generate these identifiers, matching the behavior users already experience when adding buttons through the interface. This would enable recipe authors to deploy more sophisticated forms with multiple action buttons without manual workarounds.

                                                        The issue remains in early design stages with no implementation work yet underway. This is expected for a module in active feature development.

                                                        How can I help on this project?

                                                        • Clarify whether multi-button recipe support is a priority for your upcoming deployments, to help the team prioritize this enhancement request.
                                                        • Ensure maintainers have capacity allocated to design and implement the configuration improvement if it aligns with strategic needs.
                                                        ---

                                                        Orchestration

                                                        The Orchestration module saw continued planning and design activity this period, with three issues receiving updates focused on expanding integration capabilities and defining architectural standards.

                                                        Work progressed on [orchestration_eca] Add "Execute Orchestration service" ECA action to allow ECA to invoke registered services, which will enable bi-directional communication between the Orchestration module and Drupal's Event-Condition-Action system. This means workflows will be able to both trigger external services and respond to them, expanding automation flexibility.

                                                        Planning continued on Integrate with n8n, which will add support for a popular workflow automation platform. Once complete, this will allow organisations to connect Drupal content and user events with thousands of external applications and services through n8n's marketplace.

                                                        Discussion also advanced on Using JSON Schema to define "input", "output" and "config", a technical proposal to standardise how workflow components validate and document their data contracts. This foundation will improve reliability and make it easier to build complex automations safely.

                                                        How can I help on this project?

                                                        • Clarify priority between the n8n integration and the ECA bidirectional feature to focus development effort.
                                                        • Connect the team with organisations willing to pilot the n8n integration once available.
                                                        • Approve or deprioritise the JSON Schema architectural proposal to reduce planning overhead.
                                                        ---

                                                        AG-UI

                                                        No development activity was recorded during this period. The project has one active planning item open: [META] Improve Drupal Assistant Implementation, which focuses on evolving an earlier proof-of-concept into a production-ready replacement for an existing chat component. This work is still in the design phase, with no code changes merged or commits made in the last 24 hours.

                                                        The module remains in active development with no urgent blockers identified during this period.

                                                        How can I help on this project?

                                                        • Confirm strategic alignment on whether the Drupal Assistant feature should proceed as a production replacement, and communicate that decision to the team.
                                                        • Ensure adequate development resourcing is available to move planned improvements from design to implementation.
                                                        ======================================================================== ## [30] factcheck:capabilities:executive ======================================================================== Layer-1 corrections: 1 Judge flags: 0