# Prompt log — 24h 2026-08-05 ======================================================================== ## [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-08-05T05:00:07+00:00 to 2026-08-06T05:00:07+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: Abhishek Dhariwal (adaptative), Ahmad Khader (Ahmad-Khader), Ahmad Khalil (ahmad-khalil-imagex), Ann Mary Sruthy (annmarysruthy), Artem Dmitriiev (a.dmitriiev) [1], Joshua Fernandes (joshua1234511), Levente Besenyei (LeventeB), Miguel Guerreiro (gueguerreiro), Prabhavathi Vanipenta (prabha1997), Ricardo Castañeda (cadence96), Rob Loach (robloach) [1]". 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). ### [Drupal 11.4 DeepChat Block does not work with Webprofiler enabled](https://git.drupalcode.org/project/ai/-/work_items/3586615) State: opened | Updated: 2026-08-05 | Author: jesmaster (Jesmaster) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::bug Description: Chatbot was working on Drupal 11.3, I updated to 11.4 and the chatbot doesn't open when clicked anymore, there are no javascript errors in the console log. I deleted the block and re-created it and I'm getting this AJAX error when choosing the assisstant. ### [Add interactive refinement capability to Field Widget Actions](https://git.drupalcode.org/project/ai/-/work_items/3586468) State: closed | Updated: 2026-08-05 | Author: Edward Zwart (ezeedub) | Assigned: unassigned | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, ai::inside 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… ### [Add interactive refinement capability to Field Widget Actions 2.x](https://git.drupalcode.org/project/ai/-/work_items/3586655) State: opened | Updated: 2026-08-05 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: unassigned | Labels: ai::inside, aiAutomators, category::task, priority::normal Description: This issue is for cherry-picking / porting the changes from related issue to 2.x. As in 2.x the way ai_automator works was slightly change, it is not a straightforward cherry-pick. MR to port/cherry-pick https://git.drupalcode.org/project/ai/-/merge_requests/1629 ### [AiAutomatorEntityModifier::entityHasConfig() ignores the AI Automator's disabled (status: false) setting](https://git.drupalcode.org/project/ai/-/work_items/3586654) State: opened | Updated: 2026-08-05 | Author: Miguel Guerreiro (gueguerreiro) | Assigned: unassigned | Labels: Quick Win, category::bug, priority::normal, state::accepted Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1915 [bug: #3586654 AiAutomatorEntityModifier::entityHasConfig() ignores the AI...](https://git.drupalcode.org/project/ai/-/merge_requests/1915) | State: opened | Author: Miguel Guerreiro (gueguerreiro), 14 diff lines Description: ## Summary **This is for version 1.x of the ai module** Disabling an AI Automator config entity (setting `status: false` in its configuration item) has no effect on whether it actually runs. Automators keep firing on every entity save even when we disable it. ## Steps to reproduce 1. Configure an AI Automator on any field so it auto-populates the field on save when left empty. 2. Save an entity with the field empty and verify the AI call fires and the field gets populated. 3. Disable the automator (set `status: false` in the exported config and reimport). 4. Save an entity with the fiel… ### [The Toolbar Chatbot runs the fold out animation on page reload](https://git.drupalcode.org/project/ai/-/work_items/3568246) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, Needs UX review 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… ### [Allow Field Widget Actions to target a specific automator](https://git.drupalcode.org/project/ai/-/work_items/3571915) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: unassigned | Labels: Has Testing Steps, ai::inside, aiAutomators, category::bug Description: >>> [!note] Migrated issue Reported by: [oneliner](https://www.drupal.org/user/1781526) >>> [Tracker] Update Summary: Fix enables multiple field widget action buttons to run only their selected automator. Short Description: Field widget actions trigger all automators on a field instead of the selected one. Check-in Date: 02/06/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation It’s possible (though not exposed by the default UI) to configure multiple AI automators for the same field by duplicating the automator config entity with a… ### [Automator FWA buttons give no user feedback when values don't visibly change](https://git.drupalcode.org/project/ai/-/work_items/3585987) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: Petar Bašić (petar_basic) | Labels: ai::inside, category::bug, priority::normal, sprint candidate Description: >>> [!note] Migrated issue Reported by: [petar_basic](https://www.drupal.org/user/3626336) >>> [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 When an editor clicks a Field Widget Action (FWA) button backed by an ai_automator, the AJAX call runs, the throbber appears and disappears, but there is no user feedback confirming that the automator actually ran. This is especially visible on th… ### [QA of 1.4.6 and 1.3.11](https://git.drupalcode.org/project/ai/-/work_items/3586651) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: category::task, priority::normal, state::accepted Description: This is a placeholder for QA on 1.4.6 and 1.3.11 ### [Release 1.4.6 and 1.3.11](https://git.drupalcode.org/project/ai/-/work_items/3586650) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: category::task, priority::normal, state::rtbc Description: Expected release date: 5/Aug/26 QA issue: #3586651 ### [Add a ChatMemoryInterface for storing ChatBot chat history](https://git.drupalcode.org/project/ai/-/work_items/3586539) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: aiChatbot, category::feature, priority::normal, state::fixed Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1885 [Issue #3586539: Add ChatMemory plugin type](https://git.drupalcode.org/project/ai/-/merge_requests/1885) | State: merged 2026-08-05 | Author: Rob Loach (robloach), 2896 diff lines - MR !1835 [fix: #3586589 Do not assume action definitions have a type when deriving action plugin functions](https://git.drupalcode.org/project/ai/-/merge_requests/1835) | State: closed | Author: Ahmad Khalil (ahmad-khalil-imagex), 7787 diff lines Description: ## Problem/Motivation ChatBots need a way to store chat history. Today there is no standardized mechanism for a ChatBot to persist conversation history across requests. We want each ChatBot to be **in charge of its own memory handling**: - A ChatBot may opt in to a server-side memory backend by setting up a `ChatMemoryInterface` implementation. - A ChatBot may instead handle history entirely on the frontend (e.g. browser `localStorage`) and skip the interface altogether. The decision — whether to use a `ChatMemoryInterface` at all, and which implementation — belongs to the ChatBot. ## Pro… ### [If only one tool, cannot delete it, gives an error: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php) & more](https://git.drupalcode.org/project/ai/-/work_items/3586652) State: opened | Updated: 2026-08-05 | Author: Prabhavathi Vanipenta (prabha1997) | Assigned: unassigned | Labels: Quick Win, category::bug, priority::normal, state::needsReview Description: Am on Drupal 11.3.16, PHP 8.4, ai 1.4.5, ai_agents 1.3.2 If my AI Agent has one tool, and I try to delete it using its trashcan icon at the upper right, the tool still remains... If I then Save the AI Agent, and go back into it, the following errors/warnings appear at the top: ``` Warning: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php). Warning: Trying to access array offset on null in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibra… ### [AiToolsValidationException is not caught and passed back as tool output](https://git.drupalcode.org/project/ai/-/work_items/3586653) State: opened | Updated: 2026-08-05 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: aiAgent, aiCoreModule, category::bug, priority::normal Description: ## Summary `AiToolsValidationException` is thrown by tool and function-call validation, but nothing catches it and converts it into tool output. Instead of being passed back to the model as a tool result so it can correct the call and retry, it propagates up and surfaces to the end user, ending the run. A grep for `catch (AiToolsValidationException` and `catch (AiExceptionInterface` across ai and ai_agents returns no handler at all. ## Where it is thrown - `src/OperationType/Chat/Tools/ToolsPropertyResult.php` lines 118-171 — around 13 throws covering type, length, format and range validat… ### [Undefined array key warnings in RestrictToTopic and RegexpGuardrail buildConfigurationForm() when creating new guardrail](https://git.drupalcode.org/project/ai/-/work_items/3584884) State: closed | Updated: 2026-08-05 | Author: drupalbot | Assigned: unassigned | Labels: aiCoreModule, category::bug, priority::minor, state::fixed Description: >>> [!note] Migrated issue Reported by: [abhisekmazumdar](https://www.drupal.org/user/3557964) Related to !1525 >>> [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 When creating a new guardrail using either the RestrictToTopic or RegexpGuardrail plugins, the following PHP warnings appear in the logs: Warning: Undefined array key "invalid_topics_present_message" in Drupal\ai\Plugin\AiGua… ### [Release 1.4.4 and 1.3.9](https://git.drupalcode.org/project/ai/-/work_items/3586586) State: closed | Updated: 2026-08-05 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: Rob Loach (robloach) | Labels: AI Initiative, AI Product Development, Release Management, aiCoreModule Description: Expected Release date: 08/Jul/26 ### [Allow Internal Tool Calling](https://git.drupalcode.org/project/ai/-/work_items/3586616) State: opened | Updated: 2026-08-05 | Author: Bryan Sharpe (b_sharpe) | Assigned: unassigned | Labels: aiCoreModule, category::feature, priority::normal, state::accepted Description: ## Summary Most AI providers have their own toolsets that can be used via the APIs, we should have configurable sets to allow/deny provider tools when making calls. ## Problem Currently there is no way to call internal tools provided by the provider. ## Proposed solution *(optional)* - Allow tool deny/allow list per Operation Type, similar to model configuration - This should expose the tool as available, not automatically make it append to requests. For example if we allow the "web_search" tool to be available, the item using it (i.e. Agent) would still need to attach it, just like fun… ### [Provide proper support for "unconfigured" AI provider state](https://git.drupalcode.org/project/ai/-/work_items/3572645) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, ai::inside Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1909 [Issue #3572645: Updated unconfigured ai provider handling.](https://git.drupalcode.org/project/ai/-/merge_requests/1909) | State: opened | Author: Levente Besenyei (LeventeB), 225 diff lines 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… ### [`AiReranker::extractItemText()` should prefer chunk text over configured indexed fields](https://git.drupalcode.org/project/ai/-/work_items/3586637) State: opened | Updated: 2026-08-05 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: unassigned | Labels: category::bug, priority::normal, state::needs review, v1.5.x-dev Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1908 [bug: #3586637 should prefer chunk text over configured indexed fields](https://git.drupalcode.org/project/ai/-/merge_requests/1908) | State: opened | Author: Ann Mary Sruthy (annmarysruthy), 93 diff lines Description: ## Problem/Motivation `ai_search`'s chunk-mode retrieval (used by `RagTool` and any other consumer querying with `search_api_ai_get_chunks_result`) carries the actual chunk text in `$item->getExtraData('content')`, not in the item's configured indexed source fields. `AiReranker::extractItemText()` only reads the processor's configured `source_fields` off each result item. For chunk-mode results this means every chunk belonging to the same entity reranks against the same text: the entity's full configured field content, not the individual chunk. Chunk-level rerank quality regresses to entity-… ### [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-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Abhisek Mazumdar (abhisekmazumdar) | Labels: AI Initiative Sprint, AI Innovation, Needs manual testing, aiCoreModule 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… ### [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-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Has Testing Steps, aiCoreModule Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1708 [task: #3586562 Add a configure-ai-settings agent skill for general AI settings...](https://git.drupalcode.org/project/ai/-/merge_requests/1708) | State: opened | Author: Ann Mary Sruthy (annmarysruthy), 392 diff lines 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… ### [Approve the Chat Fundamentals (MCP-shaped rich chat) issue set for 1.6.x](https://git.drupalcode.org/project/ai/-/work_items/3586639) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Artem Dmitriiev (a.dmitriiev), Christoph Breidert (breidert) | Labels: category::plan, priority::normal, state::accepted Description: ### Problem/Motivation A coordinated set of 12 issues — the **Chat Fundamentals plan** — has been filed across the ai and ai_agents queues, proposing that rich structured chat (content blocks, citations, tool output rendering, forms-in-chat via elicitation, pre-tool confirmation, progress, suggested replies) be built by adopting the Model Context Protocol shapes (spec revision 2025-06-18) directly as the canonical array shapes. All 12 issues are deliberately filed as **`state::postponed`**: they are a design proposal awaiting maintainer approval, not work in progress. Nothing in the set is i… ### [[Meta] Rich structured chat: adopt MCP content and interaction shapes](https://git.drupalcode.org/project/ai/-/work_items/3586640) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: aiCoreModule, category::plan, state::postponed Description: > ⚠️ **Postponed pending approval.** This issue set awaits maintainer approval — see the [approval issue](https://git.drupalcode.org/project/ai/-/work_items/3586639). It targets the **1.6.x branch once it is created**; nothing here is intended for 1.5.x. ### Problem/Motivation Chat responses in the AI ecosystem are plain text plus one trusted-HTML escape hatch. Concretely, on 1.5.x today: - `ChatMessage` carries only `role`, `text`, `files`, `remoteFiles`, `tools`, `toolId`. There is no metadata bag and no slot for structured payloads. - `ChatOutput::$metadata` is `mixed`, settable only thr… ### [(Optional) Typed context references on user messages via input-side content blocks](https://git.drupalcode.org/project/ai/-/work_items/3586648) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: aiCoreModule, category::feature, state::postponed Description: > ⚠️ **Postponed pending approval.** Part of the [Chat Fundamentals plan](https://git.drupalcode.org/project/ai/-/work_items/3586640); awaits maintainer approval ([approval issue](https://git.drupalcode.org/project/ai/-/work_items/3586639)). Targets the **1.6.x branch once it is created**. **Optional capability** — the output-side issue set stands without it. **Depends on:** [content blocks (#3586643)](https://git.drupalcode.org/project/ai/-/work_items/3586643); history persistence via [structured response channel (#3586644)](https://git.drupalcode.org/project/ai/-/work_items/3586644). ### P… ### [Citations/sources and suggested replies via MCP shapes](https://git.drupalcode.org/project/ai/-/work_items/3586647) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: aiCoreModule, category::feature, state::postponed Description: > ⚠️ **Postponed pending approval.** Part of the [Chat Fundamentals plan](https://git.drupalcode.org/project/ai/-/work_items/3586640); awaits maintainer approval ([approval issue](https://git.drupalcode.org/project/ai/-/work_items/3586639)). Targets the **1.6.x branch once it is created**. **Depends on:** [content blocks + `_meta` registry (#3586643)](https://git.drupalcode.org/project/ai/-/work_items/3586643), [structured response channel (#3586644)](https://git.drupalcode.org/project/ai/-/work_items/3586644), [renderers (#3586645)](https://git.drupalcode.org/project/ai/-/work_items/3586645)… ### [Elicitation round-trip: MCP-shaped request/result objects and pause/resume on ChatProcessor](https://git.drupalcode.org/project/ai/-/work_items/3586646) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: aiCoreModule, category::feature, state::postponed Description: > ⚠️ **Postponed pending approval.** Part of the [Chat Fundamentals plan](https://git.drupalcode.org/project/ai/-/work_items/3586640); awaits maintainer approval ([approval issue](https://git.drupalcode.org/project/ai/-/work_items/3586639)). Targets the **1.6.x branch once it is created**. **Depends on:** [content blocks + `_meta` conventions (#3586643)](https://git.drupalcode.org/project/ai/-/work_items/3586643); shares the interface-evolution pattern with the structured-response child issue and can be developed in parallel with it. ### Problem/Motivation There is no way for a processor — … ### [ChatBlockRenderer plugin type with default renderers and entity cards](https://git.drupalcode.org/project/ai/-/work_items/3586645) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: aiCoreModule, category::feature, state::postponed Description: > ⚠️ **Postponed pending approval.** Part of the [Chat Fundamentals plan](https://git.drupalcode.org/project/ai/-/work_items/3586640); awaits maintainer approval ([approval issue](https://git.drupalcode.org/project/ai/-/work_items/3586639)). Targets the **1.6.x branch once it is created**. **Depends on:** [content blocks on ChatMessage (#3586643)](https://git.drupalcode.org/project/ai/-/work_items/3586643). ### Problem/Motivation Once messages carry MCP content blocks (#3586643), every consumer still needs bespoke code to turn a block into markup. Without a shared rendering path, each chatb… ### [ChatProcessor: structured response channel and block-aware message history](https://git.drupalcode.org/project/ai/-/work_items/3586644) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: aiCoreModule, category::feature, state::postponed Description: > ⚠️ **Postponed pending approval.** Part of the [Chat Fundamentals plan](https://git.drupalcode.org/project/ai/-/work_items/3586640); awaits maintainer approval ([approval issue](https://git.drupalcode.org/project/ai/-/work_items/3586639)). Targets the **1.6.x branch once it is created**. **Depends on:** [content blocks on ChatMessage (#3586643)](https://git.drupalcode.org/project/ai/-/work_items/3586643) and [streamed metadata fix (#3586641)](https://git.drupalcode.org/project/ai/-/work_items/3586641). ### Problem/Motivation The ChatProcessor plugin type (`Drupal\ai\Plugin\ChatProcessor\C… ### [Add MCP content blocks and a _meta bag to ChatMessage](https://git.drupalcode.org/project/ai/-/work_items/3586643) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: aiCoreModule, category::feature, state::postponed Description: > ⚠️ **Postponed pending approval.** Part of the [Chat Fundamentals plan](https://git.drupalcode.org/project/ai/-/work_items/3586640); awaits maintainer approval ([approval issue](https://git.drupalcode.org/project/ai/-/work_items/3586639)). Targets the **1.6.x branch once it is created**. **Depends on:** the [meta plan](https://git.drupalcode.org/project/ai/-/work_items/3586640) (conventions). Foundation for the structured-response, renderer, elicitation, agent-loop and citations child issues (see the meta issue's child list). ### Problem/Motivation `ChatMessage` can carry only text, files… ### [Add MCP tool annotations to tool definitions and a ContentBlockProducerInterface for rich tool results](https://git.drupalcode.org/project/ai/-/work_items/3586642) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: aiCoreModule, category::feature, state::postponed Description: > ⚠️ **Postponed pending approval.** Part of the [Chat Fundamentals plan](https://git.drupalcode.org/project/ai/-/work_items/3586640); awaits maintainer approval ([approval issue](https://git.drupalcode.org/project/ai/-/work_items/3586639)). Targets the **1.6.x branch once it is created**. **Depends on:** nothing (wave 1 of the [meta plan](https://git.drupalcode.org/project/ai/-/work_items/3586640)). Pairs with the content-blocks child issue (03) for block shape validation and the ai_agents pre-tool confirmation child issue (08) for gating — see the meta issue's child list for links. ### Pro… ### [Add ChatOutput::setMetadata() and stop discarding chunk metadata in streamed reconstruction](https://git.drupalcode.org/project/ai/-/work_items/3586641) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: aiCoreModule, category::bug, state::postponed Description: > ⚠️ **Postponed pending approval.** Part of the [Chat Fundamentals plan](https://git.drupalcode.org/project/ai/-/work_items/3586640); awaits maintainer approval ([approval issue](https://git.drupalcode.org/project/ai/-/work_items/3586639)). Targets the **1.6.x branch once it is created**. **Depends on:** nothing (wave 1 of the [meta plan](https://git.drupalcode.org/project/ai/-/work_items/3586640)). ### Problem/Motivation `ChatOutput` has a `getMetadata(): mixed` accessor, but the metadata can only be set through the constructor's third argument. There is no `setMetadata()`. This has two c… ### [Modules should register the AI request tags they can emit, at install time and dynamically](https://git.drupalcode.org/project/ai/-/work_items/3586638) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: aiCoreModule, category::feature, priority::normal, state::needs review Description: ## Summary Modules should **register the AI request tags they can emit**, so the set of possible tags is known before any request is made. Registration should happen at installation/discovery time for static tags, and dynamically for tags that only exist because of site configuration — an agent created as `foo` should register something like `ai_agent_foo_request`. ## Problem Tags are free-form strings passed as the third argument to every operation call, appended to the provider plugin, and only observable once a request has already been executed (line references against 1.5.x): - `ChatIn… ### [Chatbot closes itself when adding a modal](https://git.drupalcode.org/project/ai/-/work_items/3499451) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, Has Testing Steps Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1815 [Issue #3499451: Restore toolbar chatbot state idempotently so a dialog re-attach cannot close it](https://git.drupalcode.org/project/ai/-/merge_requests/1815) | State: opened | Author: Abhishek Dhariwal (adaptative), 46 diff lines 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 --- MERGE REQUESTS (24h) --- ### [Issue #3586468: "Add interactive refinement capability to Field Widget Actions Automation"](https://git.drupalcode.org/project/ai/-/merge_requests/1914) State: merged 2026-08-05 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-1f45406f | 2218 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue #3586468: "Add interactive refinement capability to Field Widget Actions Automation"](https://git.drupalcode.org/project/ai/-/merge_requests/1629) State: merged 2026-08-05 | Author: Ahmad Khader (Ahmad-Khader) | Branch: 3586468-interactive-refineme | 2218 diff lines Description: ## Description ## Testing instructions 1. Create an AI Automator Setup for content_type → entity → field_content with rule llm_text_long , point the base field to the title, and add a prompt something like "You must write a short blog paragraph about: {{ context }}. Return ONLY the paragraph text, nothing else." 2. Enable the Field Widget Action with refinement Go to /admin/structure/types/manage/blog/form-display Click the gear on field_content, under Field Widget Actions enable "Automator Text Suggestion" Pick the automator, check "Enable Refinement", save 3. Edit an entity Click the… ### [Issue#3586539: Cherry pick d8017c74](https://git.drupalcode.org/project/ai/-/merge_requests/1913) State: merged 2026-08-05 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-3f03e62f | 3033 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue#3586539: Cherry pick d8017c74](https://git.drupalcode.org/project/ai/-/merge_requests/1912) State: merged 2026-08-05 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-d8017c74-2.x | 3033 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Fix deleting the only selected tool in the AI tools library element.](https://git.drupalcode.org/project/ai/-/merge_requests/1911) State: opened | Author: Prabhavathi Vanipenta (prabha1997) | Branch: 3586652-if-only-one-tool-cannot-delete-it-gives-an-error-undefined-array-key-1-in-drupalaielementtoolslibraryprocesstoolslibrary-line-89 | 452 diff lines Description: ToolsLibrary::valueCallback() treated an empty submitted value as "nothing submitted" and restored #default_value, so removing the last tool never stuck. The unnormalised fallback also returned the config map shape instead of a list of ids, which AiAgentForm::save() then persisted as tools: {1: true}, causing the "Undefined array key 1" warnings on the next form build. - Only fall back to #default_value when $input is FALSE or NULL. - Normalise comma strings, lists and id => enabled maps to a list of ids. - Build the element from #value rather than #default_value, so Ajax rebuilds reflect t… ### [Issue #3586539: Add ChatMemory plugin type](https://git.drupalcode.org/project/ai/-/merge_requests/1910) State: merged 2026-08-05 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-d8017c74 | 2896 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [feat: #3586638 Add AI request tag registry with static and dynamic discovery](https://git.drupalcode.org/project/ai/-/merge_requests/1907) State: opened | Author: Ricardo Castañeda (cadence96) | Branch: 3586638-modules-should-register-the-ai-request-tags-they-can-emit-at-install-time-and-dynamically | 851 diff lines Description: ## Description Adds a tag registry service (`ai.tag_registry`) so modules can declare, up front, which AI request tags they may emit — closing the gap described in #3586638, where tags are free-form strings nobody declares until a request has already run. Two discovery paths feed the registry: - **Static** — a new `hook_ai_tags_info()` (documented in the new `ai.api.php`, this module had none before). Any module — OOP `#[Hook]` class or legacy procedural `.module` function — can implement it. ai core registers its own known tags in `src/Hook/AiTags.php` (operation types pulled from … ### [Issue #3499451: Fixed chatbot not reopening after CKEditor/media modal closes.](https://git.drupalcode.org/project/ai/-/merge_requests/1277) State: opened | Author: Joshua Fernandes (joshua1234511) | Branch: 3499451-chatbot-closes-itself | 125951 diff lines Description: Closes #3499451 --- COMMITS (24h) --- - [aaf905ad](https://git.drupalcode.org/project/ai/-/commit/aaf905ad5a05cf26931060ecc100b2a1b30d4148) Issue #3586468: "Add interactive refinement capability to Field Widget Actions Automation" — Artem Dmitriiev (2026-08-05T17:24:11.000+00:00) - [d8017c74](https://git.drupalcode.org/project/ai/-/commit/d8017c74ee28da1672a013462198255e7063f390) Issue #3586539: Add ChatMemory plugin type — Rob Loach (2026-08-05T13:37:49.000+00:00) ======================================================================== ## [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-08-05T05:00:07+00:00 to 2026-08-06T05:00:07+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). ### [[META] 2026 AI Inside Roadmap to DrupalCon Rotterdam 2026](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586657) State: opened | Updated: 2026-08-05 | Author: Christoph Breidert (breidert) | Assigned: Christoph Breidert (breidert) | Labels: AI Initiative, ai::inside, roadmap Description: ## Why this roadmap exists At DrupalCon Rotterdam at the end of September we want to show a single Drupal site where AI Search, AI content review, AI translation, an editor-facing chat, observability and guardrails all work together on real, multilingual content. Rather than describing these features one by one, we let people see them working together on one site, and we let anyone launch that site for themselves in a few seconds on Drupal Forge. Most of these features already work today. The gap is almost never the core capability. The gap is that we have not yet shipped the recipes and dem… ### [QA Bi-Weekly Meeting - 5th August 2026](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586658) State: opened | Updated: 2026-08-05 | Author: Madeline Tuhey (maddyt) | Assigned: unassigned | Labels: meetings Description: **Update Summary:** Weekly QA Meeting\ **Check-in Date:** 05/08/2026 ### AI Initiative Weekly Catch-up – Summary #### QA & Release Update * Zoocha QA actively testing Drupal CCC, alongside regular release testing #### Wider Discussion * Tawny monitoring issues in Drupal Pod issue queue * Noted that use of "Needs QA" amongst AI development is still in low use, possibly remind developers of this option #### Next Steps * Bruna to set up an onboarding meeting with new QA team members that want to get involved * Tawny to touch base with Drupal Forge (testing delayed) * Zoocha to review Drup… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [3] summariseModule:ai_integration_eca:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Integration - ECA (machine name: ai_integration_eca) Reporting period: last 24h (2026-08-05T05:00:07+00:00 to 2026-08-06T05:00:07+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 Khader (Ahmad-Khader), Marcus Johansson (Marcus_Johansson) [2]". 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 Integration - ECA

      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). ### [Simplify structured output configuration in the Chat action](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585014) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !12 [Issue #3585014 Simplify structured output configuration in the Chat action](https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/12) | State: opened | Author: Ahmad Khader (Ahmad-Khader), 188 diff lines Description: ### Problem/Motivation The Chat action exposes the structured-output JSON schema as a plain text field in its config form (`src/Plugin/Action/Chat.php:46–50`) and stores it as a raw JSON string that is `json_decode()`d at runtime (line 115). That makes it cumbersome to **add** (no validation, no editor affordances, easy to ship malformed JSON) and hard to **look at** once saved — it's a wall of escaped JSON in the form. ### Proposed resolution Investigate replacing the raw text input with the AI module's dedicated `'#type' => 'ai_json_schema'` form element (`Drupal\ai\Element\AiJsonSchema`)… ### [[Meta] Cover remaining AI operation types with ECA execute actions](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585013) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, automation::error Description: ### Background The AI module exposes ~18 operation types, but this module only ships ECA execute actions for 5: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). This meta tracks adding execute actions for the rest so ECA flows can drive every supported AI operation without custom plugins. ### Scope **Out of scope (deferred):** `ImageAndAudioToVideo` — provider support is minimal. **In scope — one child issue per operation type:** - [Add ECA execute action for Audio to Audio](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585002) - [A… ### [Add ECA execute action for Translate Text](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585012) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `TranslateText` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `TranslateText` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\TranslateText` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_translate_text` - Builds the matching Input class from `Drupal\ai\OperationType\TranslateText\` and dispatches it through the con… ### [Add ECA execute action for Text to Image](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585011) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !9 [Resolve "9 different new actions"](https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/9) | State: merged 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson), 2157 diff lines Description: ### Problem/Motivation The AI module's `TextToImage` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `TextToImage` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\TextToImage` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_text_to_image` - Builds the matching Input class from `Drupal\ai\OperationType\TextToImage\` and dispatches it through the configured p… ### [Add ECA execute action for Text Classification](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585010) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `TextClassification` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `TextClassification` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\TextClassification` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_text_classification` - Builds the matching Input class from `Drupal\ai\OperationType\TextClassification\` and disp… ### [Add ECA execute action for Summarization](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585009) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `Summarization` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `Summarization` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\Summarization` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_summarization` - Builds the matching Input class from `Drupal\ai\OperationType\Summarization\` and dispatches it through the conf… ### [Add ECA execute action for Speech to Speech](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585008) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `SpeechToSpeech` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `SpeechToSpeech` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\SpeechToSpeech` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_speech_to_speech` - Builds the matching Input class from `Drupal\ai\OperationType\SpeechToSpeech\` and dispatches it through t… ### [Add ECA execute action for Object Detection](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585006) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `ObjectDetection` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `ObjectDetection` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\ObjectDetection` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_object_detection` - Builds the matching Input class from `Drupal\ai\OperationType\ObjectDetection\` and dispatches it throu… ### [Add ECA execute action for Image to Video](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585005) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `ImageToVideo` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `ImageToVideo` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\ImageToVideo` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_image_to_video` - Builds the matching Input class from `Drupal\ai\OperationType\ImageToVideo\` and dispatches it through the configu… ### [Add ECA execute action for Image to Image](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585004) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `ImageToImage` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `ImageToImage` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\ImageToImage` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_image_to_image` - Builds the matching Input class from `Drupal\ai\OperationType\ImageToImage\` and dispatches it through the configu… ### [Add ECA execute action for Image Classification](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585003) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `ImageClassification` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `ImageClassification` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\ImageClassification` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_image_classification` - Builds the matching Input class from `Drupal\ai\OperationType\ImageClassification\` and… ### [Add ECA execute action for Audio to Audio](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585002) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `AudioToAudio` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `AudioToAudio` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\AudioToAudio` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_audio_to_audio` - Builds the matching Input class from `Drupal\ai\OperationType\AudioToAudio\` and dispatches it through the configu… ### [Migrate the ECA agent to the Tools + ReAct architecture (create-only)](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585017) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: 2026sprint15, Road to 1.0.0, ai::inside, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !14 [Resolve "Migrate the ECA agent to the Tools + ReAct architecture (create-only)"](https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/14) | State: merged 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson), 4481 diff lines Description: ### Problem/Motivation The ECA agent in the `agents` submodule (`Drupal\ai_integration_eca_agents\Plugin\AiAgent\Eca`) is still built on the **legacy `AiAgentBase` architecture**: a PHP plugin with the `#[AiAgent]` attribute that hand-rolls its own control flow and calls three YAML sub-prompts through `runSubAgent()`: - `prompts/eca/determineTask.yml` — triage step that classifies the request as `create` / `edit` / `info` / `fail`. - `prompts/eca/buildModel.yml` — builds the ECA model JSON (create or edit). - `prompts/eca/answerQuestion.yml` — answers questions about existing models / compon… ### [Add ECA execute action for Rerank](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585007) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::task, priority::normal Description: ### Problem/Motivation The AI module's `Rerank` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `Rerank` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\Rerank` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_rerank` - Builds the matching Input class from `Drupal\ai\OperationType\Rerank\` and dispatches it through the configured provider. - Add a `Kernel\Pl… ### [Add AI ECA Interceptor submodule: intercept AI requests/responses through ECA](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3584407) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: Ahmad Khader (Ahmad-Khader) | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !8 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: New submodule that exposes AI request/response/stream/failure events to ECA as first-class Events, Conditions, and Actions. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation The AI module dispatches a rich set of events around provider calls (PreGenerateResponseEvent, PostGenerateResponseEvent, PostStreamingResponseEvent) and exposes typed exceptions for rate limits, quotas, unsafe prom… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- - [c7618d43](https://git.drupalcode.org/project/ai_integration_eca/-/commit/c7618d43050f3d048b253f631b7963b4e7e8f801) Resolve "9 different new actions" — Marcus Johansson (2026-08-05T13:28:16.000+00:00) - [c96433cc](https://git.drupalcode.org/project/ai_integration_eca/-/commit/c96433cc67fb39a36b27457c69055f0e858f2576) Resolve "Migrate the ECA agent to the Tools + ReAct architecture (create-only)" — Marcus Johansson (2026-08-05T12:56:03.000+00:00) ======================================================================== ## [4] summariseModule:ai_provider_anthropic:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Anthropic Provider (machine name: ai_provider_anthropic) Reporting period: last 24h (2026-08-05T05:00:07+00:00 to 2026-08-06T05:00:07+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: Carlos Ospina (camoa), Mykola Podpriatov (nickolaj)". 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

        Anthropic 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). (none) --- MERGE REQUESTS (24h) --- ### [Issue #3568617: Added GitLab issue templates (Bug, Feature request...](https://git.drupalcode.org/project/ai_provider_anthropic/-/merge_requests/23) State: closed | Author: Mykola Podpriatov (nickolaj) | Branch: 3568617-add-ai-usage | 112 diff lines Description: Closes #3568617 ### [Issue #3607960: Add token counting, citations, and context management](https://git.drupalcode.org/project/ai_provider_anthropic/-/merge_requests/35) State: opened | Author: Carlos Ospina (camoa) | Branch: 3607960-add-token-counting | 1930 diff lines Description: ## Summary Phase 3 of the native SDK integration meta ([#3572138](https://www.drupal.org/project/ai_provider_anthropic/issues/3572138)): adds **token counting**, **citations**, and **context management (compaction + editing)**. All three features are opt-in via new admin form sections and default off; the GA chat path is behaviorally unchanged when they are disabled (live-verified). ## What changed - **Token counting** — public `AnthropicProvider::countTokens(ChatInput|array, string): int` backed by `$client->messages->countTokens()`. Provider-native method (drupal/ai 1.4 has no token-count… --- COMMITS (24h) --- (none) ======================================================================== ## [5] summariseModule:ai_provider_azure:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Microsoft Azure AI (machine name: ai_provider_azure) Reporting period: last 24h (2026-08-05T05:00:07+00:00 to 2026-08-06T05:00:07+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: Peter Törnstrand (peter_tornstrand)". 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

          Microsoft Azure AI

          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). (none) --- MERGE REQUESTS (24h) --- ### [Alter description for model ID field in AzureProvider form to make clear the...](https://git.drupalcode.org/project/ai_provider_azure/-/merge_requests/23) State: merged 2026-08-05 | Author: Peter Törnstrand (peter_tornstrand) | Branch: 3572778-unknown-model | 234 diff lines Description: Alter description for model ID field in AzureProvider form to make clear the entered value will be used in Azure requests. Closes #3572778 --- COMMITS (24h) --- (none) ======================================================================== ## [6] summariseModule:ai_vdb_provider_postgres:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Postgres VDB Provider (machine name: ai_vdb_provider_postgres) Reporting period: last 24h (2026-08-05T05:00:07+00:00 to 2026-08-06T05:00:07+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: calmforce [1], Ignacio Pérez Puertas (djnash2002) [1], Mykola Podpriatov (nickolaj), Sergiu Nagailic (Nikro)". 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

            Postgres VDB 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). (none) --- MERGE REQUESTS (24h) --- ### [Issue #3568632: Added GitLab issue templates (Bug, Default, Featur...](https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/merge_requests/18) State: closed | Author: Mykola Podpriatov (nickolaj) | Branch: 3568632-add-ai-usage | 112 diff lines Description: Closes #3568632 ### [fix: #3609274 Cosine vectorSearch() defeats the embedding index it creates](https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/merge_requests/29) State: merged 2026-08-05 | Author: Sergiu Nagailic (Nikro) | Branch: 3609274-cosine-vectorsearch-defeats | 30 diff lines Description: Closes #3609274 ### [Issue #3586862 by ignacio.perez.puertas: Re-apply Attributes columns after clear+reindex cycle](https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/merge_requests/24) State: merged 2026-08-05 | Author: Ignacio Pérez Puertas (djnash2002) | Branch: 3586862-clearreindex-drops-columns | 40 diff lines Description: Closes #3586862 ### [Issue #3553475: Fix query in deleteFromCollection().](https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/merge_requests/14) State: merged 2026-08-05 | Author: calmforce | Branch: 3553475-deletion-of-chunks | 51 diff lines Description: Closes #3553475 --- COMMITS (24h) --- - [62b4b9f8](https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/commit/62b4b9f89cc75605f3631bf125e090c5a99fdf5e) fix: #3609274 Cosine vectorSearch() defeats the embedding index it creates — Sergiu Nagailic (2026-07-08T16:25:59.000+02:00) - [98701a13](https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/commit/98701a13739b28b78493c7104b1c3b477d14de0a) Issue #3586862 by ignacio.perez.puertas: Re-apply Attributes columns after clear+reindex cycle — Ignacio Pérez Puertas (2026-08-05T14:57:41.000+00:00) - [8582cb6f](https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/commit/8582cb6f7cea4d785c9db60ca4a68d2ca494dcd4) Issue #3553475: Fix query in deleteFromCollection(). — calmforce (2026-08-05T14:52:20.000+00:00) ======================================================================== ## [7] 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-08-05T05:00:07+00:00 to 2026-08-06T05:00:07+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: AKHIL BABU (AkhilBabu) [2], Alexis Martínez (alexismmd), Bharat Kelotra (bharatkelotra), Marcus Johansson (Marcus_Johansson)". 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 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). ### [If only one tool, cannot delete it, gives an error: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php) & more](https://git.drupalcode.org/project/ai_agents/-/work_items/3586058) State: opened | Updated: 2026-08-05 | Author: Rob Sembrat (FizCS3) | Assigned: unassigned | Labels: Quick Win, category::bug, priority::minor, state::needsReview Description: Am on Drupal 11.3.16, PHP 8.4, ai 1.4.5, ai_agents 1.3.2 If my AI Agent has one tool, and I try to delete it using its trashcan icon at the upper right, the tool still remains... If I then Save the AI Agent, and go back into it, the following errors/warnings appear at the top: ``` Warning: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php). Warning: Trying to access array offset on null in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibra… ### [AI Agents 1.3.3 release](https://git.drupalcode.org/project/ai_agents/-/work_items/3586069) State: closed | Updated: 2026-08-05 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: category::task, priority::normal, state::fixed ### [Use streamed chat for agents](https://git.drupalcode.org/project/ai_agents/-/work_items/3538174) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: Sergiu Nagailic (Nikro) | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::task Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !165 >>> Problem/Motivation We are making streamed chat possible in #3528549: Allow tool calling in streamed chat. This should make it possible to use it with agents. Steps to reproduce Proposed resolution Implement a solution based on #3528549: Allow tool calling in streamed chat Remaining tasks User interface changes API changes Data model changes ### [Research Scratchboards](https://git.drupalcode.org/project/ai_agents/-/work_items/3576571) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: Ahmad Khader (Ahmad-Khader) | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::task Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !247 >>> Problem/Motivation One big problem we have right now is to move context between agents. We have Artifact Storage that is a way of forwaring tool output into another tools input as an variable. We also have the possibility to Return Directly with a tool being called. However for multi agent setups, we have the issue that a child agent might need to write out summarized tokens to pass onto another agent, or the return directly from the tool is just too much context for what is … ### [Tool settings popup on agent edit form has no visible close/save button](https://git.drupalcode.org/project/ai_agents/-/work_items/3586066) State: closed | Updated: 2026-08-05 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, Novice, Quick Win Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !335 [Tool settings popup on agent edit form has no visible close/save button](https://git.drupalcode.org/project/ai_agents/-/merge_requests/335) | State: merged 2026-08-05 | Author: AKHIL BABU (AkhilBabu), 95 diff lines Description: ## Problem/Motivation The tool-configuration popup on the agent edit form (`/admin/config/ai/tools-automation/agents/{agent}/edit/form`, click **Configure** under a tool) has no visible way to close or save it. The popup is a MicroModal (`css/micromodal.css`, `js/agents_form.js`) introduced in #3559183 / !213. Its header renders a close control: ```php // src/Form/AiAgentForm.php, createToolUsageForm() '' ``` `data-micromodal-close` makes it functional, but nothing renders it visibly. `css/micromodal.css` only draws the "✕" glyph on `.ai-modal__close:before`: ```css .ai-modal__header .ai-m… ### [Add note on structured output](https://git.drupalcode.org/project/ai_agents/-/work_items/3550160) State: closed | Updated: 2026-08-05 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::task Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !219 >>> Problem/Motivation There are some models, that simply will not work with the combination of tool calling and structured output, because they are using the same engine for it. So its one or the other, or a fauly tool with Claude for instance. The known providers that has problems with this is Mistral and Claude. Proposed resolution Write a note under structured output, that certain providers will not be able to output structured output, so it should be used sparsly. We should … ### [PHPUnit CI job fails (exit code 1) for every test class despite all assertions passing](https://git.drupalcode.org/project/ai_agents/-/work_items/3586053) State: closed | Updated: 2026-08-05 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 2026Sprint14, AI Initiative Sprint, ai::inside, category::bug Description: ## Problem The `phpunit` CI job fails on merge requests even though every individual test **passes all its assertions**. Observed on [!300](https://git.drupalcode.org/project/ai_agents/-/merge_requests/300), pipeline https://git.drupalcode.org/project/ai_agents/-/pipelines/888950, job https://git.drupalcode.org/project/ai_agents/-/jobs/10938828. The `run-tests.sh` summary shows every single test class in the module — not just ones touched by the MR — finishing with all tests passed but a non-zero subprocess exit code: ``` 3.173s Drupal\Tests\ai_agents\Functional\AiAgentsMenuLinkTest … ### [AiAgentEntityWrapper::fromArray() fatals when the serialized chat history contains an image](https://git.drupalcode.org/project/ai_agents/-/work_items/3586067) State: closed | Updated: 2026-08-05 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::bug Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !333 [AiAgentEntityWrapper::fromArray() fatals when the serialized chat history contains an image](https://git.drupalcode.org/project/ai_agents/-/merge_requests/333) | State: merged 2026-08-05 | Author: AKHIL BABU (AkhilBabu), 212 diff lines Description: ## Problem `AiAgentEntityWrapper::toArray()` and `::fromArray()` do not round-trip a chat history containing files. Restoring an agent whose stored history includes an image throws: ``` Error: Call to a member function toArray() on array in Drupal\ai\OperationType\Chat\ChatMessage->toArray() (line 301 of modules/contrib/ai/src/OperationType/Chat/ChatMessage.php) Drupal\ai_agents\PluginBase\AiAgentEntityWrapper->getContextTools() Drupal\ai_agents\PluginBase\AiAgentEntityWrapper->fromArray() ``` `ChatMessage::toArray()` serializes each file through `AbstractFileBase::toArray()`, so the store… ### [Add a per-tool setting to restrict a tool from being called more than once per response](https://git.drupalcode.org/project/ai_agents/-/work_items/3586051) State: closed | Updated: 2026-08-05 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 2026Sprint14, AI Initiative Sprint, ai::inside, category::feature Description: ## Summary Add a per-tool agent setting — "Restrict model from calling this tool more than once in a response." When enabled for a tool, if a single model response contains more than one call to that tool, execute none of the response's tool calls and return a configurable error message so the agent retries on the next step. Tools without the setting are unaffected and may still be called multiple times. ## Why A step-wise, externally-driven agent needs certain tools to run at most once per step, so each call can build on the previous call's result. Canvas's client-side orchestration loop r… ### [Add test coverage for externally-driven execution (setLooped(FALSE))](https://git.drupalcode.org/project/ai_agents/-/work_items/3586052) State: closed | Updated: 2026-08-05 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 2026Sprint14, AI Initiative Sprint, ai::inside, category::task Description: ## Summary Add kernel-test coverage for `setLooped(FALSE)` — the mode where the agent parks its tool call and returns after one decision, leaving the caller to drive the next step. The behavior exists and is relied upon, but is untested. ## Why `setLooped(FALSE)` lets a caller run an agent one decision at a time instead of looping to completion inside one request. Canvas's client-side orchestration loop depends entirely on this. Because it is undocumented and uncovered, an unrelated change could silently break every externally-driven consumer. Locking it with tests protects the contract. -… ### [Disable hostname filtering does not work when looping is off](https://git.drupalcode.org/project/ai_agents/-/work_items/3586061) State: closed | Updated: 2026-08-05 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: category::bug, priority::normal, state::fixed Description: ### Problem/Motivation An agent with `hostname_filter_disabled: TRUE` gets a `HostnameFilterDto(fullTrust: TRUE)`, but only on the `ChatInput` of a single provider call. `ProviderProxy` applies it before invoking the provider and restores the previous state in a `finally`, so the override lives exactly as long as that one `chat()` call. With looping enabled the whole run happens inside that window. Tool-call arguments are built by the provider during `chat()`, so `ToolsPropertyResult::setValue()` sees full trust and the model's text is returned as-is. With looping off (`setLooped(FALSE)`) t… ### [Give a parent agent possibility to forward request as is](https://git.drupalcode.org/project/ai_agents/-/work_items/3550098) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: Rodel Duterte (rduterte) | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> Problem/Motivation Many time a user is actually asking an orchestration agent just one instruction for one specific agent. Depending on how well the prompt is, there might be loss of information when this is forwarded to the subagent. If the parent knows that it should just forward the request as is, then it should be able to give this as a token instead. This helps both with consistency, but also costs and speed, since it will just output one token. Proposed resolution Create a token that th… ### [Make it possible to pick providers per agent](https://git.drupalcode.org/project/ai_agents/-/work_items/3535760) State: closed | Updated: 2026-08-05 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !202 >>> Problem/Motivation Currently the agent is using the default Chat with Tools provider, which in most cases are good. But you might want to split this up, so you only for instance use a top of the line model for the overriding assistant, while each agent might be able to solve their results using some smaller models. Currently its solvable using events, but it should be part of the normal agent form. Since configurations, specifically temperature matters, we need a way to also … ### [Expose the agent status stream as MCP-shaped progress to any chat consumer](https://git.drupalcode.org/project/ai_agents/-/work_items/3586072) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: category::feature, state::postponed Description: > ⚠️ **Postponed pending approval.** Part of the [Chat Fundamentals plan](https://git.drupalcode.org/project/ai/-/work_items/3586640); awaits maintainer approval ([approval issue](https://git.drupalcode.org/project/ai/-/work_items/3586639)). Targets the **1.6.x branches of ai and ai_agents once created**. Opt-in. **Depends on:** the [meta plan's conventions](https://git.drupalcode.org/project/ai/-/work_items/3586640); soft-depends on the [`_meta` key registry (#3586643)](https://git.drupalcode.org/project/ai/-/work_items/3586643). Independent of the ChatProcessor child issues. ### Problem/Mo… ### [Vetoable AgentToolPreExecuteEvent and annotation-driven pre-tool confirmation via elicitation](https://git.drupalcode.org/project/ai_agents/-/work_items/3586071) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: category::feature, state::postponed Description: > ⚠️ **Postponed pending approval.** Part of the [Chat Fundamentals plan](https://git.drupalcode.org/project/ai/-/work_items/3586640); awaits maintainer approval ([approval issue](https://git.drupalcode.org/project/ai/-/work_items/3586639)). Targets the **1.6.x branches of ai and ai_agents once created**. Strictly opt-in. **Depends on (ai project):** [tool annotations (#3586642)](https://git.drupalcode.org/project/ai/-/work_items/3586642), [elicitation contract (#3586646)](https://git.drupalcode.org/project/ai/-/work_items/3586646). ### Problem/Motivation `AgentToolPreExecuteEvent` (`ai_age… ### [Preserve structured tool output as content blocks through the agent loop](https://git.drupalcode.org/project/ai_agents/-/work_items/3586070) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: category::feature, state::postponed Description: > ⚠️ **Postponed pending approval.** Part of the [Chat Fundamentals plan](https://git.drupalcode.org/project/ai/-/work_items/3586640); awaits maintainer approval ([approval issue](https://git.drupalcode.org/project/ai/-/work_items/3586639)). Targets the **1.6.x branches of ai and ai_agents once created**. **Depends on (ai project):** [ContentBlockProducerInterface + tool annotations (#3586642)](https://git.drupalcode.org/project/ai/-/work_items/3586642), [content blocks (#3586643)](https://git.drupalcode.org/project/ai/-/work_items/3586643), [structured response channel (#3586644)](https://gi… ### [No way to limit the size of files passed to an agent](https://git.drupalcode.org/project/ai_agents/-/work_items/3586068) State: opened | Updated: 2026-08-05 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: why::needsInfo Description: ## Problem Agents accept files onto the chat history, and no path applies a size limit. There is no configuration for a maximum size, and no check anywhere in the module. A site that needs one has to validate file sizes itself, before the file ever reaches the agent, and every integration has to reimplement that. Files are also carried in chat history and base64-encoded on every serialization, so the cost is not limited to the single request that introduced them. ## Proposed solution Would it make sense to make this a config on the agent, alongside the other per-agent limits? A per-agent… ### [Create implementation of ShortTermMemory](https://git.drupalcode.org/project/ai_agents/-/work_items/3546411) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !183 >>> Problem/Motivation Short term memory is now available here: #3528730: Create ShortTermMemoryPlugin We should add an integration with it. Proposed resolution Add a parameter to the agent config to save the short term memory config. Add a subform integration for saving the configuration, while editing the AI Agent. Assume no ShortTermMemory by default. Trigger ShortTermMemory after the request event. ### [Add limits on how often a tool can run](https://git.drupalcode.org/project/ai_agents/-/work_items/3547995) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, ai::inside Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !224 >>> Problem/Motivation Right now we have to tell the system prompt how often it is allowed to use a specific tool. But there should also be a determenistic way, where if the tool gets stuck in a loop or searches to no awail in a RAG database for instance, we need to be able to programatically say how many times a tool can run. Proposed resolution Add a form value of how many times a tool can run. Add a form for setting the error message when this happens. If the tool has run tha… --- MERGE REQUESTS (24h) --- ### [Resolve ""ai_agent" entity type did not specify a list_builder handler."](https://git.drupalcode.org/project/ai_agents/-/merge_requests/334) State: opened | Author: Bharat Kelotra (bharatkelotra) | Branch: 3563198-ai_agent-entity-type-did-not-specify-list_builder-handler | 2883 diff lines Description: Closes #3563198 ### [Issue #3586065: Prevent undefined array key warning when parameters is missing](https://git.drupalcode.org/project/ai_agents/-/merge_requests/331) State: opened | Author: Alexis Martínez (alexismmd) | Branch: 3586065-warning-undefined-array-key-parameters-en-drupalai-agentspluginbaseaiagententitywrapper-getdefaultinformationtools-lnea-1038-de | 21 diff lines Description: Closes #3586065 ### [feat: #3546411 use short term memory plugins in the agent loop](https://git.drupalcode.org/project/ai_agents/-/merge_requests/321) State: opened | Author: Marcus Johansson (Marcus_Johansson) | Branch: short-term-memory-1-4 | 1499 diff lines Description: Agents can now pick one of the AI modules short term memory plugins and configure it, so that a long running agent can summarize or truncate the conversation instead of running out of context. The plugin only decides what a single request looks like. The agent keeps its complete conversation in $chatHistory, since it needs it to keep track of tool calls and their results, and hands that over as the original history. What the plugin produced on the previous loop is handed back as the current history, so plugins like the summarizer can build on their own earlier work, and it is serialized along… ### [Issue#3556533:Normalize-Standalone-Line-Endings-Property_restrictions-Form fixes](https://git.drupalcode.org/project/ai_agents/-/merge_requests/332) State: opened | Author: Bharat Kelotra (bharatkelotra) | Branch: 3556533-Normalize-Standalone-Line-Endings-Property_restrictions-Form | 2214 diff lines Description: Closes #3556533 --- COMMITS (24h) --- - [5da180ff](https://git.drupalcode.org/project/ai_agents/-/commit/5da180ff15e216e7c100c120c08f8902fdb7ffdd) bug: #3586066 Tool settings popup on agent edit form has no visible close/save button — AKHIL BABU (2026-08-05T11:24:45.000+00:00) - [60dcae14](https://git.drupalcode.org/project/ai_agents/-/commit/60dcae14547930d74327aa5d02682d2374aa3c5c) bug: #3586067 AiAgentEntityWrapper::fromArray() fatals when the serialized chat history contains an image — AKHIL BABU (2026-08-05T06:54:14.000+00:00) ======================================================================== ## [8] 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-08-05T05:00:07+00:00 to 2026-08-06T05:00:07+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_17a61b0edeafd5a3db3e8b2462b6c010), **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Adam G-H (phenaproxima), AKHIL BABU (AkhilBabu) [1], Ben Mullins (bnjmnm), Bálint Kléri (balintbrews), Chandan Singh (chandu7929), Dave Long (longwave), David Bravo (davidbp), Harumi Jang (hooroomoo) [1], Jakub Piasecki (zaporylie) [1], Juan Correa (jucs7), Kunal Sachdev (kunal.sachdev), Matt Glaman (mglaman), Rajab Natshah (RajabNatshah), Rajendar Pothireddypally (RajendarReddy), wotnak [2]". 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-08-06 | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Assigned: unassigned | Labels: projectManagement 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: No github.com token has been configured. Skipping release notes retrieval - ⚠️ WARN: No tool releases found. ## Deprecations / Replacements > ⚠️ **Warning** > The following dependencies are either deprecated or have replacements available. | Datasource | Package | Replacement MR? | … ### [Canvas AI: Send resolved prop values with current_layout, on both request paths](https://git.drupalcode.org/project/canvas/-/work_items/3591883) State: opened | Updated: 2026-08-06 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 1.x-dev, 2026Sprint15, AI Initiative Sprint, ai Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1472 [#3591883 Canvas AI: Send resolved prop values with current_layout, on both request paths](https://git.drupalcode.org/project/canvas/-/merge_requests/1472) | State: opened | Author: Juan Correa (jucs7), 77 diff lines Description: ## Summary The dev chat describes the page to the AI in two request parameters. `current_layout` gives the component tree — component name, UUID and nested slots — and a second parameter, `layout`, gives every component's prop values as a flat map keyed by UUID. Merge the two: each component in `current_layout` carries its own prop values, and `layout` is no longer sent. Also send `current_layout` on file-upload requests, which today send no layout at all. A single parameter that describes both the structure and the content of the page is what an agent needs in order to reason about it — it… ### [Allow fields to be added to the page entity type](https://git.drupalcode.org/project/canvas/-/work_items/3568228) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: unassigned | Labels: category::task, page, priority::normal, state::accepted Description: >>> [!note] Migrated issue Reported by: [catch](https://www.drupal.org/user/35733) >>> Overview Discussed in this slack thread: https://drupal.slack.com/archives/C072JMEPUS1/p1768606306603599 It's a very common use case to add field UI fields to entities for non-content purposes. A use case already in the canvas issue queue is https://git.drupalcode.org/project/canvas/-/work_items/3544662 where the metatags field has been added as a base field (and therefore not removable), but instead could be omitted and added by sites that needed. Other cases are things like 'hide from search results' o… ### [Brand Kit color support](https://git.drupalcode.org/project/canvas/-/work_items/3591838) State: opened | Updated: 2026-08-05 | Author: Ben Mullins (bnjmnm) | Assigned: Ben Mullins (bnjmnm) | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1385 [#3591838 brand kit color implementation](https://git.drupalcode.org/project/canvas/-/merge_requests/1385) | State: opened | Author: Ben Mullins (bnjmnm), 7502 diff lines - MR !1432 [Draft: #3591838 [PHASE 2] introduce color props](https://git.drupalcode.org/project/canvas/-/merge_requests/1432) | State: opened | Author: Ben Mullins (bnjmnm), 11747 diff lines Description: ## Brand Kit: Color management ### Summary Add a Color entity type to Brand Kit, enabling brand owners to define, organize, and manage a color palette globally. This is the foundational layer — color props on components (allowing editors to select brand colors when configuring components) will follow in a later issue. ### What this adds - **Color entity type** using the [W3C color design tokens spec](https://www.designtokens.org/tr/2025.10/color/#srgb-linear) for storing color values, along with a human-readable name and CSS variable name. - **Brand Kit panel** — colors tab in Brand Kit fo… ### [Support pushing code components from a headless codebase](https://git.drupalcode.org/project/canvas/-/work_items/3591912) State: opened | Updated: 2026-08-05 | Author: Harumi Jang (hooroomoo) | Assigned: Harumi Jang (hooroomoo) | Labels: cliTool, headless Description: We need to mark code components from a headless repo with `type: external` and support pushing them to Canvas with the CLI Tool. ### [CKEditor links fail due to missing 'allow-forms' in ExtensionPage iframe sandbox](https://git.drupalcode.org/project/canvas/-/work_items/3591911) State: opened | Updated: 2026-08-05 | Author: Joris Claes (jorisclaes) | Assigned: unassigned | Labels: Description: # Description When using the `canvas` module in combination with `canvas_translate`, adding links through the CKEditor interface fails. The `canvas_translate` module imports CKEditor via `@ckeditor/ckeditor5-react`. This renders the extension inside an iframe with a restricted sandbox attribute: ```html ``` Because CKEditor uses a form to add links, the browser blocks this action due to the missing `allow-forms` permission in the sandbox configuration. # Proposed Solution / Workaround Adding `allow-forms` to the sandbox attribute fixes the issue entirely. I patched this locally in **`ca… ### [Return flexible codebase files to local environment on canvas pull](https://git.drupalcode.org/project/canvas/-/work_items/3591862) State: closed | Updated: 2026-08-05 | Author: Harumi Jang (hooroomoo) | Assigned: Harumi Jang (hooroomoo) | Labels: cliTool Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1443 [feat(CLI Tool): Return flexible codebase files to local environment on canvas pull](https://git.drupalcode.org/project/canvas/-/merge_requests/1443) | State: merged 2026-08-05 | Author: Harumi Jang (hooroomoo), 2524 diff lines Description: When a user runs npx canvas pull, the command should return flexible codebase files back to their local environment. Examples of files that should be returned: src/lib directory, package.json, other flexible codebase artifacts relevant to the project. ### [DefaultImagePreview renders the video src in an img tag instead of the poster](https://git.drupalcode.org/project/canvas/-/work_items/3591910) State: opened | Updated: 2026-08-05 | Author: Matt Glaman (mglaman) | Assigned: unassigned | Labels: Needs review Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1468 [Issue #3591910: DefaultImagePreview renders the video src in an img tag instead of the poster](https://git.drupalcode.org/project/canvas/-/merge_requests/1468) | State: opened | Author: Matt Glaman (mglaman), 227 diff lines Description: ## Overview `DefaultImagePreview` renders a broken thumbnail for code component props shaped by `json-schema-definitions://canvas.module/video`. The component casts `default_values.resolved` to `CodeComponentPropImageExample` and renders `` (`ui/src/components/form/components/DefaultImagePreview.tsx`). For video props, `src` is the video file URL, so the browser cannot render it as an image. The `poster` property holds the image URL, but nothing on the preview path reads it. ### Steps to reproduce 1. Create a code component with a required `video` prop using `$ref: json-schema-definitions:/… ### [User cannot publish changes for the unpublish page action on source](https://git.drupalcode.org/project/canvas/-/work_items/3591909) State: opened | Updated: 2026-08-05 | Author: Chandan Singh (chandu7929) | Assigned: Chandan Singh (chandu7929) | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1467 [User cannot publish changes for the unpublish page action on source.](https://git.drupalcode.org/project/canvas/-/merge_requests/1467) | State: opened | Author: Chandan Singh (chandu7929), 100 diff lines - MR !1466 [Draft: Resolve "User cannot publish changes for the unpublish page action on source"](https://git.drupalcode.org/project/canvas/-/merge_requests/1466) | State: closed | Author: Chandan Singh (chandu7929) Description: User cannot publish changes after unpublishing a page: - Create a canvas page named 'Test Page'. - Publish changes. - Go to canvas, open the page listing dropdown, and unpublish page 'Test Page'. - Publish changes. ### [Canvas AI: page builder discards the whole build when the LLM names a region that does not exist](https://git.drupalcode.org/project/canvas/-/work_items/3591876) State: opened | Updated: 2026-08-05 | Author: Rajab Natshah (RajabNatshah) | Assigned: Ricardo Castañeda (cadence96) | Labels: 2026Sprint15, AI Initiative Sprint, ai, ai::inside Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1423 [fix: #3591876 Fall back to first region when the AI names a region that does not exist](https://git.drupalcode.org/project/canvas/-/merge_requests/1423) | State: opened | Author: Rajab Natshah (RajabNatshah), 501 diff lines Description: ## Problem/Motivation `CanvasAiPageBuilderHelper` throws when the AI names a target region that is not present in the current layout: ``` Region "%s" not found in layout ``` The LLM commonly guesses a generic region name that does not exist on the entity's actual layout (for example `content` capitalized, `0`, or `header` on a single-region layout). The exception aborts the entire page-build operation, so the whole AI response is discarded instead of degrading gracefully into a usable page. ## Steps to reproduce 1. Use the Canvas AI page builder to add components on a page whose layout do… ### [Canvas AI: Run the component agent in the dev chat with setLooped(FALSE), driven by the browser](https://git.drupalcode.org/project/canvas/-/work_items/3591884) State: closed | Updated: 2026-08-05 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 1.x-dev, 2026Sprint15, AI Initiative Sprint, ai Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1461 [Issues/3591884: Run component agnet with setlooped false.](https://git.drupalcode.org/project/canvas/-/merge_requests/1461) | State: merged 2026-08-05 | Author: AKHIL BABU (AkhilBabu), 3103 diff lines Description: ## Summary `CanvasDevAiBuilder::render()` returns a hard-coded mocked response. Replace it with a copy of the live `CanvasBuilder::render()` that runs the Canvas component agent with **`$agent->setLooped(FALSE)`**, so the agent stops after each model decision instead of looping to completion inside one request. The controller serializes the paused agent to the tempstore, returns `should_continue`, and `AiWizardDev.tsx` re-POSTs with a freshly built page context until `should_continue` is `FALSE`. ## Why With looping on (the `ai_agents` default), one HTTP request runs the agent until it is f… ### [Content template preview is blank for every non-full view mode](https://git.drupalcode.org/project/canvas/-/work_items/3591908) State: closed | Updated: 2026-08-05 | Author: Jakub Piasecki (zaporylie) | Assigned: unassigned | Labels: category::bug, priority::major, state::fixed Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1465 [Don't collapse the preview iframe when a view mode's height comes from its content](https://git.drupalcode.org/project/canvas/-/merge_requests/1465) | State: merged 2026-08-05 | Author: Jakub Piasecki (zaporylie), 49 diff lines Description: iframe stuck at inline height: 0px since #3588074 Editing a content template for any view mode other than `full` (teaser, card, search index, or any custom view mode) shows a blank white preview. The component tree renders correctly and the overlay/layers UI is fully functional - components can be selected, the geometry is correct, and the layers panel shows the real tree - but nothing is visible in the preview canvas. The `full` view mode is unaffected. … ### [Cypress E2E parallel split balances by file count, not runtime — distribute by tagging slow/flaky specs](https://git.drupalcode.org/project/canvas/-/work_items/3591907) State: opened | Updated: 2026-08-05 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito) | Labels: DX (Developer Experience), category::task, flaky tests, priority::normal Description: ### Overview The `cypress E2E` CI job runs with `parallel: 4`, but the four nodes finish at very different times. Across the last 5 `1.x` pipelines that ran it, the slowest node took **12:54–27:36** while the fastest finished in **4:55–8:00** — a 2–3× spread. Because a parallel stage only completes when its slowest node does, the whole E2E stage is paced by one overloaded node while others sit idle. The cause is the spec-distribution logic in `ui/tests/support/parallel.js`. It sorts the 46 spec files alphabetically and deals them round-robin (`index % CI_NODE_TOTAL`), which balances the **nu… ### [Canvas AI: Add Tools dropdown to chat UI](https://git.drupalcode.org/project/canvas/-/work_items/3591856) State: opened | Updated: 2026-08-05 | Author: AKHIL BABU (AkhilBabu) | Assigned: David Bravo (davidbp) | Labels: 1.x-dev, 2026Sprint15, AI Initiative Sprint, ai Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1447 [Draft: Resolve "Canvas AI: Add Tools dropdown to chat UI"](https://git.drupalcode.org/project/canvas/-/merge_requests/1447) | State: opened | Author: David Bravo (davidbp), 530 diff lines Description: ## Background — how Canvas AI works today The Canvas AI chat is an **orchestrator system**. Every message goes first to a single orchestrator agent. The orchestrator reads the message, infers the intent, and launches the matching sub-agent: - "Build me a landing page" → orchestrator → page-builder sub-agent - "Create a React component" → orchestrator → component sub-agent - "Write a title / meta description" → orchestrator → the relevant sub-agent The routing is implicit — the user never chooses which sub-agent runs; the orchestrator decides on every turn. Roadmap: https://git.drupalcode.o… ### [Missing upgrade path: stored `default-relative-url` prop sources written before 1.8 contain `$id` and fail `DefaultRelativeUrlPropSource::parse()`](https://git.drupalcode.org/project/canvas/-/work_items/3591904) State: opened | Updated: 2026-08-05 | Author: Marco (marco.nett) | Assigned: unassigned | Labels: AI-accelerated, Needs update path, Regression, category::bug Description: ## Problem / Motivation After updating Canvas 1.4.1 → 1.8.0, opening the editor for any page whose component tree contains a `default-relative-url` prop source returns a 500 from `/canvas/api/v0/layout/{entity_type}/{id}`: ``` LogicException: Extraneous JSON Schema information detected: { "$id": "json-schema-definitions://canvas.module/image", ... } should have been just { ... } ``` ## Root cause - Canvas ≤ 1.4 stored the resolved JSON schema of `default-relative-url` prop sources including the `$id` keys the schema resolver emits (e.g. `json-schema-definitions://canvas.module/imag… ### [Replace Lupus CE API with a dedicated Canvas Headless endpoint](https://git.drupalcode.org/project/canvas/-/work_items/3591861) State: closed | Updated: 2026-08-05 | Author: wotnak | Assigned: wotnak | Labels: headless Description: Canvas Headless relies on the Lupus CE API `/ce-api` endpoint to retrieve routed content for decoupled frontends. This adds an unnecessary dependency on [Lupus Decoupled](https://www.drupal.org/project/lupus_decoupled) and limits Canvas control over the response contract. ### Proposed resolution Implement an equivalent routed-content endpoint in Canvas Headless using Custom Elements. Update the headless SDK to use the new endpoint and remove the Lupus dependency. ### User interface changes n/a ### [[META] Allow Canvas to be used on any content entity type (bundle), as long as it has certain entity type characteristics](https://git.drupalcode.org/project/canvas/-/work_items/3498525) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: unassigned | Labels: Configuration schema, Needs ADR, blocker, category::plan Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1462 [#3498525 Allow entity types other than node; add feature flag module for taxonomy terms.](https://git.drupalcode.org/project/canvas/-/merge_requests/1462) | State: closed | Author: Dave Long (longwave), 1190 diff lines Description: >>> [!note] Migrated issue Reported by: [longwave](https://www.drupal.org/user/246492) Related to !526 >>> Overview Since the prototype XB has only worked on article node types and there are hardcoded assumptions about this. We now have the Page entity as well but we should allow XB to work on all node types (and open the possibility for other entity types in the future as well). There is no design/UX for this yet but we know we will need to allow opting in for each bundle so we can start the work on this. Proposed resolution Eligibility criteria: a "title" field (entity key: label)) Ent… --- MERGE REQUESTS (24h) --- ### [chore(deps): update dependency cspell to v10](https://git.drupalcode.org/project/canvas/-/merge_requests/1273) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/major-cspell-monorepo | 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/) | |---|---|---|---| | [cspell](https://cspell.org/) ([source](https://github.com/streetsidesoftware/cspell/tree/HEAD/packages/cspell)) | [`^9.2.0` → `^10.0.0`](https://renovatebot.com/diffs/npm/cspell/9.7.0/10.0.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/cspell/10.0.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/cspell/9.7.0/10.0.1?slim=true) | > :exclamation: **I… ### [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) | >… ### [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](https://hub.docker.com/_/mysql) ([source](https://github.com/docker-library/mysql)) | service-image | minor | `8.0` → `8.4` | > :exclamation: **Important** > > Release Notes retrieval for this MR were skipped because no github.com credentials were available. > If you are self-hosted, please see [this instruction](https://github.com/renovatebot/renovate/blob/master/docs/usage/examples/self-hosting.md#githubcom-token-for-release-notes). --- ### Configuration 📅 **Schedule**: (UTC) - Br… ### [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 | 55 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](… ### [#3591875: "Translatable props missing from TMGMT form when component instances cannot be auto-updated to active version"](https://git.drupalcode.org/project/canvas/-/merge_requests/1418) State: opened | Author: Kunal Sachdev (kunal.sachdev) | Branch: 3591875-translatable-props-missing-from-tmgmt-form-when-component-instances-cannot-be-auto-updated-to-active-version | 986 diff lines Description: AI-Generated: Yes (Used Github Copilot(Claude Sonnet 4.6) for the solution and test coverage). ### [feat(Page builder): #3568228 Add field_ui_base_route support for Canvas Page entity](https://git.drupalcode.org/project/canvas/-/merge_requests/1471) State: opened | Author: Rajendar Pothireddypally (RajendarReddy) | Branch: feature/field-ui-base-route-support | 104 diff lines Description: ## Summary Adds Field UI support for the `canvas_page` entity type so sites can manage fields, form display, and view display via the standard Drupal Field UI at **Admin > Structure > Canvas page**. ## Changes - **`src/Entity/Page.php`** — Add `field_ui_base_route` to the `#[ContentEntityType]` attribute - **`canvas.routing.yml`** — Add `entity.canvas_page.field_ui_settings` route at `/admin/structure/canvas-page` - **`canvas.links.task.yml`** — Add local task so Field UI tabs render - **`canvas.links.menu.yml`** — Add menu link under Admin > Structure - **`src/Controller/CanvasPageFieldUiC… ### [feat(Headless): #3591893 Enable headless previews for content templates](https://git.drupalcode.org/project/canvas/-/merge_requests/1438) State: opened | Author: wotnak | Branch: 3591893-enable-headless-previews-for-content-templates | 1116 diff lines Description: Closes #3591893 - enables headless previews for content templates ## Testing - build ui and packages and enable canvas_headless - `npm run build` - `npm run packages:build` - `ddev drush cr` - `npm link -ws` - `ddev drush en canvas_headless` - create a headless app: `npx @drupal-canvas/create@latest --experimental-headless --template nextjs` - start headless app - `npm link @drupal-canvas/headless @drupal-canvas/headless-next @drupal-canvas/headless-react` (if using a template other than the nextjs, link `@drupal-canvas/headless` and framework adapter matching the template) - … ### [feat(CLI Tool): Push components as external metadata when the Headless SDK is present](https://git.drupalcode.org/project/canvas/-/merge_requests/1470) State: opened | Author: Harumi Jang (hooroomoo) | Branch: mark-external | 861 diff lines Description: #3591912 AI Disclosure: yes used Claude canvas push: support pushing components as type: external with their metadata when the Headless SDK is present - SDK detection: when @drupal-canvas/headless is in the project's dependencies or devDependencies, every discovered component is pushed as type: external. - Explicit opt-in: a type: external in a component's component.yml is honored the same way, with or without the SDK. The YAML file is never mutated — type is set on the API payload only. - Entry-less discovery: framework single-file components (.vue, .astro, .svelte) and other entry-less e… ### [feat: #3518272 support all entity types with configurable displays for content templates](https://git.drupalcode.org/project/canvas/-/merge_requests/791) State: opened | Author: Adam G-H (phenaproxima) | Branch: 3518272-field-ui-base-route | 2287 diff lines Description: Closes #3518272 . ### [Draft: fix(CLI Tool): #3591895 CLI pull does not choose .jsx or .tsx based on pulled source](https://git.drupalcode.org/project/canvas/-/merge_requests/1441) State: opened | Author: Bálint Kléri (balintbrews) | Branch: 3591895-cli-pull-jsx-vs-tsx | 207 diff lines Description: Closes #3591895. Authored with an AI coding agent. ### [#3591885: Add `document` object $ref for linking locally hosted documents](https://git.drupalcode.org/project/canvas/-/merge_requests/1433) State: opened | Author: Matt Glaman (mglaman) | Branch: 3591885-issue-branch | 1101 diff lines Description: Adds the `document` object `$ref` agreed in [#3524130, note 1678367](https://git.drupalcode.org/project/canvas/-/work_items/3524130#note_1678367), mirroring the shipped `video` shape point for point. **What this branch does** - `schema.json`: adds the `document` definition with `src` (required), `title`, `description`, `filename`, `filesize`, and `mimetype`. `src` carries `contentMediaType: application/*` — every agreed extension (`pdf doc docx xls xlsx ppt pptm pptx key ai indd`) resolves to the `application` MIME media type, and the wildcard is what makes field matching precise (see below)… ### [chore: version packages](https://git.drupalcode.org/project/canvas/-/merge_requests/1464) State: opened | Author: **** (project_19391_bot_17a61b0edeafd5a3db3e8b2462b6c010) | Branch: changeset-release/1.x | 518 diff lines Description: Automated merge request created from pending changesets. Merging it publishes the new package versions to npm. Do not commit to this branch manually; it is force-pushed on every push to 1.x. ### [fix(CLI Tool): #3591862 Add backward compatibility for codebase sync](https://git.drupalcode.org/project/canvas/-/merge_requests/1469) State: merged 2026-08-05 | Author: wotnak | Branch: 3591862-backward-compatibility | 148 diff lines Description: #3591862 Adds capability detection before updating the global asset library. When codebase sync is unsupported (asset library doesn't have packageJson and bundledSources fields), the CLI omits the new fields and sends a legacy-compatible payload to remain compatible with older Canvas versions. --- AI-Generated: Yes (Used AI coding agent to implement the fix). ### [feat(Headless): #3591861 Use the new Canvas content API endpoint in the headless SDK](https://git.drupalcode.org/project/canvas/-/merge_requests/1437) State: merged 2026-08-05 | Author: wotnak | Branch: 3591861-headless-sdk-new-canvas-content-api-endpoint | 2758 diff lines Description: #3591861 - Switches the headless SDK's draft-aware `fetchPage()` client from `/ce-api/{path}` to `/canvas/content-api`. - Adopts the Canvas endpoint's content, document-head, route, and redirect response contract. - Removes the now obsolete Lupus endpoint dependencies and the `/ce-api` auto-save controller override. ## SDK response handling `fetchPage(requestUri)` now returns: - `Page`, containing Canvas-rendered content when available, document-head data, and normalized route information. `route.managedByCanvas` indicates whether Canvas manages the route's complete component tree. - `ro… --- COMMITS (24h) --- - [f8f0617f](https://git.drupalcode.org/project/canvas/-/commit/f8f0617f7fcc1bc1ac71f5c2889d1b342971ff57) fix(CLI Tool): #3591862 Add backward compatibility for codebase sync — wotnak (2026-08-05T16:36:43.000+00:00) - [8933c5ea](https://git.drupalcode.org/project/canvas/-/commit/8933c5ea97ad91d3fe31bd8ba6a43c0dd22c3e36) feat(CLI Tool): Return flexible codebase files to local environment on canvas pull — Harumi Jang (2026-08-05T15:32:27.000+00:00) - [57382ce8](https://git.drupalcode.org/project/canvas/-/commit/57382ce8ad6b4387cf23eacecc259dbc2cc6142f) task(AI): #3591884 Canvas AI: Run the component agent in the dev chat with setLooped(FALSE), driven by the browser — AKHIL BABU (2026-08-05T13:09:04.000+00:00) - [7d65ac65](https://git.drupalcode.org/project/canvas/-/commit/7d65ac65861c86125a4f95d02fae66ee9064f698) fix(Page builder): #3591908 Content template preview is blank for every non-full view mode — Jakub Piasecki (2026-08-05T10:57:36.000+00:00) - [f16deaf7](https://git.drupalcode.org/project/canvas/-/commit/f16deaf7fb6a764ea3d91a0f0ddcc8e2541d4289) feat(Headless): #3591861 Use the new Canvas content API endpoint in the headless SDK — wotnak (2026-08-05T06:11:35.000+00:00) ======================================================================== ## [9] 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-08-05T05:00:07+00:00 to 2026-08-06T05:00:07+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: Juan Correa (jucs7), Kristen Pol (kepol), Tamas Balog (tbalog), Tekla Aivazashvili (aivazashvilit)". 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

                  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). ### [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-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint12, 2026Sprint13, 2026Sprint14, 2026Sprint15 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !195 [Issue #3586276: Rename entity bundle and target entity scope plugins for better DX](https://git.drupalcode.org/project/ai_context/-/merge_requests/195) | State: opened | Author: Tamas Balog (tbalog), 7194 diff lines 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… ### [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-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint13, 2026Sprint14, 2026Sprint15, AI Initiative Sprint Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !211 [Issue #3586271: Clean up CCC inconsistencies and DX issues before rc1 (part 3)](https://git.drupalcode.org/project/ai_context/-/merge_requests/211) | State: opened | Author: Juan Correa (jucs7), 3553 diff lines 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… ### [[Meta] CCC MVP 1.0 roadmap](https://git.drupalcode.org/project/ai_context/-/work_items/3567798) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint10, 2026Sprint11, 2026Sprint12, 2026Sprint15 Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> --- ## Problem/Motivation We need a stable release of CCC to support Drupal CMS that includes a lot of the ideas and features we've been discussing, including the 1-year plan capabilities. --- ## Proposed resolution Update issue list and work through them --- ## Target dates - March 23rd: Beta1 release - March 23rd to 27th: DrupalCon Chicago - May 10: Beta2 release - June 18: Beta3 release - July TBD: RC1 release - July TBD: 1.0 release --- ## Remaining tasks Milestones have the issues (both… ### [Update ai_context project page and docs based on new naming approach](https://git.drupalcode.org/project/ai_context/-/work_items/3586217) State: opened | Updated: 2026-08-05 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, ai::context, category::task, priority::normal Description: ## Problem/motivation Although people will likely continue to call it CCC rather than AI Context, we've decided to embrace a combined naming approach outlined here: #3556881 ## Solution Update the project page and README/docs to use this. ## Tasks - [ ] Update project page - [ ] Update README - [ ] Update docs if necessary ### [Create CCC video showing how to configure it](https://git.drupalcode.org/project/ai_context/-/work_items/3586153) State: opened | Updated: 2026-08-05 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, category::task, demo, priority::normal Description: Let's do this after beta3 is created: #3586295+s People have been having some trouble understanding how to set up CCC. Create a simple video for setting it up. ### [CCC QA scripts for 1.0 testing](https://git.drupalcode.org/project/ai_context/-/work_items/3586226) State: opened | Updated: 2026-08-05 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, blocker::stable, category::task, priority::major Description: ## Problem/motivation Need to make sure we're ready for the QA team to do pre-1.0 testing. ## Solution From Bruna Emerich (Zoocha): Documentation covering the functionality, along with a test script (such as the example in this ticket, where an .md file is included), is sufficient for us to carry out testing. If any questions come up, we’ll raise them directly in the channel and tag you. Regarding lead time, it depends on the size of the functionality, but generally one week’s notice is sufficient. If there’s a fixed release date, allowing around 14 days is preferable, as it gives enough … ### [Create CCC rc1 release](https://git.drupalcode.org/project/ai_context/-/work_items/3586151) State: opened | Updated: 2026-08-05 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: category::task, needs prioritization, priority::major, state::postponed Description: Problem/Motivation Create CCC rc1 release Tag: 1.0.0-rc1 Proposed resolution Create the release once at least the must-haves are done here: #3585902: CCC beta2 release planning Target date or deadline June 2026 Remaining tasks Wait on must-haves Tag code Create the release in UI Celebrate! AI usage (if applicable) [ ] AI Assisted Issue This issue was generated with AI assistance, but was reviewed and refined by the creator. [ ] AI Assisted Code This code was mainly generated by a human, with AI autocompleting or parts AI generated, but under full human supervision. [ ] AI Generated Code This… ### [[Discuss] Approach for CCC+agent integration testing](https://git.drupalcode.org/project/ai_context/-/work_items/3571117) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint16, category::plan, priority::major, sprint candidate Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> [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 need to test the integration of CCC+agents and possibly other things like the future review system. How can we build such a testing framework? Proposed resolution Discuss and figure out next steps Target date o… ### [Full QA of CCC in prep for 1.0](https://git.drupalcode.org/project/ai_context/-/work_items/3573716) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: unassigned | Labels: blocker::stable, category::task, needs prioritization, priority::major Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> [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 are getting close to creating an alpha or beta version and want to take a step back and do a full QA review before doing so. Proposed resolution Testing various features and finding bugs that would be good to f… ### [Persist context-item token counts and show token-budget usage in CCC UI](https://git.drupalcode.org/project/ai_context/-/work_items/3586379) State: opened | Updated: 2026-08-05 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::task, priority::major, sprint candidate Description: ## Summary Follow-up to: - #3586337+s - #3586348+s Implement the subscription-limit UX decisions from the Emma+Aidan review on #3586337. Persist each context item's estimated token count at save time, base token badges on percentage of the configured token budget, and add budget summary messaging on the agent subscription settings page. This issue implements the indicator behavior. It does not add new warning components beyond text, badges, and tooltips agreed in the design review. ## Problem Token counts on the context item listing are calculated on the fly from item content. That makes… ### [Decouple context item form descriptions from scope plugin descriptions](https://git.drupalcode.org/project/ai_context/-/work_items/3586361) State: opened | Updated: 2026-08-05 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !239 [Issue #3586361: Decouple context item form descriptions from scope plugin descriptions.](https://git.drupalcode.org/project/ai_context/-/merge_requests/239) | State: opened | Author: Tekla Aivazashvili (aivazashvilit), 756 diff lines Description: ## Problem/motivation Follow-up: #3586359 Scope plugin `getDescription()` text is currently reused in multiple UI contexts: 1. The scope overview page. 2. Individual scope settings pages. 3. Context item scope controls. These contexts can require different guidance. For example, the Global scope’s warning that saving a context item clears other scope settings is useful on the context item form but confusing on the scope overview and settings pages. The existing `getSubscriptionDescription()` method already provides context-specific text for agent subscription forms, but there is no equiv… ### [[Discuss] Review context selection ranking factors before 1.0](https://git.drupalcode.org/project/ai_context/-/work_items/3586365) State: opened | Updated: 2026-08-05 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::plan Description: ## Summary Before we ship 1.0, we should confirm that the current rules for choosing which context items reach an AI feature are the right set — and whether anything important is missing. This issue is a **discussion**. The goal is shared understanding of what the module does today, in plain language, so product/UX and engineering can decide together whether to add ranking factors before release. ## Background When someone uses an AI feature on the site, the module picks a small set of **context items** (brand voice, writing rules, section-specific guidance, etc.) and attaches them to the … ### [[Meta] CCC cleanup and API hardening from code review findings for beta4](https://git.drupalcode.org/project/ai_context/-/work_items/3586309) State: opened | Updated: 2026-08-05 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint15, AI Initiative Sprint, ai::context, category::plan Description: ## Problem/motivation Follow-up to: #3586294+s ### New docs Since I had fable 5 review both 1.0.x and the MR branch for #3586218+ at the same time, it didn't really differentiate where the problems were. Many of the problems were for #3586218+ which should be fixed in that issue since it's not merged yet. I've added the info to that issue's MR. Here are the new docs for all problems that aren't for #3586218+: [ai_context-beta4-1.0.x-issues.md](https://git.drupalcode.org/-/project/191993/uploads/69d239d43391b757cc440a9e04b54e57/ai_context-beta4-1.0.x-issues.md) #### Additional findings … ### [Harden CCC context item access checks and document the authoring trust model](https://git.drupalcode.org/project/ai_context/-/work_items/3586356) State: opened | Updated: 2026-08-05 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !233 [Issue #3586356: Harden CCC context item access checks and document the authoring trust model.](https://git.drupalcode.org/project/ai_context/-/merge_requests/233) | State: opened | Author: Kristen Pol (kepol), 1073 diff lines Description: ## Problem/motivation Parent: #3586309 Related to: #3574937 [#3574937](https://git.drupalcode.org/project/ai_context/-/work_items/3574937) was an early broad permissions inventory (add/remove perms, stale MR !78). This issue is a focused beta4 access/trust package based on later code-review findings: enforce existing permissions correctly, close small disclosure gaps, document the trust boundary, and add an access-control test matrix. Do **not** treat this as a full permission redesign. Optional new permissions (for example `view own unpublished…`) can be separate follow-ups. ### Gaps … ### [CCC beta4 codebase review (pre-release)](https://git.drupalcode.org/project/ai_context/-/work_items/3586374) State: opened | Updated: 2026-08-05 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint15, AI Initiative Sprint, ai::context, blocker::stable Description: ## Problem/motivation Do this right before beta4 release in case there are any serious issues that need addressing before the release. Beta4 will be released shortly. We continually need to check the codebase as it changes for potential security issues, performance issues, and any pre-rc1 features/apis that need to be addressed. ## Solution Run AI checks against the codebase to identify for pre-rc1 and post-1.0: - Security issues (these can be noted since we are still in beta) - Important API gaps - Incorrect docs - Code smell that might indicate potential bugs ## Next steps - Run revie… ### [Design an indicator for the CCC UI that conveys subscription limits](https://git.drupalcode.org/project/ai_context/-/work_items/3586337) State: closed | Updated: 2026-08-05 | Author: Emma Horrell (emma-horrell) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, AI UX, ai::inside Description: ## Summary Follow up to: - #3586320+s - #3586335+s Keep in mind this issue for updating descriptions when doing this design: #3586348+s Design a UI indicator that alerts users when their context-item subscription limits are reached (or nearing), and guides them to one of three troubleshooting actions. This surfaced from a scope sense-check meeting (19/07/26 — Mike, Kristen, Aidan, Emma) where the subscription model was validated as sound: agents subscribe to context items that guide how they maintain, create, and manage content. ## Background The subscription model was reviewed and conf… ### [Remove max_items context limit and rely on the token budget](https://git.drupalcode.org/project/ai_context/-/work_items/3586378) State: opened | Updated: 2026-08-05 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::task, priority::normal, sprint candidate Description: ## Summary Follow-up to: - #3586337+s The **Max context items to inject** setting (`max_items`) adds UX and DX complexity without providing a meaningful limit on its own. Context items vary widely in size, so a token budget is the more accurate control for how much context can reach an agent prompt. Remove `max_items` from configuration, forms, validation, selection logic, documentation, and tests. After this change, the token budget (`max_tokens`) is the primary module-wide limit on injected context. ## Problem Site builders currently configure two overlapping limits: - **Max context i… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [10] 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-08-05T05:00:07+00:00 to 2026-08-06T05:00:07+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). ### [Progressive indexing can drop tail chunks](https://git.drupalcode.org/project/ai_search/-/work_items/3584032) State: opened | Updated: 2026-08-05 | Author: Sergiu Nagailic (Nikro) | Assigned: unassigned | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, ai::inside Description: Problem/Motivation The progressive/Long Chunk strategy can mark an item complete before all of its chunks are embedded. computeItemChunks() counts chunks with a hard-coded gpt-3.5 tokenizer, while getEmbedding() uses the tokenizer configured on the Search API s> In one reproducible case, tracking counted 106 chunks while actual chunking produced 370. Search API stopped after its batch beginning at chunk 100, marked the item indexed, and ne> Steps to reproduce Configure the Long Chunk embedding strategy and a tokenizer other than GPT-3.5, such as XLM-RoBERTa (or any other tokenizer). … --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [11] summariseModule:ai_translate:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI translate (machine name: ai_translate) Reporting period: last 24h (2026-08-05T05:00:07+00:00 to 2026-08-06T05:00:07+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: Carlos Romero (o0Charly0o), Marcus Johansson (Marcus_Johansson) [1], Rob Loach (robloach) [1], szato (odi)". 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 translate

                      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 documentation](https://git.drupalcode.org/project/ai_translate/-/work_items/3585534) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !32 [Resolve "Add documentation"](https://git.drupalcode.org/project/ai_translate/-/merge_requests/32) | State: merged 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson), 570 diff lines Description: Currently there is no documentation page for the module - lets have one. ### [Fix Pipeline](https://git.drupalcode.org/project/ai_translate/-/work_items/3585537) State: closed | Updated: 2026-08-05 | Author: Rob Loach (robloach) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !34 [Issue #3585537: Fix the Pipelines by adding composer.json](https://git.drupalcode.org/project/ai_translate/-/merge_requests/34) | State: merged 2026-08-05 | Author: Rob Loach (robloach), 18 diff lines Description: phpstan and phpunit are broken on the 2.0.x branch. https://git.drupalcode.org/project/ai_translate/-/pipelines/842336 Fix them. ### [InvalidArgumentException: Invalid translation language (und) when translating media entities](https://git.drupalcode.org/project/ai_translate/-/work_items/3585532) State: opened | Updated: 2026-08-05 | Author: szato (odi) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, Quick Win, ai::inside Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !30 [fix: #3585532 Translation language (und) when translating media entities.](https://git.drupalcode.org/project/ai_translate/-/merge_requests/30) | State: opened | Author: szato (odi), 198 diff lines Description: When using AI Translate to translate a media entity (e.g. media.image), the batch fails with: ``` InvalidArgumentException: Invalid translation language (und) specified. in Drupal\Core\Entity\ContentEntityBase->getTranslation() ``` **Steps to reproduce** - Enable AI Translate, configure an AI provider - Have a media type (e.g. image) with content translation enabled and field sync configured - Go to a media entity's translation overview, click "Translate using AI" for a non-existing language - Batch fails with the above exception **Proposed resolution** ``` --- a/src/Controller/AiTranslateC… --- MERGE REQUESTS (24h) --- ### [Resolve "InvalidArgumentException: Invalid translation language (und) when translating media entities"](https://git.drupalcode.org/project/ai_translate/-/merge_requests/36) State: opened | Author: Carlos Romero (o0Charly0o) | Branch: 3585532-3585539-auto-translate-referenced-taxonomy | 154 diff lines Description: Closes #3585532 ### [feat: Add batch translation for referenced translatable entities in AiTranslateController](https://git.drupalcode.org/project/ai_translate/-/merge_requests/35) State: opened | Author: Carlos Romero (o0Charly0o) | Branch: 3585539-auto-translate-referenced-taxonomy | 109 diff lines Description: Closes #3585539 --- COMMITS (24h) --- - [03f4b210](https://git.drupalcode.org/project/ai_translate/-/commit/03f4b2108ac194904a3683ffddf2bff64516cac7) Resolve "Add documentation" — Marcus Johansson (2026-08-05T11:16:31.000+00:00) - [dca599a3](https://git.drupalcode.org/project/ai_translate/-/commit/dca599a33c6f27f0dde589f90ef95b427a9f7fe3) Issue #3585537: Fix the Pipelines by adding composer.json — Rob Loach (2026-08-05T09:59:40.000+00:00) ======================================================================== ## [12] summariseModule:langfuse:developer ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Langfuse (machine name: langfuse) Reporting period: last 24h (2026-08-05T05:00:07+00:00 to 2026-08-06T05:00:07+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: Abhisek Mazumdar (abhisekmazumdar)". 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

                        Langfuse

                        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). (none) --- MERGE REQUESTS (24h) --- ### [Issue #3548465: Add createScore() for feedback and a langfuse_feedback submodule](https://git.drupalcode.org/project/langfuse/-/merge_requests/6) State: opened | Author: Abhisek Mazumdar (abhisekmazumdar) | Branch: 3548465-implement-feedback | 511 diff lines Description: Closes #3548465 --- 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] Drupal 11.4 DeepChat Block does not work with Webprofiler enabled (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586615 [2] Add interactive refinement capability to Field Widget Actions (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586468 [3] Add interactive refinement capability to Field Widget Actions 2.x (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586655 [4] AiAutomatorEntityModifier::entityHasConfig() ignores the AI Automator's disabled (status: false) setting (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586654 [5] The Toolbar Chatbot runs the fold out animation on page reload (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3568246 [6] Allow Field Widget Actions to target a specific automator (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3571915 [7] Automator FWA buttons give no user feedback when values don't visibly change (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3585987 [8] QA of 1.4.6 and 1.3.11 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586651 [9] Release 1.4.6 and 1.3.11 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586650 [10] Add a ChatMemoryInterface for storing ChatBot chat history (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586539 [11] If only one tool, cannot delete it, gives an error: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php) & more (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586652 [12] AiToolsValidationException is not caught and passed back as tool output (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586653 [13] Undefined array key warnings in RestrictToTopic and RegexpGuardrail buildConfigurationForm() when creating new guardrail (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3584884 [14] Release 1.4.4 and 1.3.9 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586586 [15] Allow Internal Tool Calling (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586616 [16] Provide proper support for "unconfigured" AI provider state (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3572645 [17] `AiReranker::extractItemText()` should prefer chunk text over configured indexed fields (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586637 [18] 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 [19] 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 [20] Approve the Chat Fundamentals (MCP-shaped rich chat) issue set for 1.6.x (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586639 [21] [Meta] Rich structured chat: adopt MCP content and interaction shapes (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586640 [22] (Optional) Typed context references on user messages via input-side content blocks (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586648 [23] Citations/sources and suggested replies via MCP shapes (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586647 [24] Elicitation round-trip: MCP-shaped request/result objects and pause/resume on ChatProcessor (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586646 [25] ChatBlockRenderer plugin type with default renderers and entity cards (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586645 [26] ChatProcessor: structured response channel and block-aware message history (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586644 [27] Add MCP content blocks and a _meta bag to ChatMessage (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586643 [28] Add MCP tool annotations to tool definitions and a ContentBlockProducerInterface for rich tool results (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586642 [29] Add ChatOutput::setMetadata() and stop discarding chunk metadata in streamed reconstruction (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586641 [30] Modules should register the AI request tags they can emit, at install time and dynamically (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586638 [31] Chatbot closes itself when adding a modal (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3499451 [32] Issue #3586468: "Add interactive refinement capability to Field Widget Actions Automation" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1914 [33] bug: #3586654 AiAutomatorEntityModifier::entityHasConfig() ignores the AI... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1915 [34] Issue #3586468: "Add interactive refinement capability to Field Widget Actions Automation" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1629 [35] Issue#3586539: Cherry pick d8017c74 (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1913 [36] Issue#3586539: Cherry pick d8017c74 (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1912 [37] Fix deleting the only selected tool in the AI tools library element. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1911 [38] Issue #3586539: Add ChatMemory plugin type (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1910 [39] Issue #3586539: Add ChatMemory plugin type (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1885 [40] Issue #3572645: Updated unconfigured ai provider handling. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1909 [41] bug: #3586637 should prefer chunk text over configured indexed fields (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1908 [42] fix: #3586589 Do not assume action definitions have a type when deriving action plugin functions (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1835 [43] task: #3586562 Add a configure-ai-settings agent skill for general AI settings... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1708 [44] feat: #3586638 Add AI request tag registry with static and dynamic discovery (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1907 [45] Issue #3499451: Restore toolbar chatbot state idempotently so a dialog re-attach cannot close it (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1815 [46] Issue #3499451: Fixed chatbot not reopening after CKEditor/media modal closes. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1277 [47] [META] 2026 AI Inside Roadmap to DrupalCon Rotterdam 2026 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586657 [48] QA Bi-Weekly Meeting - 5th August 2026 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586658 [49] Simplify structured output configuration in the Chat action (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585014 [50] [Meta] Cover remaining AI operation types with ECA execute actions (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585013 [51] Add ECA execute action for Translate Text (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585012 [52] Add ECA execute action for Text to Image (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585011 [53] Add ECA execute action for Text Classification (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585010 [54] Add ECA execute action for Summarization (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585009 [55] Add ECA execute action for Speech to Speech (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585008 [56] Add ECA execute action for Object Detection (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585006 [57] Add ECA execute action for Image to Video (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585005 [58] Add ECA execute action for Image to Image (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585004 [59] Add ECA execute action for Image Classification (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585003 [60] Add ECA execute action for Audio to Audio (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585002 [61] Migrate the ECA agent to the Tools + ReAct architecture (create-only) (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585017 [62] Add ECA execute action for Rerank (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585007 [63] Add AI ECA Interceptor submodule: intercept AI requests/responses through ECA (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3584407 [64] Issue #3585014 Simplify structured output configuration in the Chat action (ai_integration_eca, MR) — https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/12 [65] Resolve "9 different new actions" (ai_integration_eca, MR) — https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/9 [66] Resolve "Migrate the ECA agent to the Tools + ReAct architecture (create-only)" (ai_integration_eca, MR) — https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/14 [67] Issue #3568617: Added GitLab issue templates (Bug, Feature request... (ai_provider_anthropic, MR) — https://git.drupalcode.org/project/ai_provider_anthropic/-/merge_requests/23 [68] Issue #3607960: Add token counting, citations, and context management (ai_provider_anthropic, MR) — https://git.drupalcode.org/project/ai_provider_anthropic/-/merge_requests/35 [69] Alter description for model ID field in AzureProvider form to make clear the... (ai_provider_azure, MR) — https://git.drupalcode.org/project/ai_provider_azure/-/merge_requests/23 [70] Issue #3568632: Added GitLab issue templates (Bug, Default, Featur... (ai_vdb_provider_postgres, MR) — https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/merge_requests/18 [71] fix: #3609274 Cosine vectorSearch() defeats the embedding index it creates (ai_vdb_provider_postgres, MR) — https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/merge_requests/29 [72] Issue #3586862 by ignacio.perez.puertas: Re-apply Attributes columns after clear+reindex cycle (ai_vdb_provider_postgres, MR) — https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/merge_requests/24 [73] Issue #3553475: Fix query in deleteFromCollection(). (ai_vdb_provider_postgres, MR) — https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/merge_requests/14 [74] If only one tool, cannot delete it, gives an error: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php) & more (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586058 [75] AI Agents 1.3.3 release (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586069 [76] Use streamed chat for agents (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3538174 [77] Research Scratchboards (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3576571 [78] Tool settings popup on agent edit form has no visible close/save button (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586066 [79] Add note on structured output (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3550160 [80] PHPUnit CI job fails (exit code 1) for every test class despite all assertions passing (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586053 [81] AiAgentEntityWrapper::fromArray() fatals when the serialized chat history contains an image (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586067 [82] Add a per-tool setting to restrict a tool from being called more than once per response (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586051 [83] Add test coverage for externally-driven execution (setLooped(FALSE)) (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586052 [84] Disable hostname filtering does not work when looping is off (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586061 [85] Give a parent agent possibility to forward request as is (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3550098 [86] Make it possible to pick providers per agent (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3535760 [87] Expose the agent status stream as MCP-shaped progress to any chat consumer (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586072 [88] Vetoable AgentToolPreExecuteEvent and annotation-driven pre-tool confirmation via elicitation (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586071 [89] Preserve structured tool output as content blocks through the agent loop (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586070 [90] No way to limit the size of files passed to an agent (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586068 [91] Create implementation of ShortTermMemory (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3546411 [92] Add limits on how often a tool can run (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3547995 [93] Resolve ""ai_agent" entity type did not specify a list_builder handler." (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/334 [94] Tool settings popup on agent edit form has no visible close/save button (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/335 [95] Issue #3586065: Prevent undefined array key warning when parameters is missing (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/331 [96] feat: #3546411 use short term memory plugins in the agent loop (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/321 [97] AiAgentEntityWrapper::fromArray() fatals when the serialized chat history contains an image (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/333 [98] Issue#3556533:Normalize-Standalone-Line-Endings-Property_restrictions-Form fixes (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/332 [99] Dependency Dashboard (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591657 [100] Canvas AI: Send resolved prop values with current_layout, on both request paths (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591883 [101] Allow fields to be added to the page entity type (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3568228 [102] Brand Kit color support (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591838 [103] Support pushing code components from a headless codebase (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591912 [104] CKEditor links fail due to missing 'allow-forms' in ExtensionPage iframe sandbox (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591911 [105] Return flexible codebase files to local environment on canvas pull (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591862 [106] DefaultImagePreview renders the video src in an img tag instead of the poster (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591910 [107] User cannot publish changes for the unpublish page action on source (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591909 [108] Canvas AI: page builder discards the whole build when the LLM names a region that does not exist (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591876 [109] Canvas AI: Run the component agent in the dev chat with setLooped(FALSE), driven by the browser (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591884 [110] Content template preview is blank for every non-full view mode (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591908 [111] Cypress E2E parallel split balances by file count, not runtime — distribute by tagging slow/flaky specs (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591907 [112] Canvas AI: Add Tools dropdown to chat UI (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591856 [113] Missing upgrade path: stored `default-relative-url` prop sources written before 1.8 contain `$id` and fail `DefaultRelativeUrlPropSource::parse()` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591904 [114] Replace Lupus CE API with a dedicated Canvas Headless endpoint (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591861 [115] [META] Allow Canvas to be used on any content entity type (bundle), as long as it has certain entity type characteristics (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3498525 [116] chore(deps): update dependency cspell to v10 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1273 [117] chore(deps): update dependency @eslint/compat to v2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1306 [118] chore(deps): update dependency @chromatic-com/storybook to v5 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1305 [119] chore(deps): update mysql docker tag to v8.4 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1272 [120] fix(deps): update npm minor and patch (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1238 [121] #3591875: "Translatable props missing from TMGMT form when component instances cannot be auto-updated to active version" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1418 [122] feat(Page builder): #3568228 Add field_ui_base_route support for Canvas Page entity (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1471 [123] #3591883 Canvas AI: Send resolved prop values with current_layout, on both request paths (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1472 [124] #3591838 brand kit color implementation (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1385 [125] feat(Headless): #3591893 Enable headless previews for content templates (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1438 [126] feat(CLI Tool): Push components as external metadata when the Headless SDK is present (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1470 [127] Draft: #3591838 [PHASE 2] introduce color props (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1432 [128] feat: #3518272 support all entity types with configurable displays for content templates (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/791 [129] Draft: fix(CLI Tool): #3591895 CLI pull does not choose .jsx or .tsx based on pulled source (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1441 [130] #3591885: Add `document` object $ref for linking locally hosted documents (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1433 [131] chore: version packages (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1464 [132] fix(CLI Tool): #3591862 Add backward compatibility for codebase sync (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1469 [133] Issue #3591910: DefaultImagePreview renders the video src in an img tag instead of the poster (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1468 [134] feat(CLI Tool): Return flexible codebase files to local environment on canvas pull (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1443 [135] User cannot publish changes for the unpublish page action on source. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1467 [136] Draft: Resolve "User cannot publish changes for the unpublish page action on source" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1466 [137] Issues/3591884: Run component agnet with setlooped false. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1461 [138] fix: #3591876 Fall back to first region when the AI names a region that does not exist (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1423 [139] Don't collapse the preview iframe when a view mode's height comes from its content (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1465 [140] Draft: Resolve "Canvas AI: Add Tools dropdown to chat UI" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1447 [141] #3498525 Allow entity types other than node; add feature flag module for taxonomy terms. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1462 [142] feat(Headless): #3591861 Use the new Canvas content API endpoint in the headless SDK (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1437 [143] Rename entity bundle and target entity scope plugins for better DX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586276 [144] Clean up CCC inconsistencies and DX issues before rc1 (part 3) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586271 [145] [Meta] CCC MVP 1.0 roadmap (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3567798 [146] Update ai_context project page and docs based on new naming approach (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586217 [147] Create CCC video showing how to configure it (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586153 [148] CCC QA scripts for 1.0 testing (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586226 [149] Create CCC rc1 release (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586151 [150] [Discuss] Approach for CCC+agent integration testing (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3571117 [151] Full QA of CCC in prep for 1.0 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3573716 [152] Persist context-item token counts and show token-budget usage in CCC UI (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586379 [153] Decouple context item form descriptions from scope plugin descriptions (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586361 [154] [Discuss] Review context selection ranking factors before 1.0 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586365 [155] [Meta] CCC cleanup and API hardening from code review findings for beta4 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586309 [156] Harden CCC context item access checks and document the authoring trust model (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586356 [157] CCC beta4 codebase review (pre-release) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586374 [158] Design an indicator for the CCC UI that conveys subscription limits (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586337 [159] Remove max_items context limit and rely on the token budget (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586378 [160] Issue #3586271: Clean up CCC inconsistencies and DX issues before rc1 (part 3) (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/211 [161] Issue #3586276: Rename entity bundle and target entity scope plugins for better DX (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/195 [162] Issue #3586361: Decouple context item form descriptions from scope plugin descriptions. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/239 [163] Issue #3586356: Harden CCC context item access checks and document the authoring trust model. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/233 [164] Progressive indexing can drop tail chunks (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584032 [165] Add documentation (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585534 [166] Fix Pipeline (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585537 [167] InvalidArgumentException: Invalid translation language (und) when translating media entities (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585532 [168] Resolve "Add documentation" (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/32 [169] Issue #3585537: Fix the Pipelines by adding composer.json (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/34 [170] Resolve "InvalidArgumentException: Invalid translation language (und) when translating media entities" (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/36 [171] feat: Add batch translation for referenced translatable entities in AiTranslateController (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/35 [172] fix: #3585532 Translation language (und) when translating media entities. (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/30 [173] Issue #3548465: Add createScore() for feedback and a langfuse_feedback submodule (langfuse, MR) — https://git.drupalcode.org/project/langfuse/-/merge_requests/6 --- MODULE SUMMARIES ---

                            AI (Artificial Intelligence)

                            The past 24 hours saw significant progress on memory handling and field widget refinement capabilities. Add a ChatMemoryInterface for storing ChatBot chat history was merged, introducing a new ChatMemory plugin type that allows chatbots to persist conversation history across requests. Each chatbot now decides whether to use a server-side memory backend via ChatMemoryInterface or handle history entirely on the frontend.

                            Add interactive refinement capability to Field Widget Actions closed after its merge request landed, enabling users to iteratively improve AI-generated content through conversational prompts before accepting it into a field. The feature was also backported to the 2.x branch and cherry-picked to other versions. Work is underway to port these changes to the 2.x branch in Add interactive refinement capability to Field Widget Actions 2.x, where the ai_automator architecture differs slightly.

                            Several bug reports surfaced issues with automator configuration handling. AiAutomatorEntityModifier::entityHasConfig() ignores the AI Automator's disabled (status: false) setting was opened with a merge request addressing the fact that disabling an AI Automator config entity currently has no effect—automators continue to fire on every entity save. AiToolsValidationException is not caught and passed back as tool output highlights that validation exceptions thrown by tools are not caught and converted into tool results for the model to retry, instead surfacing to end users.

                            A major architectural planning effort began around structured chat, with Approve the Chat Fundamentals (MCP-shaped rich chat) issue set for 1.6.x coordinating 12 postponed issues proposing adoption of Model Context Protocol shapes for citations, content blocks, elicitation, and other rich chat features targeting the future 1.6.x branch.

                            How can I help on this project?

                            Review the open merge request on AiAutomatorEntityModifier::entityHasConfig() ignores the AI Automator's disabled setting to verify the fix correctly respects entity status. Test and provide feedback on If only one tool, cannot delete it, gives an error where a merge request fixes ToolsLibrary element handling. Pick up AiToolsValidationException is not caught, which needs implementation to catch validation exceptions and return them as tool output.

                            Contributors: Abhishek Dhariwal (adaptative), Ahmad Khader (Ahmad-Khader), Ahmad Khalil (ahmad-khalil-imagex), Ann Mary Sruthy (annmarysruthy), Artem Dmitriiev (a.dmitriiev) [1], Joshua Fernandes (joshua1234511), Levente Besenyei (LeventeB), Miguel Guerreiro (gueguerreiro), Prabhavathi Vanipenta (prabha1997), Ricardo Castañeda (cadence96), Rob Loach (robloach) [1]

                            ---

                            Drupal AI Initiative

                            Activity this period focused on planning and quality assurance coordination. A [META] 2026 AI Inside Roadmap to DrupalCon Rotterdam 2026 issue was updated, outlining the goal to demonstrate an integrated demo site at DrupalCon Rotterdam featuring AI Search, content review, translation, editor chat, observability, and guardrails working together on multilingual content. The emphasis is on shipping recipes and demos rather than building new core capabilities.

                            The QA Bi-Weekly Meeting - 5th August 2026 summary was posted, noting that QA testing is actively underway for Drupal CCC and regular releases. The meeting highlighted that use of the "Needs QA" label remains low among developers, and that onboarding sessions for new QA team members are being arranged. Issue queue monitoring for Drupal Pod and testing coordination with Drupal Forge are ongoing.

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

                            How can I help on this project?

                            • Review open issues and add the "Needs QA" label where appropriate to help surface work ready for testing.
                            • Contribute to recipe or demo development supporting the DrupalCon Rotterdam roadmap goals.
                            ---

                            AI Integration - ECA

                            The AI Integration ECA module saw significant progress in the last 24 hours, with two major merge requests landing. MR !9 was merged, delivering nine new ECA execute actions to cover previously unsupported AI operation types: AudioToAudio, ImageClassification, ImageToImage, ImageToVideo, ObjectDetection, SpeechToSpeech, Summarization, TextClassification, and TextToImage. Each new action extends AiConfigActionBase and follows the existing pattern established by Chat.php, allowing ECA flows to drive these operations without custom plugins. This work closed the corresponding child issues under the meta tracking coverage of remaining AI operation types, which is now itself closed.

                            A second major architectural change was merged via MR !14, migrating the ECA agent in the agents submodule from the legacy AiAgentBase architecture to the new Tools and ReAct framework. The agent previously hand-rolled control flow through three YAML sub-prompts; it now uses the AI module's native agent system with tool integration.

                            Two issues remain open: Add ECA execute action for Rerank (no MR yet) and Simplify structured output configuration in the Chat action, which has an open MR !12 proposing to replace the raw JSON text field with the ai_json_schema form element.

                            How can I help on this project?

                            • Review MR !12 to evaluate the ai_json_schema form element integration for structured output configuration.
                            • Pick up Add ECA execute action for Rerank and implement the missing Rerank operation action following the AudioToAudio pattern.

                            Contributors: Ahmad Khader (Ahmad-Khader), Marcus Johansson (Marcus_Johansson) [2]

                            ---

                            Anthropic Provider

                            The Anthropic Provider module saw two merge requests progress during the reporting period. A GitLab issue templates merge request was closed, while a significant new feature addition remains under review.

                            The Add token counting, citations, and context management merge request (1930 diff lines) is still open. This work implements phase 3 of the native SDK integration meta, introducing three opt-in features: token counting via a new public AnthropicProvider::countTokens() method backed by the SDK's $client->messages->countTokens(), citation support, and context management including compaction and editing. All features are disabled by default and configured through new admin form sections, ensuring backward compatibility with the existing GA chat path.

                            The Added GitLab issue templates merge request was closed after 112 lines of changes related to repository maintenance.

                            How can I help on this project?

                            Review the open token counting, citations, and context management MR, particularly testing the new countTokens() API and verifying backward compatibility. Check the admin form UX and confirm all three features remain properly disabled by default.

                            Contributors: Carlos Ospina (camoa), Mykola Podpriatov (nickolaj) ---

                            Microsoft Azure AI

                            The Alter description for model ID field in AzureProvider form to make clear the... merge request was merged during this period. This change updates the form description text for the model ID field in the AzureProvider configuration form, clarifying that the entered value will be used directly in Azure API requests. The merge addresses potential confusion around how the model identifier is applied when communicating with Azure AI services.

                            No other merge activity, commits, or issue updates occurred during this reporting period.

                            How can I help on this project?

                            Review the module's open issues on the project issue queue to identify bugs or feature requests without assigned merge requests. Test the recently merged model ID field description change to ensure the updated text adequately clarifies usage for new users configuring Azure providers.

                            Contributors: Peter Törnstrand (peter_tornstrand)

                            ---

                            Postgres VDB Provider

                            Three merge requests were integrated during this period, addressing key bugs in the vector database provider. A fix for the cosine vectorSearch() defeating the embedding index it creates was merged, correcting inefficient query patterns. The attribute columns reapplication after clear+reindex cycle issue was resolved, ensuring schema integrity is maintained through reindexing operations. Additionally, a query fix in deleteFromCollection() was merged, addressing deletion logic problems.

                            These changes touch core vector database operations including search indexing, schema management, and collection deletion workflows. The fixes should improve both performance and data integrity for sites using PostgreSQL as their vector database backend.

                            How can I help on this project?

                            Review the codebase for additional edge cases in vector search operations, particularly around index usage patterns. Test the recent fixes with various PostgreSQL versions and pgvector configurations to ensure compatibility. Consider contributing documentation on schema management best practices for vector collections.

                            Contributors: calmforce [1], Ignacio Pérez Puertas (djnash2002) [1], Mykola Podpriatov (nickolaj), Sergiu Nagailic (Nikro)

                            ---

                            AI Agents

                            Version 1.3.3 was released during the reporting period. The release included several important bug fixes that improve agent reliability and the configuration UI.

                            A fix was merged for Tool settings popup on agent edit form has no visible close/save button, resolving a CSS issue where the close control in the MicroModal tool configuration dialog was functional but invisible. A critical serialization bug was also resolved in AiAgentEntityWrapper::fromArray() fatals when the serialized chat history contains an image, which caused fatals when restoring agents whose chat history contained files. The fix ensures file objects are properly reconstructed from their serialized array form.

                            Several other issues were closed: Disable hostname filtering does not work when looping is off resolved a trust flag issue in externally-driven execution mode, PHPUnit CI job fails (exit code 1) for every test class despite all assertions passing fixed CI reliability, and Make it possible to pick providers per agent shipped per-agent provider selection. Additional features merged include test coverage for setLooped(FALSE) and a per-tool restriction to prevent multiple calls per response.

                            How can I help on this project?

                            Review the open merge request for preventing undefined array key warnings when parameters is missing. Help triage the array key error when deleting the last tool, which needs testing and reproduction steps. Consider picking up file size limit configuration, which needs design input.

                            Contributors: AKHIL BABU (AkhilBabu) [2], Alexis Martínez (alexismmd), Bharat Kelotra (bharatkelotra), Marcus Johansson (Marcus_Johansson)

                            ---

                            Drupal Canvas

                            Two significant headless infrastructure improvements merged this period. Replace Lupus CE API with a dedicated Canvas Headless endpoint landed, migrating the SDK from /ce-api to a new /canvas/content-api route and removing the Lupus Decoupled dependency. The new endpoint provides a unified response contract for content, document head metadata, routing, and redirects. Separately, Return flexible codebase files to local environment on canvas pull was merged, adding codebase sync capability detection to the CLI tool so it remains compatible with older Canvas versions when updating the global asset library.

                            AI development saw Canvas AI: Run the component agent in the dev chat with setLooped(FALSE), driven by the browser merged, replacing the hard-coded mock response with a real agent that pauses after each model decision and serializes to tempstore, allowing the browser to re-POST with fresh page context on each step. A fix for Content template preview is blank for every non-full view mode resolved the blank preview issue introduced in #3588074 when editing non-full view modes by fixing iframe height calculation.

                            Open work includes MRs for Brand Kit color support (two phases in review), Canvas AI: Send resolved prop values with current_layout, on both request paths (merging layout structure and prop values), and Allow fields to be added to the page entity type with a new Field UI route. Several bugs need attention: DefaultImagePreview renders the video src in an img tag instead of the poster, CKEditor links fail due to missing 'allow-forms' in ExtensionPage iframe sandbox, and Missing upgrade path: stored default-relative-url prop sources written before 1.8 contain $id and fail DefaultRelativeUrlPropSource::parse().

                            How can I help on this project?

                            Review MR !1468 fixing DefaultImagePreview to read the poster property for video props. Propose a sandbox attribute fix for CKEditor iframe link blocking. Implement an update path for default-relative-url prop sources with extraneous $id keys from pre-1.8 installs.

                            Contributors: **** (project_19391_bot_17a61b0edeafd5a3db3e8b2462b6c010), **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Adam G-H (phenaproxima), AKHIL BABU (AkhilBabu) [1], Ben Mullins (bnjmnm), Bálint Kléri (balintbrews), Chandan Singh (chandu7929), Dave Long (longwave), David Bravo (davidbp), Harumi Jang (hooroomoo) [1], Jakub Piasecki (zaporylie) [1], Juan Correa (jucs7), Kunal Sachdev (kunal.sachdev), Matt Glaman (mglaman), Rajab Natshah (RajabNatshah), Rajendar Pothireddypally (RajendarReddy), wotnak [2]

                            ---

                            Context Control Center (CCC)

                            No merge requests or commits landed during this period, but significant preparatory work advanced toward the rc1 and 1.0 releases. Two open merge requests continue to undergo review: Issue #3586276: Rename entity bundle and target entity scope plugins for better DX (7194 lines) refactors scope plugin naming from AiContextScopeEntityBundle to a clearer Entity Type terminology, while Issue #3586271: Clean up CCC inconsistencies and DX issues before rc1 (part 3) (3553 lines) tackles constructor promotion, snake_case local variables, and service interface consistency without functional API changes.

                            Several issues opened to address pre-1.0 requirements. Persist context-item token counts and show token-budget usage in CCC UI proposes storing estimated token counts at save time and displaying budget usage indicators. A related issue, Remove max_items context limit and rely on the token budget, suggests eliminating the max_items setting in favor of token budget controls alone. MR !233 hardens access checks for context items, and MR !239 decouples form descriptions from scope plugin descriptions to improve context-specific guidance.

                            How can I help on this project?

                            Review MR !195 or MR !211 for API naming and DX consistency. Contribute to CCC QA scripts for 1.0 testing, which needs documentation and test scripts for the QA team. Join the discussion on context selection ranking factors before 1.0 ships.

                            Contributors: Juan Correa (jucs7), Kristen Pol (kepol), Tamas Balog (tbalog), Tekla Aivazashvili (aivazashvilit)

                            ---

                            AI Search

                            No merge requests or commits were recorded during this period, but a critical indexing bug was reported. The issue Progressive indexing can drop tail chunks describes a scenario where the progressive/Long Chunk embedding strategy can prematurely mark items as fully indexed, causing chunks to be dropped. The root cause is a mismatch between tokenizer configurations: computeItemChunks() uses a hard-coded GPT-3.5 tokenizer to count chunks, while getEmbedding() uses the tokenizer configured on the Search API server. In one reproducible case, this led to a discrepancy where tracking counted 106 chunks but actual chunking produced 370, causing Search API to stop after the batch starting at chunk 100 and leaving 270 chunks unembedded. This is currently blocking reliable indexing when using tokenizers other than GPT-3.5, such as XLM-RoBERTa.

                            How can I help on this project?

                            • Investigate and propose a fix for Progressive indexing can drop tail chunks by aligning the tokenizer used in computeItemChunks() with the configured Search API tokenizer.
                            • Test the Long Chunk strategy with various tokenizer configurations to identify additional edge cases.
                            ---

                            AI translate

                            Two infrastructure improvements shipped this period. The pipeline issues on the 2.0.x branch affecting phpstan and phpunit were resolved by adding a composer.json file, and documentation for the module was added. Both changes merged on 2026-08-05.

                            Work is underway to address entity translation edge cases. An InvalidArgumentException: Invalid translation language (und) when translating media entities issue remains open, with two related merge requests now available. MR !36 tackles the media entity translation exception in the AiTranslateController, while MR !35 extends batch translation support to referenced translatable entities. Both target issues around handling untranslated (und) language states during AI-powered translation workflows.

                            How can I help on this project?

                            Review MR !36 or MR !35, which address media entity and referenced entity translation handling. Test the media translation fix against various entity types with field sync configurations to confirm it resolves the InvalidArgumentException.

                            Contributors: Carlos Romero (o0Charly0o), Marcus Johansson (Marcus_Johansson) [1], Rob Loach (robloach) [1], szato (odi)

                            ---

                            Langfuse

                            A new merge request was opened this period to add createScore() for feedback and a langfuse_feedback submodule. The MR introduces 511 lines of changes across the codebase, adding functionality for feedback scoring through a dedicated submodule. The merge request is currently awaiting review.

                            No commits were pushed or merged during this reporting period.

                            How can I help on this project?

                            Review the open createScore() feedback submodule MR to provide feedback on the implementation approach and API design. Test the new langfuse_feedback submodule functionality in a development environment to verify the createScore() method works as expected.

                            Contributors: Abhisek Mazumdar (abhisekmazumdar)

                            ======================================================================== ## [14] factcheck:tldr:developer ======================================================================== Layer-1 corrections: 0 Judge flags: 0 ======================================================================== ## [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-08-05T05:00:07+00:00 to 2026-08-06T05:00:07+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: Abhishek Dhariwal (adaptative), Ahmad Khader (Ahmad-Khader), Ahmad Khalil (ahmad-khalil-imagex), Ann Mary Sruthy (annmarysruthy), Artem Dmitriiev (a.dmitriiev) [1], Joshua Fernandes (joshua1234511), Levente Besenyei (LeventeB), Miguel Guerreiro (gueguerreiro), Prabhavathi Vanipenta (prabha1997), Ricardo Castañeda (cadence96), Rob Loach (robloach) [1]". 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). ### [Drupal 11.4 DeepChat Block does not work with Webprofiler enabled](https://git.drupalcode.org/project/ai/-/work_items/3586615) State: opened | Updated: 2026-08-05 | Author: jesmaster (Jesmaster) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::bug Description: Chatbot was working on Drupal 11.3, I updated to 11.4 and the chatbot doesn't open when clicked anymore, there are no javascript errors in the console log. I deleted the block and re-created it and I'm getting this AJAX error when choosing the assisstant. ### [Add interactive refinement capability to Field Widget Actions](https://git.drupalcode.org/project/ai/-/work_items/3586468) State: closed | Updated: 2026-08-05 | Author: Edward Zwart (ezeedub) | Assigned: unassigned | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, ai::inside 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… ### [Add interactive refinement capability to Field Widget Actions 2.x](https://git.drupalcode.org/project/ai/-/work_items/3586655) State: opened | Updated: 2026-08-05 | Author: Artem Dmitriiev (a.dmitriiev) | Assigned: unassigned | Labels: ai::inside, aiAutomators, category::task, priority::normal Description: This issue is for cherry-picking / porting the changes from related issue to 2.x. As in 2.x the way ai_automator works was slightly change, it is not a straightforward cherry-pick. MR to port/cherry-pick https://git.drupalcode.org/project/ai/-/merge_requests/1629 ### [AiAutomatorEntityModifier::entityHasConfig() ignores the AI Automator's disabled (status: false) setting](https://git.drupalcode.org/project/ai/-/work_items/3586654) State: opened | Updated: 2026-08-05 | Author: Miguel Guerreiro (gueguerreiro) | Assigned: unassigned | Labels: Quick Win, category::bug, priority::normal, state::accepted Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1915 [bug: #3586654 AiAutomatorEntityModifier::entityHasConfig() ignores the AI...](https://git.drupalcode.org/project/ai/-/merge_requests/1915) | State: opened | Author: Miguel Guerreiro (gueguerreiro), 14 diff lines Description: ## Summary **This is for version 1.x of the ai module** Disabling an AI Automator config entity (setting `status: false` in its configuration item) has no effect on whether it actually runs. Automators keep firing on every entity save even when we disable it. ## Steps to reproduce 1. Configure an AI Automator on any field so it auto-populates the field on save when left empty. 2. Save an entity with the field empty and verify the AI call fires and the field gets populated. 3. Disable the automator (set `status: false` in the exported config and reimport). 4. Save an entity with the fiel… ### [The Toolbar Chatbot runs the fold out animation on page reload](https://git.drupalcode.org/project/ai/-/work_items/3568246) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, Needs UX review 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… ### [Allow Field Widget Actions to target a specific automator](https://git.drupalcode.org/project/ai/-/work_items/3571915) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: unassigned | Labels: Has Testing Steps, ai::inside, aiAutomators, category::bug Description: >>> [!note] Migrated issue Reported by: [oneliner](https://www.drupal.org/user/1781526) >>> [Tracker] Update Summary: Fix enables multiple field widget action buttons to run only their selected automator. Short Description: Field widget actions trigger all automators on a field instead of the selected one. Check-in Date: 02/06/2026 Metadata is used by the AI Tracker. Docs and additional fields here. [/Tracker] Problem/Motivation It’s possible (though not exposed by the default UI) to configure multiple AI automators for the same field by duplicating the automator config entity with a… ### [Automator FWA buttons give no user feedback when values don't visibly change](https://git.drupalcode.org/project/ai/-/work_items/3585987) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: Petar Bašić (petar_basic) | Labels: ai::inside, category::bug, priority::normal, sprint candidate Description: >>> [!note] Migrated issue Reported by: [petar_basic](https://www.drupal.org/user/3626336) >>> [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 When an editor clicks a Field Widget Action (FWA) button backed by an ai_automator, the AJAX call runs, the throbber appears and disappears, but there is no user feedback confirming that the automator actually ran. This is especially visible on th… ### [QA of 1.4.6 and 1.3.11](https://git.drupalcode.org/project/ai/-/work_items/3586651) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: category::task, priority::normal, state::accepted Description: This is a placeholder for QA on 1.4.6 and 1.3.11 ### [Release 1.4.6 and 1.3.11](https://git.drupalcode.org/project/ai/-/work_items/3586650) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: category::task, priority::normal, state::rtbc Description: Expected release date: 5/Aug/26 QA issue: #3586651 ### [Add a ChatMemoryInterface for storing ChatBot chat history](https://git.drupalcode.org/project/ai/-/work_items/3586539) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: aiChatbot, category::feature, priority::normal, state::fixed Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1885 [Issue #3586539: Add ChatMemory plugin type](https://git.drupalcode.org/project/ai/-/merge_requests/1885) | State: merged 2026-08-05 | Author: Rob Loach (robloach), 2896 diff lines - MR !1835 [fix: #3586589 Do not assume action definitions have a type when deriving action plugin functions](https://git.drupalcode.org/project/ai/-/merge_requests/1835) | State: closed | Author: Ahmad Khalil (ahmad-khalil-imagex), 7787 diff lines Description: ## Problem/Motivation ChatBots need a way to store chat history. Today there is no standardized mechanism for a ChatBot to persist conversation history across requests. We want each ChatBot to be **in charge of its own memory handling**: - A ChatBot may opt in to a server-side memory backend by setting up a `ChatMemoryInterface` implementation. - A ChatBot may instead handle history entirely on the frontend (e.g. browser `localStorage`) and skip the interface altogether. The decision — whether to use a `ChatMemoryInterface` at all, and which implementation — belongs to the ChatBot. ## Pro… ### [If only one tool, cannot delete it, gives an error: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php) & more](https://git.drupalcode.org/project/ai/-/work_items/3586652) State: opened | Updated: 2026-08-05 | Author: Prabhavathi Vanipenta (prabha1997) | Assigned: unassigned | Labels: Quick Win, category::bug, priority::normal, state::needsReview Description: Am on Drupal 11.3.16, PHP 8.4, ai 1.4.5, ai_agents 1.3.2 If my AI Agent has one tool, and I try to delete it using its trashcan icon at the upper right, the tool still remains... If I then Save the AI Agent, and go back into it, the following errors/warnings appear at the top: ``` Warning: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php). Warning: Trying to access array offset on null in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibra… ### [AiToolsValidationException is not caught and passed back as tool output](https://git.drupalcode.org/project/ai/-/work_items/3586653) State: opened | Updated: 2026-08-05 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: aiAgent, aiCoreModule, category::bug, priority::normal Description: ## Summary `AiToolsValidationException` is thrown by tool and function-call validation, but nothing catches it and converts it into tool output. Instead of being passed back to the model as a tool result so it can correct the call and retry, it propagates up and surfaces to the end user, ending the run. A grep for `catch (AiToolsValidationException` and `catch (AiExceptionInterface` across ai and ai_agents returns no handler at all. ## Where it is thrown - `src/OperationType/Chat/Tools/ToolsPropertyResult.php` lines 118-171 — around 13 throws covering type, length, format and range validat… ### [Undefined array key warnings in RestrictToTopic and RegexpGuardrail buildConfigurationForm() when creating new guardrail](https://git.drupalcode.org/project/ai/-/work_items/3584884) State: closed | Updated: 2026-08-05 | Author: drupalbot | Assigned: unassigned | Labels: aiCoreModule, category::bug, priority::minor, state::fixed Description: >>> [!note] Migrated issue Reported by: [abhisekmazumdar](https://www.drupal.org/user/3557964) Related to !1525 >>> [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 When creating a new guardrail using either the RestrictToTopic or RegexpGuardrail plugins, the following PHP warnings appear in the logs: Warning: Undefined array key "invalid_topics_present_message" in Drupal\ai\Plugin\AiGua… ### [Release 1.4.4 and 1.3.9](https://git.drupalcode.org/project/ai/-/work_items/3586586) State: closed | Updated: 2026-08-05 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: Rob Loach (robloach) | Labels: AI Initiative, AI Product Development, Release Management, aiCoreModule Description: Expected Release date: 08/Jul/26 ### [Allow Internal Tool Calling](https://git.drupalcode.org/project/ai/-/work_items/3586616) State: opened | Updated: 2026-08-05 | Author: Bryan Sharpe (b_sharpe) | Assigned: unassigned | Labels: aiCoreModule, category::feature, priority::normal, state::accepted Description: ## Summary Most AI providers have their own toolsets that can be used via the APIs, we should have configurable sets to allow/deny provider tools when making calls. ## Problem Currently there is no way to call internal tools provided by the provider. ## Proposed solution *(optional)* - Allow tool deny/allow list per Operation Type, similar to model configuration - This should expose the tool as available, not automatically make it append to requests. For example if we allow the "web_search" tool to be available, the item using it (i.e. Agent) would still need to attach it, just like fun… ### [Provide proper support for "unconfigured" AI provider state](https://git.drupalcode.org/project/ai/-/work_items/3572645) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, ai::inside Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1909 [Issue #3572645: Updated unconfigured ai provider handling.](https://git.drupalcode.org/project/ai/-/merge_requests/1909) | State: opened | Author: Levente Besenyei (LeventeB), 225 diff lines 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… ### [`AiReranker::extractItemText()` should prefer chunk text over configured indexed fields](https://git.drupalcode.org/project/ai/-/work_items/3586637) State: opened | Updated: 2026-08-05 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: unassigned | Labels: category::bug, priority::normal, state::needs review, v1.5.x-dev Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1908 [bug: #3586637 should prefer chunk text over configured indexed fields](https://git.drupalcode.org/project/ai/-/merge_requests/1908) | State: opened | Author: Ann Mary Sruthy (annmarysruthy), 93 diff lines Description: ## Problem/Motivation `ai_search`'s chunk-mode retrieval (used by `RagTool` and any other consumer querying with `search_api_ai_get_chunks_result`) carries the actual chunk text in `$item->getExtraData('content')`, not in the item's configured indexed source fields. `AiReranker::extractItemText()` only reads the processor's configured `source_fields` off each result item. For chunk-mode results this means every chunk belonging to the same entity reranks against the same text: the entity's full configured field content, not the individual chunk. Chunk-level rerank quality regresses to entity-… ### [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-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Abhisek Mazumdar (abhisekmazumdar) | Labels: AI Initiative Sprint, AI Innovation, Needs manual testing, aiCoreModule 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… ### [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-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Has Testing Steps, aiCoreModule Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1708 [task: #3586562 Add a configure-ai-settings agent skill for general AI settings...](https://git.drupalcode.org/project/ai/-/merge_requests/1708) | State: opened | Author: Ann Mary Sruthy (annmarysruthy), 392 diff lines 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… ### [Approve the Chat Fundamentals (MCP-shaped rich chat) issue set for 1.6.x](https://git.drupalcode.org/project/ai/-/work_items/3586639) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: Artem Dmitriiev (a.dmitriiev), Christoph Breidert (breidert) | Labels: category::plan, priority::normal, state::accepted Description: ### Problem/Motivation A coordinated set of 12 issues — the **Chat Fundamentals plan** — has been filed across the ai and ai_agents queues, proposing that rich structured chat (content blocks, citations, tool output rendering, forms-in-chat via elicitation, pre-tool confirmation, progress, suggested replies) be built by adopting the Model Context Protocol shapes (spec revision 2025-06-18) directly as the canonical array shapes. All 12 issues are deliberately filed as **`state::postponed`**: they are a design proposal awaiting maintainer approval, not work in progress. Nothing in the set is i… ### [[Meta] Rich structured chat: adopt MCP content and interaction shapes](https://git.drupalcode.org/project/ai/-/work_items/3586640) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: aiCoreModule, category::plan, state::postponed Description: > ⚠️ **Postponed pending approval.** This issue set awaits maintainer approval — see the [approval issue](https://git.drupalcode.org/project/ai/-/work_items/3586639). It targets the **1.6.x branch once it is created**; nothing here is intended for 1.5.x. ### Problem/Motivation Chat responses in the AI ecosystem are plain text plus one trusted-HTML escape hatch. Concretely, on 1.5.x today: - `ChatMessage` carries only `role`, `text`, `files`, `remoteFiles`, `tools`, `toolId`. There is no metadata bag and no slot for structured payloads. - `ChatOutput::$metadata` is `mixed`, settable only thr… ### [(Optional) Typed context references on user messages via input-side content blocks](https://git.drupalcode.org/project/ai/-/work_items/3586648) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: aiCoreModule, category::feature, state::postponed Description: > ⚠️ **Postponed pending approval.** Part of the [Chat Fundamentals plan](https://git.drupalcode.org/project/ai/-/work_items/3586640); awaits maintainer approval ([approval issue](https://git.drupalcode.org/project/ai/-/work_items/3586639)). Targets the **1.6.x branch once it is created**. **Optional capability** — the output-side issue set stands without it. **Depends on:** [content blocks (#3586643)](https://git.drupalcode.org/project/ai/-/work_items/3586643); history persistence via [structured response channel (#3586644)](https://git.drupalcode.org/project/ai/-/work_items/3586644). ### P… ### [Citations/sources and suggested replies via MCP shapes](https://git.drupalcode.org/project/ai/-/work_items/3586647) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: aiCoreModule, category::feature, state::postponed Description: > ⚠️ **Postponed pending approval.** Part of the [Chat Fundamentals plan](https://git.drupalcode.org/project/ai/-/work_items/3586640); awaits maintainer approval ([approval issue](https://git.drupalcode.org/project/ai/-/work_items/3586639)). Targets the **1.6.x branch once it is created**. **Depends on:** [content blocks + `_meta` registry (#3586643)](https://git.drupalcode.org/project/ai/-/work_items/3586643), [structured response channel (#3586644)](https://git.drupalcode.org/project/ai/-/work_items/3586644), [renderers (#3586645)](https://git.drupalcode.org/project/ai/-/work_items/3586645)… ### [Elicitation round-trip: MCP-shaped request/result objects and pause/resume on ChatProcessor](https://git.drupalcode.org/project/ai/-/work_items/3586646) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: aiCoreModule, category::feature, state::postponed Description: > ⚠️ **Postponed pending approval.** Part of the [Chat Fundamentals plan](https://git.drupalcode.org/project/ai/-/work_items/3586640); awaits maintainer approval ([approval issue](https://git.drupalcode.org/project/ai/-/work_items/3586639)). Targets the **1.6.x branch once it is created**. **Depends on:** [content blocks + `_meta` conventions (#3586643)](https://git.drupalcode.org/project/ai/-/work_items/3586643); shares the interface-evolution pattern with the structured-response child issue and can be developed in parallel with it. ### Problem/Motivation There is no way for a processor — … ### [ChatBlockRenderer plugin type with default renderers and entity cards](https://git.drupalcode.org/project/ai/-/work_items/3586645) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: aiCoreModule, category::feature, state::postponed Description: > ⚠️ **Postponed pending approval.** Part of the [Chat Fundamentals plan](https://git.drupalcode.org/project/ai/-/work_items/3586640); awaits maintainer approval ([approval issue](https://git.drupalcode.org/project/ai/-/work_items/3586639)). Targets the **1.6.x branch once it is created**. **Depends on:** [content blocks on ChatMessage (#3586643)](https://git.drupalcode.org/project/ai/-/work_items/3586643). ### Problem/Motivation Once messages carry MCP content blocks (#3586643), every consumer still needs bespoke code to turn a block into markup. Without a shared rendering path, each chatb… ### [ChatProcessor: structured response channel and block-aware message history](https://git.drupalcode.org/project/ai/-/work_items/3586644) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: aiCoreModule, category::feature, state::postponed Description: > ⚠️ **Postponed pending approval.** Part of the [Chat Fundamentals plan](https://git.drupalcode.org/project/ai/-/work_items/3586640); awaits maintainer approval ([approval issue](https://git.drupalcode.org/project/ai/-/work_items/3586639)). Targets the **1.6.x branch once it is created**. **Depends on:** [content blocks on ChatMessage (#3586643)](https://git.drupalcode.org/project/ai/-/work_items/3586643) and [streamed metadata fix (#3586641)](https://git.drupalcode.org/project/ai/-/work_items/3586641). ### Problem/Motivation The ChatProcessor plugin type (`Drupal\ai\Plugin\ChatProcessor\C… ### [Add MCP content blocks and a _meta bag to ChatMessage](https://git.drupalcode.org/project/ai/-/work_items/3586643) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: aiCoreModule, category::feature, state::postponed Description: > ⚠️ **Postponed pending approval.** Part of the [Chat Fundamentals plan](https://git.drupalcode.org/project/ai/-/work_items/3586640); awaits maintainer approval ([approval issue](https://git.drupalcode.org/project/ai/-/work_items/3586639)). Targets the **1.6.x branch once it is created**. **Depends on:** the [meta plan](https://git.drupalcode.org/project/ai/-/work_items/3586640) (conventions). Foundation for the structured-response, renderer, elicitation, agent-loop and citations child issues (see the meta issue's child list). ### Problem/Motivation `ChatMessage` can carry only text, files… ### [Add MCP tool annotations to tool definitions and a ContentBlockProducerInterface for rich tool results](https://git.drupalcode.org/project/ai/-/work_items/3586642) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: aiCoreModule, category::feature, state::postponed Description: > ⚠️ **Postponed pending approval.** Part of the [Chat Fundamentals plan](https://git.drupalcode.org/project/ai/-/work_items/3586640); awaits maintainer approval ([approval issue](https://git.drupalcode.org/project/ai/-/work_items/3586639)). Targets the **1.6.x branch once it is created**. **Depends on:** nothing (wave 1 of the [meta plan](https://git.drupalcode.org/project/ai/-/work_items/3586640)). Pairs with the content-blocks child issue (03) for block shape validation and the ai_agents pre-tool confirmation child issue (08) for gating — see the meta issue's child list for links. ### Pro… ### [Add ChatOutput::setMetadata() and stop discarding chunk metadata in streamed reconstruction](https://git.drupalcode.org/project/ai/-/work_items/3586641) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: aiCoreModule, category::bug, state::postponed Description: > ⚠️ **Postponed pending approval.** Part of the [Chat Fundamentals plan](https://git.drupalcode.org/project/ai/-/work_items/3586640); awaits maintainer approval ([approval issue](https://git.drupalcode.org/project/ai/-/work_items/3586639)). Targets the **1.6.x branch once it is created**. **Depends on:** nothing (wave 1 of the [meta plan](https://git.drupalcode.org/project/ai/-/work_items/3586640)). ### Problem/Motivation `ChatOutput` has a `getMetadata(): mixed` accessor, but the metadata can only be set through the constructor's third argument. There is no `setMetadata()`. This has two c… ### [Modules should register the AI request tags they can emit, at install time and dynamically](https://git.drupalcode.org/project/ai/-/work_items/3586638) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: aiCoreModule, category::feature, priority::normal, state::needs review Description: ## Summary Modules should **register the AI request tags they can emit**, so the set of possible tags is known before any request is made. Registration should happen at installation/discovery time for static tags, and dynamically for tags that only exist because of site configuration — an agent created as `foo` should register something like `ai_agent_foo_request`. ## Problem Tags are free-form strings passed as the third argument to every operation call, appended to the provider plugin, and only observable once a request has already been executed (line references against 1.5.x): - `ChatIn… ### [Chatbot closes itself when adding a modal](https://git.drupalcode.org/project/ai/-/work_items/3499451) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, Has Testing Steps Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1815 [Issue #3499451: Restore toolbar chatbot state idempotently so a dialog re-attach cannot close it](https://git.drupalcode.org/project/ai/-/merge_requests/1815) | State: opened | Author: Abhishek Dhariwal (adaptative), 46 diff lines 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 --- MERGE REQUESTS (24h) --- ### [Issue #3586468: "Add interactive refinement capability to Field Widget Actions Automation"](https://git.drupalcode.org/project/ai/-/merge_requests/1914) State: merged 2026-08-05 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-1f45406f | 2218 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue #3586468: "Add interactive refinement capability to Field Widget Actions Automation"](https://git.drupalcode.org/project/ai/-/merge_requests/1629) State: merged 2026-08-05 | Author: Ahmad Khader (Ahmad-Khader) | Branch: 3586468-interactive-refineme | 2218 diff lines Description: ## Description ## Testing instructions 1. Create an AI Automator Setup for content_type → entity → field_content with rule llm_text_long , point the base field to the title, and add a prompt something like "You must write a short blog paragraph about: {{ context }}. Return ONLY the paragraph text, nothing else." 2. Enable the Field Widget Action with refinement Go to /admin/structure/types/manage/blog/form-display Click the gear on field_content, under Field Widget Actions enable "Automator Text Suggestion" Pick the automator, check "Enable Refinement", save 3. Edit an entity Click the… ### [Issue#3586539: Cherry pick d8017c74](https://git.drupalcode.org/project/ai/-/merge_requests/1913) State: merged 2026-08-05 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-3f03e62f | 3033 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Issue#3586539: Cherry pick d8017c74](https://git.drupalcode.org/project/ai/-/merge_requests/1912) State: merged 2026-08-05 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-d8017c74-2.x | 3033 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [Fix deleting the only selected tool in the AI tools library element.](https://git.drupalcode.org/project/ai/-/merge_requests/1911) State: opened | Author: Prabhavathi Vanipenta (prabha1997) | Branch: 3586652-if-only-one-tool-cannot-delete-it-gives-an-error-undefined-array-key-1-in-drupalaielementtoolslibraryprocesstoolslibrary-line-89 | 452 diff lines Description: ToolsLibrary::valueCallback() treated an empty submitted value as "nothing submitted" and restored #default_value, so removing the last tool never stuck. The unnormalised fallback also returned the config map shape instead of a list of ids, which AiAgentForm::save() then persisted as tools: {1: true}, causing the "Undefined array key 1" warnings on the next form build. - Only fall back to #default_value when $input is FALSE or NULL. - Normalise comma strings, lists and id => enabled maps to a list of ids. - Build the element from #value rather than #default_value, so Ajax rebuilds reflect t… ### [Issue #3586539: Add ChatMemory plugin type](https://git.drupalcode.org/project/ai/-/merge_requests/1910) State: merged 2026-08-05 | Author: Artem Dmitriiev (a.dmitriiev) | Branch: cherry-pick-d8017c74 | 2896 diff lines Description: ## Description ## Testing instructions 1. 2. ## Checklist - [ ] I have linked the related issue in the MR title or description - [ ] I have performed a self-review of my own code - [ ] I have added or updated tests, or explained in the description why this change is not covered by tests - [ ] I have updated documentation for any new or changed functionality - [ ] I have written testing instructions and verified them locally - [ ] I have noted any required post-merge steps (config imports, cache rebuilds, manual changes) - [ ] This MR contains no breaking API or hook changes, or the… ### [feat: #3586638 Add AI request tag registry with static and dynamic discovery](https://git.drupalcode.org/project/ai/-/merge_requests/1907) State: opened | Author: Ricardo Castañeda (cadence96) | Branch: 3586638-modules-should-register-the-ai-request-tags-they-can-emit-at-install-time-and-dynamically | 851 diff lines Description: ## Description Adds a tag registry service (`ai.tag_registry`) so modules can declare, up front, which AI request tags they may emit — closing the gap described in #3586638, where tags are free-form strings nobody declares until a request has already run. Two discovery paths feed the registry: - **Static** — a new `hook_ai_tags_info()` (documented in the new `ai.api.php`, this module had none before). Any module — OOP `#[Hook]` class or legacy procedural `.module` function — can implement it. ai core registers its own known tags in `src/Hook/AiTags.php` (operation types pulled from … ### [Issue #3499451: Fixed chatbot not reopening after CKEditor/media modal closes.](https://git.drupalcode.org/project/ai/-/merge_requests/1277) State: opened | Author: Joshua Fernandes (joshua1234511) | Branch: 3499451-chatbot-closes-itself | 125951 diff lines Description: Closes #3499451 --- COMMITS (24h) --- - [aaf905ad](https://git.drupalcode.org/project/ai/-/commit/aaf905ad5a05cf26931060ecc100b2a1b30d4148) Issue #3586468: "Add interactive refinement capability to Field Widget Actions Automation" — Artem Dmitriiev (2026-08-05T17:24:11.000+00:00) - [d8017c74](https://git.drupalcode.org/project/ai/-/commit/d8017c74ee28da1672a013462198255e7063f390) Issue #3586539: Add ChatMemory plugin type — Rob Loach (2026-08-05T13:37:49.000+00:00) ======================================================================== ## [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-08-05T05:00:07+00:00 to 2026-08-06T05:00:07+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). ### [[META] 2026 AI Inside Roadmap to DrupalCon Rotterdam 2026](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586657) State: opened | Updated: 2026-08-05 | Author: Christoph Breidert (breidert) | Assigned: Christoph Breidert (breidert) | Labels: AI Initiative, ai::inside, roadmap Description: ## Why this roadmap exists At DrupalCon Rotterdam at the end of September we want to show a single Drupal site where AI Search, AI content review, AI translation, an editor-facing chat, observability and guardrails all work together on real, multilingual content. Rather than describing these features one by one, we let people see them working together on one site, and we let anyone launch that site for themselves in a few seconds on Drupal Forge. Most of these features already work today. The gap is almost never the core capability. The gap is that we have not yet shipped the recipes and dem… ### [QA Bi-Weekly Meeting - 5th August 2026](https://git.drupalcode.org/project/ai_initiative/-/work_items/3586658) State: opened | Updated: 2026-08-05 | Author: Madeline Tuhey (maddyt) | Assigned: unassigned | Labels: meetings Description: **Update Summary:** Weekly QA Meeting\ **Check-in Date:** 05/08/2026 ### AI Initiative Weekly Catch-up – Summary #### QA & Release Update * Zoocha QA actively testing Drupal CCC, alongside regular release testing #### Wider Discussion * Tawny monitoring issues in Drupal Pod issue queue * Noted that use of "Needs QA" amongst AI development is still in low use, possibly remind developers of this option #### Next Steps * Bruna to set up an onboarding meeting with new QA team members that want to get involved * Tawny to touch base with Drupal Forge (testing delayed) * Zoocha to review Drup… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [17] summariseModule:ai_integration_eca:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI Integration - ECA (machine name: ai_integration_eca) Reporting period: last 24h (2026-08-05T05:00:07+00:00 to 2026-08-06T05:00:07+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 Khader (Ahmad-Khader), Marcus Johansson (Marcus_Johansson) [2]". 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 Integration - ECA

                                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). ### [Simplify structured output configuration in the Chat action](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585014) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !12 [Issue #3585014 Simplify structured output configuration in the Chat action](https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/12) | State: opened | Author: Ahmad Khader (Ahmad-Khader), 188 diff lines Description: ### Problem/Motivation The Chat action exposes the structured-output JSON schema as a plain text field in its config form (`src/Plugin/Action/Chat.php:46–50`) and stores it as a raw JSON string that is `json_decode()`d at runtime (line 115). That makes it cumbersome to **add** (no validation, no editor affordances, easy to ship malformed JSON) and hard to **look at** once saved — it's a wall of escaped JSON in the form. ### Proposed resolution Investigate replacing the raw text input with the AI module's dedicated `'#type' => 'ai_json_schema'` form element (`Drupal\ai\Element\AiJsonSchema`)… ### [[Meta] Cover remaining AI operation types with ECA execute actions](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585013) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, automation::error Description: ### Background The AI module exposes ~18 operation types, but this module only ships ECA execute actions for 5: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). This meta tracks adding execute actions for the rest so ECA flows can drive every supported AI operation without custom plugins. ### Scope **Out of scope (deferred):** `ImageAndAudioToVideo` — provider support is minimal. **In scope — one child issue per operation type:** - [Add ECA execute action for Audio to Audio](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585002) - [A… ### [Add ECA execute action for Translate Text](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585012) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `TranslateText` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `TranslateText` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\TranslateText` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_translate_text` - Builds the matching Input class from `Drupal\ai\OperationType\TranslateText\` and dispatches it through the con… ### [Add ECA execute action for Text to Image](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585011) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !9 [Resolve "9 different new actions"](https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/9) | State: merged 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson), 2157 diff lines Description: ### Problem/Motivation The AI module's `TextToImage` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `TextToImage` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\TextToImage` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_text_to_image` - Builds the matching Input class from `Drupal\ai\OperationType\TextToImage\` and dispatches it through the configured p… ### [Add ECA execute action for Text Classification](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585010) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `TextClassification` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `TextClassification` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\TextClassification` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_text_classification` - Builds the matching Input class from `Drupal\ai\OperationType\TextClassification\` and disp… ### [Add ECA execute action for Summarization](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585009) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `Summarization` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `Summarization` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\Summarization` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_summarization` - Builds the matching Input class from `Drupal\ai\OperationType\Summarization\` and dispatches it through the conf… ### [Add ECA execute action for Speech to Speech](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585008) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `SpeechToSpeech` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `SpeechToSpeech` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\SpeechToSpeech` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_speech_to_speech` - Builds the matching Input class from `Drupal\ai\OperationType\SpeechToSpeech\` and dispatches it through t… ### [Add ECA execute action for Object Detection](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585006) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `ObjectDetection` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `ObjectDetection` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\ObjectDetection` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_object_detection` - Builds the matching Input class from `Drupal\ai\OperationType\ObjectDetection\` and dispatches it throu… ### [Add ECA execute action for Image to Video](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585005) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `ImageToVideo` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `ImageToVideo` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\ImageToVideo` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_image_to_video` - Builds the matching Input class from `Drupal\ai\OperationType\ImageToVideo\` and dispatches it through the configu… ### [Add ECA execute action for Image to Image](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585004) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `ImageToImage` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `ImageToImage` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\ImageToImage` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_image_to_image` - Builds the matching Input class from `Drupal\ai\OperationType\ImageToImage\` and dispatches it through the configu… ### [Add ECA execute action for Image Classification](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585003) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `ImageClassification` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `ImageClassification` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\ImageClassification` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_image_classification` - Builds the matching Input class from `Drupal\ai\OperationType\ImageClassification\` and… ### [Add ECA execute action for Audio to Audio](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585002) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::task Description: ### Problem/Motivation The AI module's `AudioToAudio` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `AudioToAudio` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\AudioToAudio` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_audio_to_audio` - Builds the matching Input class from `Drupal\ai\OperationType\AudioToAudio\` and dispatches it through the configu… ### [Migrate the ECA agent to the Tools + ReAct architecture (create-only)](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585017) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: 2026sprint15, Road to 1.0.0, ai::inside, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !14 [Resolve "Migrate the ECA agent to the Tools + ReAct architecture (create-only)"](https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/14) | State: merged 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson), 4481 diff lines Description: ### Problem/Motivation The ECA agent in the `agents` submodule (`Drupal\ai_integration_eca_agents\Plugin\AiAgent\Eca`) is still built on the **legacy `AiAgentBase` architecture**: a PHP plugin with the `#[AiAgent]` attribute that hand-rolls its own control flow and calls three YAML sub-prompts through `runSubAgent()`: - `prompts/eca/determineTask.yml` — triage step that classifies the request as `create` / `edit` / `info` / `fail`. - `prompts/eca/buildModel.yml` — builds the ECA model JSON (create or edit). - `prompts/eca/answerQuestion.yml` — answers questions about existing models / compon… ### [Add ECA execute action for Rerank](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585007) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: AI Initiative Sprint, AI Innovation, category::task, priority::normal Description: ### Problem/Motivation The AI module's `Rerank` operation type has no corresponding ECA execute action in this module. ECA flows cannot drive `Rerank` without a custom action plugin. Existing per-operation actions: Chat, Embedding, Moderation, Speech to Text, Text to Speech (`src/Plugin/Action/`). ### Proposed resolution Add `Plugin\Action\Rerank` extending `AiConfigActionBase`, mirroring `Chat.php`: - Plugin id: `ai_integration_eca_execute_rerank` - Builds the matching Input class from `Drupal\ai\OperationType\Rerank\` and dispatches it through the configured provider. - Add a `Kernel\Pl… ### [Add AI ECA Interceptor submodule: intercept AI requests/responses through ECA](https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3584407) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: Ahmad Khader (Ahmad-Khader) | Labels: AI Initiative Sprint, AI Innovation, Road to 1.0.0, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !8 >>> [Tracker] Update Summary: [One-line status update for stakeholders] Short Description: New submodule that exposes AI request/response/stream/failure events to ECA as first-class Events, Conditions, and Actions. Check-in Date: MM/DD/YYYY [/Tracker] Problem/Motivation The AI module dispatches a rich set of events around provider calls (PreGenerateResponseEvent, PostGenerateResponseEvent, PostStreamingResponseEvent) and exposes typed exceptions for rate limits, quotas, unsafe prom… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- - [c7618d43](https://git.drupalcode.org/project/ai_integration_eca/-/commit/c7618d43050f3d048b253f631b7963b4e7e8f801) Resolve "9 different new actions" — Marcus Johansson (2026-08-05T13:28:16.000+00:00) - [c96433cc](https://git.drupalcode.org/project/ai_integration_eca/-/commit/c96433cc67fb39a36b27457c69055f0e858f2576) Resolve "Migrate the ECA agent to the Tools + ReAct architecture (create-only)" — Marcus Johansson (2026-08-05T12:56:03.000+00:00) ======================================================================== ## [18] summariseModule:ai_provider_anthropic:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Anthropic Provider (machine name: ai_provider_anthropic) Reporting period: last 24h (2026-08-05T05:00:07+00:00 to 2026-08-06T05:00:07+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: Carlos Ospina (camoa), Mykola Podpriatov (nickolaj)". 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

                                  Anthropic 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). (none) --- MERGE REQUESTS (24h) --- ### [Issue #3568617: Added GitLab issue templates (Bug, Feature request...](https://git.drupalcode.org/project/ai_provider_anthropic/-/merge_requests/23) State: closed | Author: Mykola Podpriatov (nickolaj) | Branch: 3568617-add-ai-usage | 112 diff lines Description: Closes #3568617 ### [Issue #3607960: Add token counting, citations, and context management](https://git.drupalcode.org/project/ai_provider_anthropic/-/merge_requests/35) State: opened | Author: Carlos Ospina (camoa) | Branch: 3607960-add-token-counting | 1930 diff lines Description: ## Summary Phase 3 of the native SDK integration meta ([#3572138](https://www.drupal.org/project/ai_provider_anthropic/issues/3572138)): adds **token counting**, **citations**, and **context management (compaction + editing)**. All three features are opt-in via new admin form sections and default off; the GA chat path is behaviorally unchanged when they are disabled (live-verified). ## What changed - **Token counting** — public `AnthropicProvider::countTokens(ChatInput|array, string): int` backed by `$client->messages->countTokens()`. Provider-native method (drupal/ai 1.4 has no token-count… --- COMMITS (24h) --- (none) ======================================================================== ## [19] summariseModule:ai_provider_azure:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Microsoft Azure AI (machine name: ai_provider_azure) Reporting period: last 24h (2026-08-05T05:00:07+00:00 to 2026-08-06T05:00:07+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: Peter Törnstrand (peter_tornstrand)". 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

                                    Microsoft Azure AI

                                    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). (none) --- MERGE REQUESTS (24h) --- ### [Alter description for model ID field in AzureProvider form to make clear the...](https://git.drupalcode.org/project/ai_provider_azure/-/merge_requests/23) State: merged 2026-08-05 | Author: Peter Törnstrand (peter_tornstrand) | Branch: 3572778-unknown-model | 234 diff lines Description: Alter description for model ID field in AzureProvider form to make clear the entered value will be used in Azure requests. Closes #3572778 --- COMMITS (24h) --- (none) ======================================================================== ## [20] summariseModule:ai_vdb_provider_postgres:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Postgres VDB Provider (machine name: ai_vdb_provider_postgres) Reporting period: last 24h (2026-08-05T05:00:07+00:00 to 2026-08-06T05:00:07+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: calmforce [1], Ignacio Pérez Puertas (djnash2002) [1], Mykola Podpriatov (nickolaj), Sergiu Nagailic (Nikro)". 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

                                      Postgres VDB 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). (none) --- MERGE REQUESTS (24h) --- ### [Issue #3568632: Added GitLab issue templates (Bug, Default, Featur...](https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/merge_requests/18) State: closed | Author: Mykola Podpriatov (nickolaj) | Branch: 3568632-add-ai-usage | 112 diff lines Description: Closes #3568632 ### [fix: #3609274 Cosine vectorSearch() defeats the embedding index it creates](https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/merge_requests/29) State: merged 2026-08-05 | Author: Sergiu Nagailic (Nikro) | Branch: 3609274-cosine-vectorsearch-defeats | 30 diff lines Description: Closes #3609274 ### [Issue #3586862 by ignacio.perez.puertas: Re-apply Attributes columns after clear+reindex cycle](https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/merge_requests/24) State: merged 2026-08-05 | Author: Ignacio Pérez Puertas (djnash2002) | Branch: 3586862-clearreindex-drops-columns | 40 diff lines Description: Closes #3586862 ### [Issue #3553475: Fix query in deleteFromCollection().](https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/merge_requests/14) State: merged 2026-08-05 | Author: calmforce | Branch: 3553475-deletion-of-chunks | 51 diff lines Description: Closes #3553475 --- COMMITS (24h) --- - [62b4b9f8](https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/commit/62b4b9f89cc75605f3631bf125e090c5a99fdf5e) fix: #3609274 Cosine vectorSearch() defeats the embedding index it creates — Sergiu Nagailic (2026-07-08T16:25:59.000+02:00) - [98701a13](https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/commit/98701a13739b28b78493c7104b1c3b477d14de0a) Issue #3586862 by ignacio.perez.puertas: Re-apply Attributes columns after clear+reindex cycle — Ignacio Pérez Puertas (2026-08-05T14:57:41.000+00:00) - [8582cb6f](https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/commit/8582cb6f7cea4d785c9db60ca4a68d2ca494dcd4) Issue #3553475: Fix query in deleteFromCollection(). — calmforce (2026-08-05T14:52:20.000+00:00) ======================================================================== ## [21] 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-08-05T05:00:07+00:00 to 2026-08-06T05:00:07+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: AKHIL BABU (AkhilBabu) [2], Alexis Martínez (alexismmd), Bharat Kelotra (bharatkelotra), Marcus Johansson (Marcus_Johansson)". 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 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). ### [If only one tool, cannot delete it, gives an error: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php) & more](https://git.drupalcode.org/project/ai_agents/-/work_items/3586058) State: opened | Updated: 2026-08-05 | Author: Rob Sembrat (FizCS3) | Assigned: unassigned | Labels: Quick Win, category::bug, priority::minor, state::needsReview Description: Am on Drupal 11.3.16, PHP 8.4, ai 1.4.5, ai_agents 1.3.2 If my AI Agent has one tool, and I try to delete it using its trashcan icon at the upper right, the tool still remains... If I then Save the AI Agent, and go back into it, the following errors/warnings appear at the top: ``` Warning: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php). Warning: Trying to access array offset on null in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibra… ### [AI Agents 1.3.3 release](https://git.drupalcode.org/project/ai_agents/-/work_items/3586069) State: closed | Updated: 2026-08-05 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: category::task, priority::normal, state::fixed ### [Use streamed chat for agents](https://git.drupalcode.org/project/ai_agents/-/work_items/3538174) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: Sergiu Nagailic (Nikro) | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::task Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !165 >>> Problem/Motivation We are making streamed chat possible in #3528549: Allow tool calling in streamed chat. This should make it possible to use it with agents. Steps to reproduce Proposed resolution Implement a solution based on #3528549: Allow tool calling in streamed chat Remaining tasks User interface changes API changes Data model changes ### [Research Scratchboards](https://git.drupalcode.org/project/ai_agents/-/work_items/3576571) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: Ahmad Khader (Ahmad-Khader) | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::task Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !247 >>> Problem/Motivation One big problem we have right now is to move context between agents. We have Artifact Storage that is a way of forwaring tool output into another tools input as an variable. We also have the possibility to Return Directly with a tool being called. However for multi agent setups, we have the issue that a child agent might need to write out summarized tokens to pass onto another agent, or the return directly from the tool is just too much context for what is … ### [Tool settings popup on agent edit form has no visible close/save button](https://git.drupalcode.org/project/ai_agents/-/work_items/3586066) State: closed | Updated: 2026-08-05 | Author: Abhisek Mazumdar (abhisekmazumdar) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, Novice, Quick Win Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !335 [Tool settings popup on agent edit form has no visible close/save button](https://git.drupalcode.org/project/ai_agents/-/merge_requests/335) | State: merged 2026-08-05 | Author: AKHIL BABU (AkhilBabu), 95 diff lines Description: ## Problem/Motivation The tool-configuration popup on the agent edit form (`/admin/config/ai/tools-automation/agents/{agent}/edit/form`, click **Configure** under a tool) has no visible way to close or save it. The popup is a MicroModal (`css/micromodal.css`, `js/agents_form.js`) introduced in #3559183 / !213. Its header renders a close control: ```php // src/Form/AiAgentForm.php, createToolUsageForm() '' ``` `data-micromodal-close` makes it functional, but nothing renders it visibly. `css/micromodal.css` only draws the "✕" glyph on `.ai-modal__close:before`: ```css .ai-modal__header .ai-m… ### [Add note on structured output](https://git.drupalcode.org/project/ai_agents/-/work_items/3550160) State: closed | Updated: 2026-08-05 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::task Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !219 >>> Problem/Motivation There are some models, that simply will not work with the combination of tool calling and structured output, because they are using the same engine for it. So its one or the other, or a fauly tool with Claude for instance. The known providers that has problems with this is Mistral and Claude. Proposed resolution Write a note under structured output, that certain providers will not be able to output structured output, so it should be used sparsly. We should … ### [PHPUnit CI job fails (exit code 1) for every test class despite all assertions passing](https://git.drupalcode.org/project/ai_agents/-/work_items/3586053) State: closed | Updated: 2026-08-05 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 2026Sprint14, AI Initiative Sprint, ai::inside, category::bug Description: ## Problem The `phpunit` CI job fails on merge requests even though every individual test **passes all its assertions**. Observed on [!300](https://git.drupalcode.org/project/ai_agents/-/merge_requests/300), pipeline https://git.drupalcode.org/project/ai_agents/-/pipelines/888950, job https://git.drupalcode.org/project/ai_agents/-/jobs/10938828. The `run-tests.sh` summary shows every single test class in the module — not just ones touched by the MR — finishing with all tests passed but a non-zero subprocess exit code: ``` 3.173s Drupal\Tests\ai_agents\Functional\AiAgentsMenuLinkTest … ### [AiAgentEntityWrapper::fromArray() fatals when the serialized chat history contains an image](https://git.drupalcode.org/project/ai_agents/-/work_items/3586067) State: closed | Updated: 2026-08-05 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::bug Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !333 [AiAgentEntityWrapper::fromArray() fatals when the serialized chat history contains an image](https://git.drupalcode.org/project/ai_agents/-/merge_requests/333) | State: merged 2026-08-05 | Author: AKHIL BABU (AkhilBabu), 212 diff lines Description: ## Problem `AiAgentEntityWrapper::toArray()` and `::fromArray()` do not round-trip a chat history containing files. Restoring an agent whose stored history includes an image throws: ``` Error: Call to a member function toArray() on array in Drupal\ai\OperationType\Chat\ChatMessage->toArray() (line 301 of modules/contrib/ai/src/OperationType/Chat/ChatMessage.php) Drupal\ai_agents\PluginBase\AiAgentEntityWrapper->getContextTools() Drupal\ai_agents\PluginBase\AiAgentEntityWrapper->fromArray() ``` `ChatMessage::toArray()` serializes each file through `AbstractFileBase::toArray()`, so the store… ### [Add a per-tool setting to restrict a tool from being called more than once per response](https://git.drupalcode.org/project/ai_agents/-/work_items/3586051) State: closed | Updated: 2026-08-05 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 2026Sprint14, AI Initiative Sprint, ai::inside, category::feature Description: ## Summary Add a per-tool agent setting — "Restrict model from calling this tool more than once in a response." When enabled for a tool, if a single model response contains more than one call to that tool, execute none of the response's tool calls and return a configurable error message so the agent retries on the next step. Tools without the setting are unaffected and may still be called multiple times. ## Why A step-wise, externally-driven agent needs certain tools to run at most once per step, so each call can build on the previous call's result. Canvas's client-side orchestration loop r… ### [Add test coverage for externally-driven execution (setLooped(FALSE))](https://git.drupalcode.org/project/ai_agents/-/work_items/3586052) State: closed | Updated: 2026-08-05 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 2026Sprint14, AI Initiative Sprint, ai::inside, category::task Description: ## Summary Add kernel-test coverage for `setLooped(FALSE)` — the mode where the agent parks its tool call and returns after one decision, leaving the caller to drive the next step. The behavior exists and is relied upon, but is untested. ## Why `setLooped(FALSE)` lets a caller run an agent one decision at a time instead of looping to completion inside one request. Canvas's client-side orchestration loop depends entirely on this. Because it is undocumented and uncovered, an unrelated change could silently break every externally-driven consumer. Locking it with tests protects the contract. -… ### [Disable hostname filtering does not work when looping is off](https://git.drupalcode.org/project/ai_agents/-/work_items/3586061) State: closed | Updated: 2026-08-05 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: category::bug, priority::normal, state::fixed Description: ### Problem/Motivation An agent with `hostname_filter_disabled: TRUE` gets a `HostnameFilterDto(fullTrust: TRUE)`, but only on the `ChatInput` of a single provider call. `ProviderProxy` applies it before invoking the provider and restores the previous state in a `finally`, so the override lives exactly as long as that one `chat()` call. With looping enabled the whole run happens inside that window. Tool-call arguments are built by the provider during `chat()`, so `ToolsPropertyResult::setValue()` sees full trust and the model's text is returned as-is. With looping off (`setLooped(FALSE)`) t… ### [Give a parent agent possibility to forward request as is](https://git.drupalcode.org/project/ai_agents/-/work_items/3550098) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: Rodel Duterte (rduterte) | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) >>> Problem/Motivation Many time a user is actually asking an orchestration agent just one instruction for one specific agent. Depending on how well the prompt is, there might be loss of information when this is forwarded to the subagent. If the parent knows that it should just forward the request as is, then it should be able to give this as a token instead. This helps both with consistency, but also costs and speed, since it will just output one token. Proposed resolution Create a token that th… ### [Make it possible to pick providers per agent](https://git.drupalcode.org/project/ai_agents/-/work_items/3535760) State: closed | Updated: 2026-08-05 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !202 >>> Problem/Motivation Currently the agent is using the default Chat with Tools provider, which in most cases are good. But you might want to split this up, so you only for instance use a top of the line model for the overriding assistant, while each agent might be able to solve their results using some smaller models. Currently its solvable using events, but it should be part of the normal agent form. Since configurations, specifically temperature matters, we need a way to also … ### [Expose the agent status stream as MCP-shaped progress to any chat consumer](https://git.drupalcode.org/project/ai_agents/-/work_items/3586072) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: category::feature, state::postponed Description: > ⚠️ **Postponed pending approval.** Part of the [Chat Fundamentals plan](https://git.drupalcode.org/project/ai/-/work_items/3586640); awaits maintainer approval ([approval issue](https://git.drupalcode.org/project/ai/-/work_items/3586639)). Targets the **1.6.x branches of ai and ai_agents once created**. Opt-in. **Depends on:** the [meta plan's conventions](https://git.drupalcode.org/project/ai/-/work_items/3586640); soft-depends on the [`_meta` key registry (#3586643)](https://git.drupalcode.org/project/ai/-/work_items/3586643). Independent of the ChatProcessor child issues. ### Problem/Mo… ### [Vetoable AgentToolPreExecuteEvent and annotation-driven pre-tool confirmation via elicitation](https://git.drupalcode.org/project/ai_agents/-/work_items/3586071) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: category::feature, state::postponed Description: > ⚠️ **Postponed pending approval.** Part of the [Chat Fundamentals plan](https://git.drupalcode.org/project/ai/-/work_items/3586640); awaits maintainer approval ([approval issue](https://git.drupalcode.org/project/ai/-/work_items/3586639)). Targets the **1.6.x branches of ai and ai_agents once created**. Strictly opt-in. **Depends on (ai project):** [tool annotations (#3586642)](https://git.drupalcode.org/project/ai/-/work_items/3586642), [elicitation contract (#3586646)](https://git.drupalcode.org/project/ai/-/work_items/3586646). ### Problem/Motivation `AgentToolPreExecuteEvent` (`ai_age… ### [Preserve structured tool output as content blocks through the agent loop](https://git.drupalcode.org/project/ai_agents/-/work_items/3586070) State: opened | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: category::feature, state::postponed Description: > ⚠️ **Postponed pending approval.** Part of the [Chat Fundamentals plan](https://git.drupalcode.org/project/ai/-/work_items/3586640); awaits maintainer approval ([approval issue](https://git.drupalcode.org/project/ai/-/work_items/3586639)). Targets the **1.6.x branches of ai and ai_agents once created**. **Depends on (ai project):** [ContentBlockProducerInterface + tool annotations (#3586642)](https://git.drupalcode.org/project/ai/-/work_items/3586642), [content blocks (#3586643)](https://git.drupalcode.org/project/ai/-/work_items/3586643), [structured response channel (#3586644)](https://gi… ### [No way to limit the size of files passed to an agent](https://git.drupalcode.org/project/ai_agents/-/work_items/3586068) State: opened | Updated: 2026-08-05 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: why::needsInfo Description: ## Problem Agents accept files onto the chat history, and no path applies a size limit. There is no configuration for a maximum size, and no check anywhere in the module. A site that needs one has to validate file sizes itself, before the file ever reaches the agent, and every integration has to reimplement that. Files are also carried in chat history and base64-encoded on every serialization, so the cost is not limited to the single request that introduced them. ## Proposed solution Would it make sense to make this a config on the agent, alongside the other per-agent limits? A per-agent… ### [Create implementation of ShortTermMemory](https://git.drupalcode.org/project/ai_agents/-/work_items/3546411) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::feature Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !183 >>> Problem/Motivation Short term memory is now available here: #3528730: Create ShortTermMemoryPlugin We should add an integration with it. Proposed resolution Add a parameter to the agent config to save the short term memory config. Add a subform integration for saving the configuration, while editing the AI Agent. Assume no ShortTermMemory by default. Trigger ShortTermMemory after the request event. ### [Add limits on how often a tool can run](https://git.drupalcode.org/project/ai_agents/-/work_items/3547995) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, ai::inside Description: >>> [!note] Migrated issue Reported by: [marcus_johansson](https://www.drupal.org/user/385947) Related to !224 >>> Problem/Motivation Right now we have to tell the system prompt how often it is allowed to use a specific tool. But there should also be a determenistic way, where if the tool gets stuck in a loop or searches to no awail in a RAG database for instance, we need to be able to programatically say how many times a tool can run. Proposed resolution Add a form value of how many times a tool can run. Add a form for setting the error message when this happens. If the tool has run tha… --- MERGE REQUESTS (24h) --- ### [Resolve ""ai_agent" entity type did not specify a list_builder handler."](https://git.drupalcode.org/project/ai_agents/-/merge_requests/334) State: opened | Author: Bharat Kelotra (bharatkelotra) | Branch: 3563198-ai_agent-entity-type-did-not-specify-list_builder-handler | 2883 diff lines Description: Closes #3563198 ### [Issue #3586065: Prevent undefined array key warning when parameters is missing](https://git.drupalcode.org/project/ai_agents/-/merge_requests/331) State: opened | Author: Alexis Martínez (alexismmd) | Branch: 3586065-warning-undefined-array-key-parameters-en-drupalai-agentspluginbaseaiagententitywrapper-getdefaultinformationtools-lnea-1038-de | 21 diff lines Description: Closes #3586065 ### [feat: #3546411 use short term memory plugins in the agent loop](https://git.drupalcode.org/project/ai_agents/-/merge_requests/321) State: opened | Author: Marcus Johansson (Marcus_Johansson) | Branch: short-term-memory-1-4 | 1499 diff lines Description: Agents can now pick one of the AI modules short term memory plugins and configure it, so that a long running agent can summarize or truncate the conversation instead of running out of context. The plugin only decides what a single request looks like. The agent keeps its complete conversation in $chatHistory, since it needs it to keep track of tool calls and their results, and hands that over as the original history. What the plugin produced on the previous loop is handed back as the current history, so plugins like the summarizer can build on their own earlier work, and it is serialized along… ### [Issue#3556533:Normalize-Standalone-Line-Endings-Property_restrictions-Form fixes](https://git.drupalcode.org/project/ai_agents/-/merge_requests/332) State: opened | Author: Bharat Kelotra (bharatkelotra) | Branch: 3556533-Normalize-Standalone-Line-Endings-Property_restrictions-Form | 2214 diff lines Description: Closes #3556533 --- COMMITS (24h) --- - [5da180ff](https://git.drupalcode.org/project/ai_agents/-/commit/5da180ff15e216e7c100c120c08f8902fdb7ffdd) bug: #3586066 Tool settings popup on agent edit form has no visible close/save button — AKHIL BABU (2026-08-05T11:24:45.000+00:00) - [60dcae14](https://git.drupalcode.org/project/ai_agents/-/commit/60dcae14547930d74327aa5d02682d2374aa3c5c) bug: #3586067 AiAgentEntityWrapper::fromArray() fatals when the serialized chat history contains an image — AKHIL BABU (2026-08-05T06:54:14.000+00:00) ======================================================================== ## [22] 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-08-05T05:00:07+00:00 to 2026-08-06T05:00:07+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_17a61b0edeafd5a3db3e8b2462b6c010), **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Adam G-H (phenaproxima), AKHIL BABU (AkhilBabu) [1], Ben Mullins (bnjmnm), Bálint Kléri (balintbrews), Chandan Singh (chandu7929), Dave Long (longwave), David Bravo (davidbp), Harumi Jang (hooroomoo) [1], Jakub Piasecki (zaporylie) [1], Juan Correa (jucs7), Kunal Sachdev (kunal.sachdev), Matt Glaman (mglaman), Rajab Natshah (RajabNatshah), Rajendar Pothireddypally (RajendarReddy), wotnak [2]". 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-08-06 | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Assigned: unassigned | Labels: projectManagement 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: No github.com token has been configured. Skipping release notes retrieval - ⚠️ WARN: No tool releases found. ## Deprecations / Replacements > ⚠️ **Warning** > The following dependencies are either deprecated or have replacements available. | Datasource | Package | Replacement MR? | … ### [Canvas AI: Send resolved prop values with current_layout, on both request paths](https://git.drupalcode.org/project/canvas/-/work_items/3591883) State: opened | Updated: 2026-08-06 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 1.x-dev, 2026Sprint15, AI Initiative Sprint, ai Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1472 [#3591883 Canvas AI: Send resolved prop values with current_layout, on both request paths](https://git.drupalcode.org/project/canvas/-/merge_requests/1472) | State: opened | Author: Juan Correa (jucs7), 77 diff lines Description: ## Summary The dev chat describes the page to the AI in two request parameters. `current_layout` gives the component tree — component name, UUID and nested slots — and a second parameter, `layout`, gives every component's prop values as a flat map keyed by UUID. Merge the two: each component in `current_layout` carries its own prop values, and `layout` is no longer sent. Also send `current_layout` on file-upload requests, which today send no layout at all. A single parameter that describes both the structure and the content of the page is what an agent needs in order to reason about it — it… ### [Allow fields to be added to the page entity type](https://git.drupalcode.org/project/canvas/-/work_items/3568228) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: unassigned | Labels: category::task, page, priority::normal, state::accepted Description: >>> [!note] Migrated issue Reported by: [catch](https://www.drupal.org/user/35733) >>> Overview Discussed in this slack thread: https://drupal.slack.com/archives/C072JMEPUS1/p1768606306603599 It's a very common use case to add field UI fields to entities for non-content purposes. A use case already in the canvas issue queue is https://git.drupalcode.org/project/canvas/-/work_items/3544662 where the metatags field has been added as a base field (and therefore not removable), but instead could be omitted and added by sites that needed. Other cases are things like 'hide from search results' o… ### [Brand Kit color support](https://git.drupalcode.org/project/canvas/-/work_items/3591838) State: opened | Updated: 2026-08-05 | Author: Ben Mullins (bnjmnm) | Assigned: Ben Mullins (bnjmnm) | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1385 [#3591838 brand kit color implementation](https://git.drupalcode.org/project/canvas/-/merge_requests/1385) | State: opened | Author: Ben Mullins (bnjmnm), 7502 diff lines - MR !1432 [Draft: #3591838 [PHASE 2] introduce color props](https://git.drupalcode.org/project/canvas/-/merge_requests/1432) | State: opened | Author: Ben Mullins (bnjmnm), 11747 diff lines Description: ## Brand Kit: Color management ### Summary Add a Color entity type to Brand Kit, enabling brand owners to define, organize, and manage a color palette globally. This is the foundational layer — color props on components (allowing editors to select brand colors when configuring components) will follow in a later issue. ### What this adds - **Color entity type** using the [W3C color design tokens spec](https://www.designtokens.org/tr/2025.10/color/#srgb-linear) for storing color values, along with a human-readable name and CSS variable name. - **Brand Kit panel** — colors tab in Brand Kit fo… ### [Support pushing code components from a headless codebase](https://git.drupalcode.org/project/canvas/-/work_items/3591912) State: opened | Updated: 2026-08-05 | Author: Harumi Jang (hooroomoo) | Assigned: Harumi Jang (hooroomoo) | Labels: cliTool, headless Description: We need to mark code components from a headless repo with `type: external` and support pushing them to Canvas with the CLI Tool. ### [CKEditor links fail due to missing 'allow-forms' in ExtensionPage iframe sandbox](https://git.drupalcode.org/project/canvas/-/work_items/3591911) State: opened | Updated: 2026-08-05 | Author: Joris Claes (jorisclaes) | Assigned: unassigned | Labels: Description: # Description When using the `canvas` module in combination with `canvas_translate`, adding links through the CKEditor interface fails. The `canvas_translate` module imports CKEditor via `@ckeditor/ckeditor5-react`. This renders the extension inside an iframe with a restricted sandbox attribute: ```html ``` Because CKEditor uses a form to add links, the browser blocks this action due to the missing `allow-forms` permission in the sandbox configuration. # Proposed Solution / Workaround Adding `allow-forms` to the sandbox attribute fixes the issue entirely. I patched this locally in **`ca… ### [Return flexible codebase files to local environment on canvas pull](https://git.drupalcode.org/project/canvas/-/work_items/3591862) State: closed | Updated: 2026-08-05 | Author: Harumi Jang (hooroomoo) | Assigned: Harumi Jang (hooroomoo) | Labels: cliTool Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1443 [feat(CLI Tool): Return flexible codebase files to local environment on canvas pull](https://git.drupalcode.org/project/canvas/-/merge_requests/1443) | State: merged 2026-08-05 | Author: Harumi Jang (hooroomoo), 2524 diff lines Description: When a user runs npx canvas pull, the command should return flexible codebase files back to their local environment. Examples of files that should be returned: src/lib directory, package.json, other flexible codebase artifacts relevant to the project. ### [DefaultImagePreview renders the video src in an img tag instead of the poster](https://git.drupalcode.org/project/canvas/-/work_items/3591910) State: opened | Updated: 2026-08-05 | Author: Matt Glaman (mglaman) | Assigned: unassigned | Labels: Needs review Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1468 [Issue #3591910: DefaultImagePreview renders the video src in an img tag instead of the poster](https://git.drupalcode.org/project/canvas/-/merge_requests/1468) | State: opened | Author: Matt Glaman (mglaman), 227 diff lines Description: ## Overview `DefaultImagePreview` renders a broken thumbnail for code component props shaped by `json-schema-definitions://canvas.module/video`. The component casts `default_values.resolved` to `CodeComponentPropImageExample` and renders `` (`ui/src/components/form/components/DefaultImagePreview.tsx`). For video props, `src` is the video file URL, so the browser cannot render it as an image. The `poster` property holds the image URL, but nothing on the preview path reads it. ### Steps to reproduce 1. Create a code component with a required `video` prop using `$ref: json-schema-definitions:/… ### [User cannot publish changes for the unpublish page action on source](https://git.drupalcode.org/project/canvas/-/work_items/3591909) State: opened | Updated: 2026-08-05 | Author: Chandan Singh (chandu7929) | Assigned: Chandan Singh (chandu7929) | Labels: Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1467 [User cannot publish changes for the unpublish page action on source.](https://git.drupalcode.org/project/canvas/-/merge_requests/1467) | State: opened | Author: Chandan Singh (chandu7929), 100 diff lines - MR !1466 [Draft: Resolve "User cannot publish changes for the unpublish page action on source"](https://git.drupalcode.org/project/canvas/-/merge_requests/1466) | State: closed | Author: Chandan Singh (chandu7929) Description: User cannot publish changes after unpublishing a page: - Create a canvas page named 'Test Page'. - Publish changes. - Go to canvas, open the page listing dropdown, and unpublish page 'Test Page'. - Publish changes. ### [Canvas AI: page builder discards the whole build when the LLM names a region that does not exist](https://git.drupalcode.org/project/canvas/-/work_items/3591876) State: opened | Updated: 2026-08-05 | Author: Rajab Natshah (RajabNatshah) | Assigned: Ricardo Castañeda (cadence96) | Labels: 2026Sprint15, AI Initiative Sprint, ai, ai::inside Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1423 [fix: #3591876 Fall back to first region when the AI names a region that does not exist](https://git.drupalcode.org/project/canvas/-/merge_requests/1423) | State: opened | Author: Rajab Natshah (RajabNatshah), 501 diff lines Description: ## Problem/Motivation `CanvasAiPageBuilderHelper` throws when the AI names a target region that is not present in the current layout: ``` Region "%s" not found in layout ``` The LLM commonly guesses a generic region name that does not exist on the entity's actual layout (for example `content` capitalized, `0`, or `header` on a single-region layout). The exception aborts the entire page-build operation, so the whole AI response is discarded instead of degrading gracefully into a usable page. ## Steps to reproduce 1. Use the Canvas AI page builder to add components on a page whose layout do… ### [Canvas AI: Run the component agent in the dev chat with setLooped(FALSE), driven by the browser](https://git.drupalcode.org/project/canvas/-/work_items/3591884) State: closed | Updated: 2026-08-05 | Author: AKHIL BABU (AkhilBabu) | Assigned: unassigned | Labels: 1.x-dev, 2026Sprint15, AI Initiative Sprint, ai Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1461 [Issues/3591884: Run component agnet with setlooped false.](https://git.drupalcode.org/project/canvas/-/merge_requests/1461) | State: merged 2026-08-05 | Author: AKHIL BABU (AkhilBabu), 3103 diff lines Description: ## Summary `CanvasDevAiBuilder::render()` returns a hard-coded mocked response. Replace it with a copy of the live `CanvasBuilder::render()` that runs the Canvas component agent with **`$agent->setLooped(FALSE)`**, so the agent stops after each model decision instead of looping to completion inside one request. The controller serializes the paused agent to the tempstore, returns `should_continue`, and `AiWizardDev.tsx` re-POSTs with a freshly built page context until `should_continue` is `FALSE`. ## Why With looping on (the `ai_agents` default), one HTTP request runs the agent until it is f… ### [Content template preview is blank for every non-full view mode](https://git.drupalcode.org/project/canvas/-/work_items/3591908) State: closed | Updated: 2026-08-05 | Author: Jakub Piasecki (zaporylie) | Assigned: unassigned | Labels: category::bug, priority::major, state::fixed Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1465 [Don't collapse the preview iframe when a view mode's height comes from its content](https://git.drupalcode.org/project/canvas/-/merge_requests/1465) | State: merged 2026-08-05 | Author: Jakub Piasecki (zaporylie), 49 diff lines Description: iframe stuck at inline height: 0px since #3588074 Editing a content template for any view mode other than `full` (teaser, card, search index, or any custom view mode) shows a blank white preview. The component tree renders correctly and the overlay/layers UI is fully functional - components can be selected, the geometry is correct, and the layers panel shows the real tree - but nothing is visible in the preview canvas. The `full` view mode is unaffected. … ### [Cypress E2E parallel split balances by file count, not runtime — distribute by tagging slow/flaky specs](https://git.drupalcode.org/project/canvas/-/work_items/3591907) State: opened | Updated: 2026-08-05 | Author: Christian López Espínola (penyaskito) | Assigned: Christian López Espínola (penyaskito) | Labels: DX (Developer Experience), category::task, flaky tests, priority::normal Description: ### Overview The `cypress E2E` CI job runs with `parallel: 4`, but the four nodes finish at very different times. Across the last 5 `1.x` pipelines that ran it, the slowest node took **12:54–27:36** while the fastest finished in **4:55–8:00** — a 2–3× spread. Because a parallel stage only completes when its slowest node does, the whole E2E stage is paced by one overloaded node while others sit idle. The cause is the spec-distribution logic in `ui/tests/support/parallel.js`. It sorts the 46 spec files alphabetically and deals them round-robin (`index % CI_NODE_TOTAL`), which balances the **nu… ### [Canvas AI: Add Tools dropdown to chat UI](https://git.drupalcode.org/project/canvas/-/work_items/3591856) State: opened | Updated: 2026-08-05 | Author: AKHIL BABU (AkhilBabu) | Assigned: David Bravo (davidbp) | Labels: 1.x-dev, 2026Sprint15, AI Initiative Sprint, ai Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1447 [Draft: Resolve "Canvas AI: Add Tools dropdown to chat UI"](https://git.drupalcode.org/project/canvas/-/merge_requests/1447) | State: opened | Author: David Bravo (davidbp), 530 diff lines Description: ## Background — how Canvas AI works today The Canvas AI chat is an **orchestrator system**. Every message goes first to a single orchestrator agent. The orchestrator reads the message, infers the intent, and launches the matching sub-agent: - "Build me a landing page" → orchestrator → page-builder sub-agent - "Create a React component" → orchestrator → component sub-agent - "Write a title / meta description" → orchestrator → the relevant sub-agent The routing is implicit — the user never chooses which sub-agent runs; the orchestrator decides on every turn. Roadmap: https://git.drupalcode.o… ### [Missing upgrade path: stored `default-relative-url` prop sources written before 1.8 contain `$id` and fail `DefaultRelativeUrlPropSource::parse()`](https://git.drupalcode.org/project/canvas/-/work_items/3591904) State: opened | Updated: 2026-08-05 | Author: Marco (marco.nett) | Assigned: unassigned | Labels: AI-accelerated, Needs update path, Regression, category::bug Description: ## Problem / Motivation After updating Canvas 1.4.1 → 1.8.0, opening the editor for any page whose component tree contains a `default-relative-url` prop source returns a 500 from `/canvas/api/v0/layout/{entity_type}/{id}`: ``` LogicException: Extraneous JSON Schema information detected: { "$id": "json-schema-definitions://canvas.module/image", ... } should have been just { ... } ``` ## Root cause - Canvas ≤ 1.4 stored the resolved JSON schema of `default-relative-url` prop sources including the `$id` keys the schema resolver emits (e.g. `json-schema-definitions://canvas.module/imag… ### [Replace Lupus CE API with a dedicated Canvas Headless endpoint](https://git.drupalcode.org/project/canvas/-/work_items/3591861) State: closed | Updated: 2026-08-05 | Author: wotnak | Assigned: wotnak | Labels: headless Description: Canvas Headless relies on the Lupus CE API `/ce-api` endpoint to retrieve routed content for decoupled frontends. This adds an unnecessary dependency on [Lupus Decoupled](https://www.drupal.org/project/lupus_decoupled) and limits Canvas control over the response contract. ### Proposed resolution Implement an equivalent routed-content endpoint in Canvas Headless using Custom Elements. Update the headless SDK to use the new endpoint and remove the Lupus dependency. ### User interface changes n/a ### [[META] Allow Canvas to be used on any content entity type (bundle), as long as it has certain entity type characteristics](https://git.drupalcode.org/project/canvas/-/work_items/3498525) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: unassigned | Labels: Configuration schema, Needs ADR, blocker, category::plan Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !1462 [#3498525 Allow entity types other than node; add feature flag module for taxonomy terms.](https://git.drupalcode.org/project/canvas/-/merge_requests/1462) | State: closed | Author: Dave Long (longwave), 1190 diff lines Description: >>> [!note] Migrated issue Reported by: [longwave](https://www.drupal.org/user/246492) Related to !526 >>> Overview Since the prototype XB has only worked on article node types and there are hardcoded assumptions about this. We now have the Page entity as well but we should allow XB to work on all node types (and open the possibility for other entity types in the future as well). There is no design/UX for this yet but we know we will need to allow opting in for each bundle so we can start the work on this. Proposed resolution Eligibility criteria: a "title" field (entity key: label)) Ent… --- MERGE REQUESTS (24h) --- ### [chore(deps): update dependency cspell to v10](https://git.drupalcode.org/project/canvas/-/merge_requests/1273) State: opened | Author: **** (project_19391_bot_cb443e60680723bba08a5351bf595251) | Branch: renovate/major-cspell-monorepo | 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/) | |---|---|---|---| | [cspell](https://cspell.org/) ([source](https://github.com/streetsidesoftware/cspell/tree/HEAD/packages/cspell)) | [`^9.2.0` → `^10.0.0`](https://renovatebot.com/diffs/npm/cspell/9.7.0/10.0.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/cspell/10.0.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/cspell/9.7.0/10.0.1?slim=true) | > :exclamation: **I… ### [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) | >… ### [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](https://hub.docker.com/_/mysql) ([source](https://github.com/docker-library/mysql)) | service-image | minor | `8.0` → `8.4` | > :exclamation: **Important** > > Release Notes retrieval for this MR were skipped because no github.com credentials were available. > If you are self-hosted, please see [this instruction](https://github.com/renovatebot/renovate/blob/master/docs/usage/examples/self-hosting.md#githubcom-token-for-release-notes). --- ### Configuration 📅 **Schedule**: (UTC) - Br… ### [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 | 55 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](… ### [#3591875: "Translatable props missing from TMGMT form when component instances cannot be auto-updated to active version"](https://git.drupalcode.org/project/canvas/-/merge_requests/1418) State: opened | Author: Kunal Sachdev (kunal.sachdev) | Branch: 3591875-translatable-props-missing-from-tmgmt-form-when-component-instances-cannot-be-auto-updated-to-active-version | 986 diff lines Description: AI-Generated: Yes (Used Github Copilot(Claude Sonnet 4.6) for the solution and test coverage). ### [feat(Page builder): #3568228 Add field_ui_base_route support for Canvas Page entity](https://git.drupalcode.org/project/canvas/-/merge_requests/1471) State: opened | Author: Rajendar Pothireddypally (RajendarReddy) | Branch: feature/field-ui-base-route-support | 104 diff lines Description: ## Summary Adds Field UI support for the `canvas_page` entity type so sites can manage fields, form display, and view display via the standard Drupal Field UI at **Admin > Structure > Canvas page**. ## Changes - **`src/Entity/Page.php`** — Add `field_ui_base_route` to the `#[ContentEntityType]` attribute - **`canvas.routing.yml`** — Add `entity.canvas_page.field_ui_settings` route at `/admin/structure/canvas-page` - **`canvas.links.task.yml`** — Add local task so Field UI tabs render - **`canvas.links.menu.yml`** — Add menu link under Admin > Structure - **`src/Controller/CanvasPageFieldUiC… ### [feat(Headless): #3591893 Enable headless previews for content templates](https://git.drupalcode.org/project/canvas/-/merge_requests/1438) State: opened | Author: wotnak | Branch: 3591893-enable-headless-previews-for-content-templates | 1116 diff lines Description: Closes #3591893 - enables headless previews for content templates ## Testing - build ui and packages and enable canvas_headless - `npm run build` - `npm run packages:build` - `ddev drush cr` - `npm link -ws` - `ddev drush en canvas_headless` - create a headless app: `npx @drupal-canvas/create@latest --experimental-headless --template nextjs` - start headless app - `npm link @drupal-canvas/headless @drupal-canvas/headless-next @drupal-canvas/headless-react` (if using a template other than the nextjs, link `@drupal-canvas/headless` and framework adapter matching the template) - … ### [feat(CLI Tool): Push components as external metadata when the Headless SDK is present](https://git.drupalcode.org/project/canvas/-/merge_requests/1470) State: opened | Author: Harumi Jang (hooroomoo) | Branch: mark-external | 861 diff lines Description: #3591912 AI Disclosure: yes used Claude canvas push: support pushing components as type: external with their metadata when the Headless SDK is present - SDK detection: when @drupal-canvas/headless is in the project's dependencies or devDependencies, every discovered component is pushed as type: external. - Explicit opt-in: a type: external in a component's component.yml is honored the same way, with or without the SDK. The YAML file is never mutated — type is set on the API payload only. - Entry-less discovery: framework single-file components (.vue, .astro, .svelte) and other entry-less e… ### [feat: #3518272 support all entity types with configurable displays for content templates](https://git.drupalcode.org/project/canvas/-/merge_requests/791) State: opened | Author: Adam G-H (phenaproxima) | Branch: 3518272-field-ui-base-route | 2287 diff lines Description: Closes #3518272 . ### [Draft: fix(CLI Tool): #3591895 CLI pull does not choose .jsx or .tsx based on pulled source](https://git.drupalcode.org/project/canvas/-/merge_requests/1441) State: opened | Author: Bálint Kléri (balintbrews) | Branch: 3591895-cli-pull-jsx-vs-tsx | 207 diff lines Description: Closes #3591895. Authored with an AI coding agent. ### [#3591885: Add `document` object $ref for linking locally hosted documents](https://git.drupalcode.org/project/canvas/-/merge_requests/1433) State: opened | Author: Matt Glaman (mglaman) | Branch: 3591885-issue-branch | 1101 diff lines Description: Adds the `document` object `$ref` agreed in [#3524130, note 1678367](https://git.drupalcode.org/project/canvas/-/work_items/3524130#note_1678367), mirroring the shipped `video` shape point for point. **What this branch does** - `schema.json`: adds the `document` definition with `src` (required), `title`, `description`, `filename`, `filesize`, and `mimetype`. `src` carries `contentMediaType: application/*` — every agreed extension (`pdf doc docx xls xlsx ppt pptm pptx key ai indd`) resolves to the `application` MIME media type, and the wildcard is what makes field matching precise (see below)… ### [chore: version packages](https://git.drupalcode.org/project/canvas/-/merge_requests/1464) State: opened | Author: **** (project_19391_bot_17a61b0edeafd5a3db3e8b2462b6c010) | Branch: changeset-release/1.x | 518 diff lines Description: Automated merge request created from pending changesets. Merging it publishes the new package versions to npm. Do not commit to this branch manually; it is force-pushed on every push to 1.x. ### [fix(CLI Tool): #3591862 Add backward compatibility for codebase sync](https://git.drupalcode.org/project/canvas/-/merge_requests/1469) State: merged 2026-08-05 | Author: wotnak | Branch: 3591862-backward-compatibility | 148 diff lines Description: #3591862 Adds capability detection before updating the global asset library. When codebase sync is unsupported (asset library doesn't have packageJson and bundledSources fields), the CLI omits the new fields and sends a legacy-compatible payload to remain compatible with older Canvas versions. --- AI-Generated: Yes (Used AI coding agent to implement the fix). ### [feat(Headless): #3591861 Use the new Canvas content API endpoint in the headless SDK](https://git.drupalcode.org/project/canvas/-/merge_requests/1437) State: merged 2026-08-05 | Author: wotnak | Branch: 3591861-headless-sdk-new-canvas-content-api-endpoint | 2758 diff lines Description: #3591861 - Switches the headless SDK's draft-aware `fetchPage()` client from `/ce-api/{path}` to `/canvas/content-api`. - Adopts the Canvas endpoint's content, document-head, route, and redirect response contract. - Removes the now obsolete Lupus endpoint dependencies and the `/ce-api` auto-save controller override. ## SDK response handling `fetchPage(requestUri)` now returns: - `Page`, containing Canvas-rendered content when available, document-head data, and normalized route information. `route.managedByCanvas` indicates whether Canvas manages the route's complete component tree. - `ro… --- COMMITS (24h) --- - [f8f0617f](https://git.drupalcode.org/project/canvas/-/commit/f8f0617f7fcc1bc1ac71f5c2889d1b342971ff57) fix(CLI Tool): #3591862 Add backward compatibility for codebase sync — wotnak (2026-08-05T16:36:43.000+00:00) - [8933c5ea](https://git.drupalcode.org/project/canvas/-/commit/8933c5ea97ad91d3fe31bd8ba6a43c0dd22c3e36) feat(CLI Tool): Return flexible codebase files to local environment on canvas pull — Harumi Jang (2026-08-05T15:32:27.000+00:00) - [57382ce8](https://git.drupalcode.org/project/canvas/-/commit/57382ce8ad6b4387cf23eacecc259dbc2cc6142f) task(AI): #3591884 Canvas AI: Run the component agent in the dev chat with setLooped(FALSE), driven by the browser — AKHIL BABU (2026-08-05T13:09:04.000+00:00) - [7d65ac65](https://git.drupalcode.org/project/canvas/-/commit/7d65ac65861c86125a4f95d02fae66ee9064f698) fix(Page builder): #3591908 Content template preview is blank for every non-full view mode — Jakub Piasecki (2026-08-05T10:57:36.000+00:00) - [f16deaf7](https://git.drupalcode.org/project/canvas/-/commit/f16deaf7fb6a764ea3d91a0f0ddcc8e2541d4289) feat(Headless): #3591861 Use the new Canvas content API endpoint in the headless SDK — wotnak (2026-08-05T06:11:35.000+00:00) ======================================================================== ## [23] 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-08-05T05:00:07+00:00 to 2026-08-06T05:00:07+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: Juan Correa (jucs7), Kristen Pol (kepol), Tamas Balog (tbalog), Tekla Aivazashvili (aivazashvilit)". 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

                                            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). ### [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-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint12, 2026Sprint13, 2026Sprint14, 2026Sprint15 Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !195 [Issue #3586276: Rename entity bundle and target entity scope plugins for better DX](https://git.drupalcode.org/project/ai_context/-/merge_requests/195) | State: opened | Author: Tamas Balog (tbalog), 7194 diff lines 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… ### [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-08-06 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint13, 2026Sprint14, 2026Sprint15, AI Initiative Sprint Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !211 [Issue #3586271: Clean up CCC inconsistencies and DX issues before rc1 (part 3)](https://git.drupalcode.org/project/ai_context/-/merge_requests/211) | State: opened | Author: Juan Correa (jucs7), 3553 diff lines 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… ### [[Meta] CCC MVP 1.0 roadmap](https://git.drupalcode.org/project/ai_context/-/work_items/3567798) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint10, 2026Sprint11, 2026Sprint12, 2026Sprint15 Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> --- ## Problem/Motivation We need a stable release of CCC to support Drupal CMS that includes a lot of the ideas and features we've been discussing, including the 1-year plan capabilities. --- ## Proposed resolution Update issue list and work through them --- ## Target dates - March 23rd: Beta1 release - March 23rd to 27th: DrupalCon Chicago - May 10: Beta2 release - June 18: Beta3 release - July TBD: RC1 release - July TBD: 1.0 release --- ## Remaining tasks Milestones have the issues (both… ### [Update ai_context project page and docs based on new naming approach](https://git.drupalcode.org/project/ai_context/-/work_items/3586217) State: opened | Updated: 2026-08-05 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, ai::context, category::task, priority::normal Description: ## Problem/motivation Although people will likely continue to call it CCC rather than AI Context, we've decided to embrace a combined naming approach outlined here: #3556881 ## Solution Update the project page and README/docs to use this. ## Tasks - [ ] Update project page - [ ] Update README - [ ] Update docs if necessary ### [Create CCC video showing how to configure it](https://git.drupalcode.org/project/ai_context/-/work_items/3586153) State: opened | Updated: 2026-08-05 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint16, category::task, demo, priority::normal Description: Let's do this after beta3 is created: #3586295+s People have been having some trouble understanding how to set up CCC. Create a simple video for setting it up. ### [CCC QA scripts for 1.0 testing](https://git.drupalcode.org/project/ai_context/-/work_items/3586226) State: opened | Updated: 2026-08-05 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, blocker::stable, category::task, priority::major Description: ## Problem/motivation Need to make sure we're ready for the QA team to do pre-1.0 testing. ## Solution From Bruna Emerich (Zoocha): Documentation covering the functionality, along with a test script (such as the example in this ticket, where an .md file is included), is sufficient for us to carry out testing. If any questions come up, we’ll raise them directly in the channel and tag you. Regarding lead time, it depends on the size of the functionality, but generally one week’s notice is sufficient. If there’s a fixed release date, allowing around 14 days is preferable, as it gives enough … ### [Create CCC rc1 release](https://git.drupalcode.org/project/ai_context/-/work_items/3586151) State: opened | Updated: 2026-08-05 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: category::task, needs prioritization, priority::major, state::postponed Description: Problem/Motivation Create CCC rc1 release Tag: 1.0.0-rc1 Proposed resolution Create the release once at least the must-haves are done here: #3585902: CCC beta2 release planning Target date or deadline June 2026 Remaining tasks Wait on must-haves Tag code Create the release in UI Celebrate! AI usage (if applicable) [ ] AI Assisted Issue This issue was generated with AI assistance, but was reviewed and refined by the creator. [ ] AI Assisted Code This code was mainly generated by a human, with AI autocompleting or parts AI generated, but under full human supervision. [ ] AI Generated Code This… ### [[Discuss] Approach for CCC+agent integration testing](https://git.drupalcode.org/project/ai_context/-/work_items/3571117) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: unassigned | Labels: 2026Sprint16, category::plan, priority::major, sprint candidate Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> [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 need to test the integration of CCC+agents and possibly other things like the future review system. How can we build such a testing framework? Proposed resolution Discuss and figure out next steps Target date o… ### [Full QA of CCC in prep for 1.0](https://git.drupalcode.org/project/ai_context/-/work_items/3573716) State: opened | Updated: 2026-08-05 | Author: drupalbot | Assigned: unassigned | Labels: blocker::stable, category::task, needs prioritization, priority::major Description: >>> [!note] Migrated issue Reported by: [kristen pol](https://www.drupal.org/user/8389) >>> [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 are getting close to creating an alpha or beta version and want to take a step back and do a full QA review before doing so. Proposed resolution Testing various features and finding bugs that would be good to f… ### [Persist context-item token counts and show token-budget usage in CCC UI](https://git.drupalcode.org/project/ai_context/-/work_items/3586379) State: opened | Updated: 2026-08-05 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::task, priority::major, sprint candidate Description: ## Summary Follow-up to: - #3586337+s - #3586348+s Implement the subscription-limit UX decisions from the Emma+Aidan review on #3586337. Persist each context item's estimated token count at save time, base token badges on percentage of the configured token budget, and add budget summary messaging on the agent subscription settings page. This issue implements the indicator behavior. It does not add new warning components beyond text, badges, and tooltips agreed in the design review. ## Problem Token counts on the context item listing are calculated on the fly from item content. That makes… ### [Decouple context item form descriptions from scope plugin descriptions](https://git.drupalcode.org/project/ai_context/-/work_items/3586361) State: opened | Updated: 2026-08-05 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !239 [Issue #3586361: Decouple context item form descriptions from scope plugin descriptions.](https://git.drupalcode.org/project/ai_context/-/merge_requests/239) | State: opened | Author: Tekla Aivazashvili (aivazashvilit), 756 diff lines Description: ## Problem/motivation Follow-up: #3586359 Scope plugin `getDescription()` text is currently reused in multiple UI contexts: 1. The scope overview page. 2. Individual scope settings pages. 3. Context item scope controls. These contexts can require different guidance. For example, the Global scope’s warning that saving a context item clears other scope settings is useful on the context item form but confusing on the scope overview and settings pages. The existing `getSubscriptionDescription()` method already provides context-specific text for agent subscription forms, but there is no equiv… ### [[Discuss] Review context selection ranking factors before 1.0](https://git.drupalcode.org/project/ai_context/-/work_items/3586365) State: opened | Updated: 2026-08-05 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::plan Description: ## Summary Before we ship 1.0, we should confirm that the current rules for choosing which context items reach an AI feature are the right set — and whether anything important is missing. This issue is a **discussion**. The goal is shared understanding of what the module does today, in plain language, so product/UX and engineering can decide together whether to add ranking factors before release. ## Background When someone uses an AI feature on the site, the module picks a small set of **context items** (brand voice, writing rules, section-specific guidance, etc.) and attaches them to the … ### [[Meta] CCC cleanup and API hardening from code review findings for beta4](https://git.drupalcode.org/project/ai_context/-/work_items/3586309) State: opened | Updated: 2026-08-05 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint15, AI Initiative Sprint, ai::context, category::plan Description: ## Problem/motivation Follow-up to: #3586294+s ### New docs Since I had fable 5 review both 1.0.x and the MR branch for #3586218+ at the same time, it didn't really differentiate where the problems were. Many of the problems were for #3586218+ which should be fixed in that issue since it's not merged yet. I've added the info to that issue's MR. Here are the new docs for all problems that aren't for #3586218+: [ai_context-beta4-1.0.x-issues.md](https://git.drupalcode.org/-/project/191993/uploads/69d239d43391b757cc440a9e04b54e57/ai_context-beta4-1.0.x-issues.md) #### Additional findings … ### [Harden CCC context item access checks and document the authoring trust model](https://git.drupalcode.org/project/ai_context/-/work_items/3586356) State: opened | Updated: 2026-08-05 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !233 [Issue #3586356: Harden CCC context item access checks and document the authoring trust model.](https://git.drupalcode.org/project/ai_context/-/merge_requests/233) | State: opened | Author: Kristen Pol (kepol), 1073 diff lines Description: ## Problem/motivation Parent: #3586309 Related to: #3574937 [#3574937](https://git.drupalcode.org/project/ai_context/-/work_items/3574937) was an early broad permissions inventory (add/remove perms, stale MR !78). This issue is a focused beta4 access/trust package based on later code-review findings: enforce existing permissions correctly, close small disclosure gaps, document the trust boundary, and add an access-control test matrix. Do **not** treat this as a full permission redesign. Optional new permissions (for example `view own unpublished…`) can be separate follow-ups. ### Gaps … ### [CCC beta4 codebase review (pre-release)](https://git.drupalcode.org/project/ai_context/-/work_items/3586374) State: opened | Updated: 2026-08-05 | Author: Kristen Pol (kepol) | Assigned: Kristen Pol (kepol) | Labels: 2026Sprint15, AI Initiative Sprint, ai::context, blocker::stable Description: ## Problem/motivation Do this right before beta4 release in case there are any serious issues that need addressing before the release. Beta4 will be released shortly. We continually need to check the codebase as it changes for potential security issues, performance issues, and any pre-rc1 features/apis that need to be addressed. ## Solution Run AI checks against the codebase to identify for pre-rc1 and post-1.0: - Security issues (these can be noted since we are still in beta) - Important API gaps - Incorrect docs - Code smell that might indicate potential bugs ## Next steps - Run revie… ### [Design an indicator for the CCC UI that conveys subscription limits](https://git.drupalcode.org/project/ai_context/-/work_items/3586337) State: closed | Updated: 2026-08-05 | Author: Emma Horrell (emma-horrell) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, AI UX, ai::inside Description: ## Summary Follow up to: - #3586320+s - #3586335+s Keep in mind this issue for updating descriptions when doing this design: #3586348+s Design a UI indicator that alerts users when their context-item subscription limits are reached (or nearing), and guides them to one of three troubleshooting actions. This surfaced from a scope sense-check meeting (19/07/26 — Mike, Kristen, Aidan, Emma) where the subscription model was validated as sound: agents subscribe to context items that guide how they maintain, create, and manage content. ## Background The subscription model was reviewed and conf… ### [Remove max_items context limit and rely on the token budget](https://git.drupalcode.org/project/ai_context/-/work_items/3586378) State: opened | Updated: 2026-08-05 | Author: Kristen Pol (kepol) | Assigned: unassigned | Labels: 2026Sprint16, category::task, priority::normal, sprint candidate Description: ## Summary Follow-up to: - #3586337+s The **Max context items to inject** setting (`max_items`) adds UX and DX complexity without providing a meaningful limit on its own. Context items vary widely in size, so a token budget is the more accurate control for how much context can reach an agent prompt. Remove `max_items` from configuration, forms, validation, selection logic, documentation, and tests. After this change, the token budget (`max_tokens`) is the primary module-wide limit on injected context. ## Problem Site builders currently configure two overlapping limits: - **Max context i… --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [24] 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-08-05T05:00:07+00:00 to 2026-08-06T05:00:07+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). ### [Progressive indexing can drop tail chunks](https://git.drupalcode.org/project/ai_search/-/work_items/3584032) State: opened | Updated: 2026-08-05 | Author: Sergiu Nagailic (Nikro) | Assigned: unassigned | Labels: 2026Sprint14, 2026Sprint15, AI Initiative Sprint, ai::inside Description: Problem/Motivation The progressive/Long Chunk strategy can mark an item complete before all of its chunks are embedded. computeItemChunks() counts chunks with a hard-coded gpt-3.5 tokenizer, while getEmbedding() uses the tokenizer configured on the Search API s> In one reproducible case, tracking counted 106 chunks while actual chunking produced 370. Search API stopped after its batch beginning at chunk 100, marked the item indexed, and ne> Steps to reproduce Configure the Long Chunk embedding strategy and a tokenizer other than GPT-3.5, such as XLM-RoBERTa (or any other tokenizer). … --- MERGE REQUESTS (24h) --- (none) --- COMMITS (24h) --- (none) ======================================================================== ## [25] summariseModule:ai_translate:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: AI translate (machine name: ai_translate) Reporting period: last 24h (2026-08-05T05:00:07+00:00 to 2026-08-06T05:00:07+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: Carlos Romero (o0Charly0o), Marcus Johansson (Marcus_Johansson) [1], Rob Loach (robloach) [1], szato (odi)". 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 translate

                                                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 documentation](https://git.drupalcode.org/project/ai_translate/-/work_items/3585534) State: closed | Updated: 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !32 [Resolve "Add documentation"](https://git.drupalcode.org/project/ai_translate/-/merge_requests/32) | State: merged 2026-08-05 | Author: Marcus Johansson (Marcus_Johansson), 570 diff lines Description: Currently there is no documentation page for the module - lets have one. ### [Fix Pipeline](https://git.drupalcode.org/project/ai_translate/-/work_items/3585537) State: closed | Updated: 2026-08-05 | Author: Rob Loach (robloach) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, ai::inside, category::task Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !34 [Issue #3585537: Fix the Pipelines by adding composer.json](https://git.drupalcode.org/project/ai_translate/-/merge_requests/34) | State: merged 2026-08-05 | Author: Rob Loach (robloach), 18 diff lines Description: phpstan and phpunit are broken on the 2.0.x branch. https://git.drupalcode.org/project/ai_translate/-/pipelines/842336 Fix them. ### [InvalidArgumentException: Invalid translation language (und) when translating media entities](https://git.drupalcode.org/project/ai_translate/-/work_items/3585532) State: opened | Updated: 2026-08-05 | Author: szato (odi) | Assigned: unassigned | Labels: 2026Sprint15, AI Initiative Sprint, Quick Win, ai::inside Related MRs (already exist for this issue — check state before suggesting new contributions): - MR !30 [fix: #3585532 Translation language (und) when translating media entities.](https://git.drupalcode.org/project/ai_translate/-/merge_requests/30) | State: opened | Author: szato (odi), 198 diff lines Description: When using AI Translate to translate a media entity (e.g. media.image), the batch fails with: ``` InvalidArgumentException: Invalid translation language (und) specified. in Drupal\Core\Entity\ContentEntityBase->getTranslation() ``` **Steps to reproduce** - Enable AI Translate, configure an AI provider - Have a media type (e.g. image) with content translation enabled and field sync configured - Go to a media entity's translation overview, click "Translate using AI" for a non-existing language - Batch fails with the above exception **Proposed resolution** ``` --- a/src/Controller/AiTranslateC… --- MERGE REQUESTS (24h) --- ### [Resolve "InvalidArgumentException: Invalid translation language (und) when translating media entities"](https://git.drupalcode.org/project/ai_translate/-/merge_requests/36) State: opened | Author: Carlos Romero (o0Charly0o) | Branch: 3585532-3585539-auto-translate-referenced-taxonomy | 154 diff lines Description: Closes #3585532 ### [feat: Add batch translation for referenced translatable entities in AiTranslateController](https://git.drupalcode.org/project/ai_translate/-/merge_requests/35) State: opened | Author: Carlos Romero (o0Charly0o) | Branch: 3585539-auto-translate-referenced-taxonomy | 109 diff lines Description: Closes #3585539 --- COMMITS (24h) --- - [03f4b210](https://git.drupalcode.org/project/ai_translate/-/commit/03f4b2108ac194904a3683ffddf2bff64516cac7) Resolve "Add documentation" — Marcus Johansson (2026-08-05T11:16:31.000+00:00) - [dca599a3](https://git.drupalcode.org/project/ai_translate/-/commit/dca599a33c6f27f0dde589f90ef95b427a9f7fe3) Issue #3585537: Fix the Pipelines by adding composer.json — Rob Loach (2026-08-05T09:59:40.000+00:00) ======================================================================== ## [26] summariseModule:langfuse:executive ======================================================================== You are a technical writer producing a newsletter section about recent Drupal module activity. Module: Langfuse (machine name: langfuse) Reporting period: last 24h (2026-08-05T05:00:07+00:00 to 2026-08-06T05:00:07+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: Abhisek Mazumdar (abhisekmazumdar)". 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

                                                  Langfuse

                                                  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). (none) --- MERGE REQUESTS (24h) --- ### [Issue #3548465: Add createScore() for feedback and a langfuse_feedback submodule](https://git.drupalcode.org/project/langfuse/-/merge_requests/6) State: opened | Author: Abhisek Mazumdar (abhisekmazumdar) | Branch: 3548465-implement-feedback | 511 diff lines Description: Closes #3548465 --- 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] Drupal 11.4 DeepChat Block does not work with Webprofiler enabled (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586615 [2] Add interactive refinement capability to Field Widget Actions (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586468 [3] Add interactive refinement capability to Field Widget Actions 2.x (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586655 [4] AiAutomatorEntityModifier::entityHasConfig() ignores the AI Automator's disabled (status: false) setting (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586654 [5] The Toolbar Chatbot runs the fold out animation on page reload (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3568246 [6] Allow Field Widget Actions to target a specific automator (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3571915 [7] Automator FWA buttons give no user feedback when values don't visibly change (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3585987 [8] QA of 1.4.6 and 1.3.11 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586651 [9] Release 1.4.6 and 1.3.11 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586650 [10] Add a ChatMemoryInterface for storing ChatBot chat history (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586539 [11] If only one tool, cannot delete it, gives an error: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php) & more (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586652 [12] AiToolsValidationException is not caught and passed back as tool output (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586653 [13] Undefined array key warnings in RestrictToTopic and RegexpGuardrail buildConfigurationForm() when creating new guardrail (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3584884 [14] Release 1.4.4 and 1.3.9 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586586 [15] Allow Internal Tool Calling (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586616 [16] Provide proper support for "unconfigured" AI provider state (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3572645 [17] `AiReranker::extractItemText()` should prefer chunk text over configured indexed fields (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586637 [18] 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 [19] 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 [20] Approve the Chat Fundamentals (MCP-shaped rich chat) issue set for 1.6.x (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586639 [21] [Meta] Rich structured chat: adopt MCP content and interaction shapes (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586640 [22] (Optional) Typed context references on user messages via input-side content blocks (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586648 [23] Citations/sources and suggested replies via MCP shapes (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586647 [24] Elicitation round-trip: MCP-shaped request/result objects and pause/resume on ChatProcessor (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586646 [25] ChatBlockRenderer plugin type with default renderers and entity cards (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586645 [26] ChatProcessor: structured response channel and block-aware message history (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586644 [27] Add MCP content blocks and a _meta bag to ChatMessage (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586643 [28] Add MCP tool annotations to tool definitions and a ContentBlockProducerInterface for rich tool results (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586642 [29] Add ChatOutput::setMetadata() and stop discarding chunk metadata in streamed reconstruction (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586641 [30] Modules should register the AI request tags they can emit, at install time and dynamically (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586638 [31] Chatbot closes itself when adding a modal (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3499451 [32] Issue #3586468: "Add interactive refinement capability to Field Widget Actions Automation" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1914 [33] bug: #3586654 AiAutomatorEntityModifier::entityHasConfig() ignores the AI... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1915 [34] Issue #3586468: "Add interactive refinement capability to Field Widget Actions Automation" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1629 [35] Issue#3586539: Cherry pick d8017c74 (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1913 [36] Issue#3586539: Cherry pick d8017c74 (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1912 [37] Fix deleting the only selected tool in the AI tools library element. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1911 [38] Issue #3586539: Add ChatMemory plugin type (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1910 [39] Issue #3586539: Add ChatMemory plugin type (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1885 [40] Issue #3572645: Updated unconfigured ai provider handling. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1909 [41] bug: #3586637 should prefer chunk text over configured indexed fields (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1908 [42] fix: #3586589 Do not assume action definitions have a type when deriving action plugin functions (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1835 [43] task: #3586562 Add a configure-ai-settings agent skill for general AI settings... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1708 [44] feat: #3586638 Add AI request tag registry with static and dynamic discovery (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1907 [45] Issue #3499451: Restore toolbar chatbot state idempotently so a dialog re-attach cannot close it (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1815 [46] Issue #3499451: Fixed chatbot not reopening after CKEditor/media modal closes. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1277 [47] [META] 2026 AI Inside Roadmap to DrupalCon Rotterdam 2026 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586657 [48] QA Bi-Weekly Meeting - 5th August 2026 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586658 [49] Simplify structured output configuration in the Chat action (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585014 [50] [Meta] Cover remaining AI operation types with ECA execute actions (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585013 [51] Add ECA execute action for Translate Text (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585012 [52] Add ECA execute action for Text to Image (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585011 [53] Add ECA execute action for Text Classification (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585010 [54] Add ECA execute action for Summarization (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585009 [55] Add ECA execute action for Speech to Speech (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585008 [56] Add ECA execute action for Object Detection (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585006 [57] Add ECA execute action for Image to Video (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585005 [58] Add ECA execute action for Image to Image (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585004 [59] Add ECA execute action for Image Classification (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585003 [60] Add ECA execute action for Audio to Audio (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585002 [61] Migrate the ECA agent to the Tools + ReAct architecture (create-only) (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585017 [62] Add ECA execute action for Rerank (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585007 [63] Add AI ECA Interceptor submodule: intercept AI requests/responses through ECA (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3584407 [64] Issue #3585014 Simplify structured output configuration in the Chat action (ai_integration_eca, MR) — https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/12 [65] Resolve "9 different new actions" (ai_integration_eca, MR) — https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/9 [66] Resolve "Migrate the ECA agent to the Tools + ReAct architecture (create-only)" (ai_integration_eca, MR) — https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/14 [67] Issue #3568617: Added GitLab issue templates (Bug, Feature request... (ai_provider_anthropic, MR) — https://git.drupalcode.org/project/ai_provider_anthropic/-/merge_requests/23 [68] Issue #3607960: Add token counting, citations, and context management (ai_provider_anthropic, MR) — https://git.drupalcode.org/project/ai_provider_anthropic/-/merge_requests/35 [69] Alter description for model ID field in AzureProvider form to make clear the... (ai_provider_azure, MR) — https://git.drupalcode.org/project/ai_provider_azure/-/merge_requests/23 [70] Issue #3568632: Added GitLab issue templates (Bug, Default, Featur... (ai_vdb_provider_postgres, MR) — https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/merge_requests/18 [71] fix: #3609274 Cosine vectorSearch() defeats the embedding index it creates (ai_vdb_provider_postgres, MR) — https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/merge_requests/29 [72] Issue #3586862 by ignacio.perez.puertas: Re-apply Attributes columns after clear+reindex cycle (ai_vdb_provider_postgres, MR) — https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/merge_requests/24 [73] Issue #3553475: Fix query in deleteFromCollection(). (ai_vdb_provider_postgres, MR) — https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/merge_requests/14 [74] If only one tool, cannot delete it, gives an error: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php) & more (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586058 [75] AI Agents 1.3.3 release (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586069 [76] Use streamed chat for agents (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3538174 [77] Research Scratchboards (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3576571 [78] Tool settings popup on agent edit form has no visible close/save button (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586066 [79] Add note on structured output (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3550160 [80] PHPUnit CI job fails (exit code 1) for every test class despite all assertions passing (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586053 [81] AiAgentEntityWrapper::fromArray() fatals when the serialized chat history contains an image (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586067 [82] Add a per-tool setting to restrict a tool from being called more than once per response (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586051 [83] Add test coverage for externally-driven execution (setLooped(FALSE)) (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586052 [84] Disable hostname filtering does not work when looping is off (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586061 [85] Give a parent agent possibility to forward request as is (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3550098 [86] Make it possible to pick providers per agent (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3535760 [87] Expose the agent status stream as MCP-shaped progress to any chat consumer (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586072 [88] Vetoable AgentToolPreExecuteEvent and annotation-driven pre-tool confirmation via elicitation (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586071 [89] Preserve structured tool output as content blocks through the agent loop (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586070 [90] No way to limit the size of files passed to an agent (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586068 [91] Create implementation of ShortTermMemory (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3546411 [92] Add limits on how often a tool can run (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3547995 [93] Resolve ""ai_agent" entity type did not specify a list_builder handler." (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/334 [94] Tool settings popup on agent edit form has no visible close/save button (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/335 [95] Issue #3586065: Prevent undefined array key warning when parameters is missing (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/331 [96] feat: #3546411 use short term memory plugins in the agent loop (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/321 [97] AiAgentEntityWrapper::fromArray() fatals when the serialized chat history contains an image (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/333 [98] Issue#3556533:Normalize-Standalone-Line-Endings-Property_restrictions-Form fixes (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/332 [99] Dependency Dashboard (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591657 [100] Canvas AI: Send resolved prop values with current_layout, on both request paths (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591883 [101] Allow fields to be added to the page entity type (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3568228 [102] Brand Kit color support (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591838 [103] Support pushing code components from a headless codebase (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591912 [104] CKEditor links fail due to missing 'allow-forms' in ExtensionPage iframe sandbox (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591911 [105] Return flexible codebase files to local environment on canvas pull (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591862 [106] DefaultImagePreview renders the video src in an img tag instead of the poster (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591910 [107] User cannot publish changes for the unpublish page action on source (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591909 [108] Canvas AI: page builder discards the whole build when the LLM names a region that does not exist (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591876 [109] Canvas AI: Run the component agent in the dev chat with setLooped(FALSE), driven by the browser (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591884 [110] Content template preview is blank for every non-full view mode (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591908 [111] Cypress E2E parallel split balances by file count, not runtime — distribute by tagging slow/flaky specs (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591907 [112] Canvas AI: Add Tools dropdown to chat UI (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591856 [113] Missing upgrade path: stored `default-relative-url` prop sources written before 1.8 contain `$id` and fail `DefaultRelativeUrlPropSource::parse()` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591904 [114] Replace Lupus CE API with a dedicated Canvas Headless endpoint (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591861 [115] [META] Allow Canvas to be used on any content entity type (bundle), as long as it has certain entity type characteristics (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3498525 [116] chore(deps): update dependency cspell to v10 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1273 [117] chore(deps): update dependency @eslint/compat to v2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1306 [118] chore(deps): update dependency @chromatic-com/storybook to v5 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1305 [119] chore(deps): update mysql docker tag to v8.4 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1272 [120] fix(deps): update npm minor and patch (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1238 [121] #3591875: "Translatable props missing from TMGMT form when component instances cannot be auto-updated to active version" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1418 [122] feat(Page builder): #3568228 Add field_ui_base_route support for Canvas Page entity (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1471 [123] #3591883 Canvas AI: Send resolved prop values with current_layout, on both request paths (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1472 [124] #3591838 brand kit color implementation (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1385 [125] feat(Headless): #3591893 Enable headless previews for content templates (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1438 [126] feat(CLI Tool): Push components as external metadata when the Headless SDK is present (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1470 [127] Draft: #3591838 [PHASE 2] introduce color props (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1432 [128] feat: #3518272 support all entity types with configurable displays for content templates (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/791 [129] Draft: fix(CLI Tool): #3591895 CLI pull does not choose .jsx or .tsx based on pulled source (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1441 [130] #3591885: Add `document` object $ref for linking locally hosted documents (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1433 [131] chore: version packages (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1464 [132] fix(CLI Tool): #3591862 Add backward compatibility for codebase sync (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1469 [133] Issue #3591910: DefaultImagePreview renders the video src in an img tag instead of the poster (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1468 [134] feat(CLI Tool): Return flexible codebase files to local environment on canvas pull (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1443 [135] User cannot publish changes for the unpublish page action on source. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1467 [136] Draft: Resolve "User cannot publish changes for the unpublish page action on source" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1466 [137] Issues/3591884: Run component agnet with setlooped false. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1461 [138] fix: #3591876 Fall back to first region when the AI names a region that does not exist (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1423 [139] Don't collapse the preview iframe when a view mode's height comes from its content (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1465 [140] Draft: Resolve "Canvas AI: Add Tools dropdown to chat UI" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1447 [141] #3498525 Allow entity types other than node; add feature flag module for taxonomy terms. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1462 [142] feat(Headless): #3591861 Use the new Canvas content API endpoint in the headless SDK (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1437 [143] Rename entity bundle and target entity scope plugins for better DX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586276 [144] Clean up CCC inconsistencies and DX issues before rc1 (part 3) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586271 [145] [Meta] CCC MVP 1.0 roadmap (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3567798 [146] Update ai_context project page and docs based on new naming approach (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586217 [147] Create CCC video showing how to configure it (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586153 [148] CCC QA scripts for 1.0 testing (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586226 [149] Create CCC rc1 release (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586151 [150] [Discuss] Approach for CCC+agent integration testing (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3571117 [151] Full QA of CCC in prep for 1.0 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3573716 [152] Persist context-item token counts and show token-budget usage in CCC UI (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586379 [153] Decouple context item form descriptions from scope plugin descriptions (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586361 [154] [Discuss] Review context selection ranking factors before 1.0 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586365 [155] [Meta] CCC cleanup and API hardening from code review findings for beta4 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586309 [156] Harden CCC context item access checks and document the authoring trust model (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586356 [157] CCC beta4 codebase review (pre-release) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586374 [158] Design an indicator for the CCC UI that conveys subscription limits (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586337 [159] Remove max_items context limit and rely on the token budget (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586378 [160] Issue #3586271: Clean up CCC inconsistencies and DX issues before rc1 (part 3) (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/211 [161] Issue #3586276: Rename entity bundle and target entity scope plugins for better DX (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/195 [162] Issue #3586361: Decouple context item form descriptions from scope plugin descriptions. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/239 [163] Issue #3586356: Harden CCC context item access checks and document the authoring trust model. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/233 [164] Progressive indexing can drop tail chunks (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584032 [165] Add documentation (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585534 [166] Fix Pipeline (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585537 [167] InvalidArgumentException: Invalid translation language (und) when translating media entities (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585532 [168] Resolve "Add documentation" (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/32 [169] Issue #3585537: Fix the Pipelines by adding composer.json (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/34 [170] Resolve "InvalidArgumentException: Invalid translation language (und) when translating media entities" (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/36 [171] feat: Add batch translation for referenced translatable entities in AiTranslateController (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/35 [172] fix: #3585532 Translation language (und) when translating media entities. (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/30 [173] Issue #3548465: Add createScore() for feedback and a langfuse_feedback submodule (langfuse, MR) — https://git.drupalcode.org/project/langfuse/-/merge_requests/6 --- MODULE SUMMARIES ---

                                                      AI (Artificial Intelligence)

                                                      The project delivered several important capabilities during this period. A major advancement was completed to enable interactive refinement in Field Widget Actions, allowing editors to iteratively improve AI-generated content through conversational prompts before accepting it. This work enhances content creation workflows by giving editors more control over automated outputs.

                                                      A new chat memory plugin type was introduced, providing chatbots with standardized mechanisms to persist conversation history across requests. Each chatbot can now opt into server-side memory backends or continue managing history entirely in the browser. This foundation supports more sophisticated conversational experiences.

                                                      Multiple bug fixes were addressed, including issues affecting guardrail configuration forms and automator status settings. Work continued on improving chatbot stability, particularly around interactions with modals and the Drupal toolbar.

                                                      Looking ahead, the team is preparing releases for versions 1.4.6 and 1.3.11 following quality assurance testing. A substantial architectural proposal for rich structured chat—adopting Model Context Protocol shapes—has been filed but remains postponed pending maintainer approval. This proposal would affect the 1.6.x branch once created.

                                                      Several issues remain under review, including concerns around reranking logic for chunked search results, request tag registration for better visibility, and proper handling of unconfigured AI provider states. These reflect ongoing refinements as the module matures toward stable releases.

                                                      How can I help on this project?

                                                      Prioritize maintainer review of the Model Context Protocol adoption proposal to unblock architectural planning for version 1.6. Ensure adequate testing resources are allocated for the pending 1.4.6 and 1.3.11 releases to maintain quality standards. Consider whether additional resources are needed to address the backlog of open issues currently under review.

                                                      Contributors: Abhishek Dhariwal (adaptative), Ahmad Khader (Ahmad-Khader), Ahmad Khalil (ahmad-khalil-imagex), Ann Mary Sruthy (annmarysruthy), Artem Dmitriiev (a.dmitriiev) [1], Joshua Fernandes (joshua1234511), Levente Besenyei (LeventeB), Miguel Guerreiro (gueguerreiro), Prabhavathi Vanipenta (prabha1997), Ricardo Castañeda (cadence96), Rob Loach (robloach) [1]

                                                      ---

                                                      Drupal AI Initiative

                                                      Activity this period focused on planning and quality assurance. A roadmap was established targeting DrupalCon Rotterdam in late September, with the goal of demonstrating a fully integrated AI-powered Drupal site. The planned demonstration will showcase AI search, content review, translation, editor chat, observability, and guardrails working together on multilingual content. Visitors will be able to launch the demonstration site themselves within seconds. According to the [META] 2026 AI Inside Roadmap to DrupalCon Rotterdam 2026 issue, most individual features already function; the remaining work involves packaging them together with recipes and demonstration content.

                                                      The quality assurance team held its bi-weekly meeting, documented in QA Bi-Weekly Meeting - 5th August 2026. Testing is underway on Drupal CCC and regular releases. The team noted that developers are not consistently flagging issues as needing QA review, and plans are being made to onboard new QA team members.

                                                      How can I help on this project?

                                                      • Ensure the team has adequate resourcing and budget to complete the DrupalCon Rotterdam demonstration on schedule, including recipe development and demonstration content creation.
                                                      • Support QA capacity expansion by approving onboarding time for new quality assurance volunteers joining the initiative.
                                                      ---

                                                      AI Integration - ECA

                                                      This module bridges Drupal's Event-Condition-Action (ECA) workflow system with the AI module's capabilities. Over the past 24 hours, two major deliverables were merged that significantly expand what users can do with the integration and prepare it for its 1.0 release.

                                                      Nine new workflow building blocks were added, covering operations like text-to-image generation, image and text classification, translation, summarization, and video creation. Users can now trigger these AI operations through visual ECA workflows without writing custom code. This completes the coverage of all supported AI operation types except one (image-and-audio-to-video), which remains niche. A final operation—Rerank—is in development but not yet merged.

                                                      The ECA agent—a tool that lets users describe workflow automations in plain language and have the system generate them—was migrated to a new architecture that uses structured tools and reasoning loops. This modernizes the agent's implementation and brings it in line with the upstream AI module's current design patterns.

                                                      Work also began on improving how users configure structured responses in chat actions, and on a new feature that will allow workflows to intercept and modify AI requests and responses in real time.

                                                      How can I help on this project?

                                                      • Ensure testing resources are available to validate the new operation actions before the stable 1.0 release, particularly for media-heavy operations like video and image generation.
                                                      • Prioritize a decision on whether the AI Interceptor feature warrants release alongside 1.0 or should follow in a later version.

                                                      Contributors: Ahmad Khader (Ahmad-Khader), Marcus Johansson (Marcus_Johansson) [2]

                                                      ---

                                                      Anthropic Provider

                                                      Activity this period focused on project infrastructure and new feature development. Issue templates for bug reports and feature requests were added to the repository to streamline how contributors and users report problems and suggest improvements. This will help the team triage and respond to feedback more efficiently as the module matures.

                                                      A significant feature addition is in review that would add three new capabilities to the module: token counting (to track usage and costs), citation support (to reference sources in AI-generated responses), and context management tools (to handle long conversations more effectively). These features are designed to be optional and disabled by default, meaning existing functionality remains unchanged for current users. The work represents a major expansion of the module's capabilities for organizations that need tighter control over AI interactions and associated costs.

                                                      How can I help on this project?

                                                      • Ensure the team conducting the feature review has sufficient time allocated to thoroughly evaluate the token counting and context management additions before they reach production.
                                                      • Clarify organizational priorities around AI cost visibility and citation requirements to help guide which optional features should be recommended for broader adoption.

                                                      Contributors: Carlos Ospina (camoa), Mykola Podpriatov (nickolaj)

                                                      ---

                                                      Microsoft Azure AI

                                                      A user interface improvement was merged during this period to clarify how model identifiers are used when connecting to Azure services. The model ID field description update helps users understand that the value they enter will be sent directly to Azure when making requests. This reduces potential confusion during configuration and should help prevent setup errors.

                                                      The change represents incremental progress in making the module more accessible to site builders configuring Azure AI integrations.

                                                      How can I help on this project?

                                                      With no outstanding issues reported in this period, consider checking whether the module has sufficient user feedback to guide its roadmap toward a stable release, or whether additional testing resources would help validate the configuration experience improvements now in place.

                                                      Contributors: Peter Törnstrand (peter_tornstrand)

                                                      ---

                                                      Postgres VDB Provider

                                                      The Postgres VDB Provider module saw three improvements merged during this period, addressing core reliability and performance issues. A fix was applied to resolve a problem where the cosine vector search was not properly utilizing the embedding index it creates, which improves search performance. Another change ensures that attribute columns are correctly preserved when collections are cleared and reindexed, preventing data loss during maintenance operations. Finally, a query issue affecting the deletion of items from collections was corrected, ensuring data can be removed reliably.

                                                      These fixes strengthen the foundation of the module's vector database capabilities, making it more dependable for production use in AI-powered search and content retrieval features.

                                                      How can I help on this project?

                                                      • Support allocation of testing resources to validate these fixes in realistic production scenarios before wider deployment.
                                                      • Ensure stakeholder alignment on prioritizing stability work as the module matures toward a stable release.

                                                      Contributors: calmforce [1], Ignacio Pérez Puertas (djnash2002) [1], Mykola Podpriatov (nickolaj), Sergiu Nagailic (Nikro)

                                                      ---

                                                      AI Agents

                                                      The AI Agents module made significant progress over the past 24 hours, with version 1.3.3 released and several quality improvements merged.

                                                      Two key fixes were completed. First, a missing close button in the tool configuration popup has been resolved, improving the usability of the agent editing interface. Second, a technical error that prevented agents from correctly restoring conversation histories containing images has been fixed, ensuring agents can reliably continue conversations that include visual content.

                                                      The team also addressed issues affecting agent reliability: a security filtering inconsistency was resolved to ensure hostname restrictions work correctly in all execution modes, and additional test coverage was added to protect the external execution mode used by interactive interfaces. A new per-tool setting now allows administrators to prevent certain tools from being called multiple times in a single response, helping maintain control over agent behavior.

                                                      Open work includes a minor deletion bug affecting single-tool configurations, ongoing research into multi-agent communication patterns, and several proposals for advanced features such as streaming responses and improved progress reporting.

                                                      How can I help on this project?

                                                      Consider whether the project needs additional testing resources to address the CI pipeline stability issue. Review and approve or defer the three postponed feature proposals awaiting maintainer decision, as they represent significant architectural direction. Clarify requirements for the file size limit feature request to help contributors move forward.

                                                      Contributors: AKHIL BABU (AkhilBabu) [2], Alexis Martínez (alexismmd), Bharat Kelotra (bharatkelotra), Marcus Johansson (Marcus_Johansson)

                                                      ---

                                                      Drupal Canvas

                                                      Activity this period focused on improving the headless architecture, developer tooling, and the AI-powered page builder. Two significant improvements were merged that streamline workflows for teams building decoupled frontends.

                                                      The headless SDK now uses a dedicated Canvas content endpoint instead of relying on an external Lupus dependency, giving the project full control over how content is delivered to decoupled frontends. The CLI tool also gained the ability to synchronize flexible codebase files (package configuration, shared libraries) when pulling content from Canvas back to local development environments, with backward compatibility for older Canvas installations.

                                                      The AI page builder's developer chat underwent internal refactoring to improve how it processes requests. Instead of running the AI agent to completion in a single server request, the system now pauses after each decision and streams progress back to the browser, which should improve responsiveness and transparency during complex page builds.

                                                      Several user-facing fixes were merged, including a correction for blank previews when editing content templates in view modes other than "full," and improvements to video thumbnail rendering.

                                                      Work is progressing on brand kit color management, support for additional entity types beyond pages, and tools integration in the AI chat interface. Several issues remain open around component metadata handling, link editing in translated content, and data migration for properties created before version 1.8.

                                                      How can I help on this project?

                                                      • Prioritize decisions on which entity types beyond pages should support Canvas editing to guide the open entity type work.
                                                      • Review whether the brand kit color management roadmap aligns with your organization's design system requirements before implementation advances further.

                                                      Contributors: **** (project_19391_bot_17a61b0edeafd5a3db3e8b2462b6c010), **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Adam G-H (phenaproxima), AKHIL BABU (AkhilBabu) [1], Ben Mullins (bnjmnm), Bálint Kléri (balintbrews), Chandan Singh (chandu7929), Dave Long (longwave), David Bravo (davidbp), Harumi Jang (hooroomoo) [1], Jakub Piasecki (zaporylie) [1], Juan Correa (jucs7), Kunal Sachdev (kunal.sachdev), Matt Glaman (mglaman), Rajab Natshah (RajabNatshah), Rajendar Pothireddypally (RajendarReddy), wotnak [2]

                                                      ---

                                                      Context Control Center (CCC)

                                                      The project continued refinement work toward its first release candidate. Multiple design and quality initiatives advanced during the period.

                                                      A UI indicator design for subscription limits was completed and closed. This work will help site builders understand when they have reached or are approaching capacity for context items attached to AI agents, and guide them to appropriate next steps. The completed design work feeds into implementation of token count persistence and budget usage displays.

                                                      Preparations for the 1.0 release continued with planning around QA test scripts, a configuration video tutorial, and documentation updates to reflect the module's naming approach. Several open proposals address code cleanup, permission hardening, and interface improvements ahead of the release candidate milestone.

                                                      Work in progress includes renaming plugins for better usability, decoupling UI descriptions from internal plugin text, and simplifying configuration by relying solely on token budgets rather than item count limits.

                                                      How can I help on this project?

                                                      • Confirm resourcing for the QA testing window; the team has flagged a preference for 14 days lead time before the planned release date.
                                                      • Review and approve the design decisions around subscription limits and token budgets to unblock implementation.

                                                      Contributors: Juan Correa (jucs7), Kristen Pol (kepol), Tamas Balog (tbalog), Tekla Aivazashvili (aivazashvilit)

                                                      ---

                                                      AI Search

                                                      The AI Search module is addressing a data integrity issue in its indexing process. A bug was identified where the progressive indexing feature can fail to process all content chunks, potentially leaving portions of documents unindexed and unsearchable. This occurs when the system miscounts how many pieces a document needs to be split into, causing the indexing process to stop prematurely while incorrectly marking the work as complete.

                                                      The issue, Progressive indexing can drop tail chunks, was opened during this period and is now being tracked. This affects search completeness and accuracy—users searching for content may miss relevant results if that content happens to fall in the unprocessed portions of documents. The problem is reproducible and occurs when certain language processing configurations are used.

                                                      No code changes were merged or committed during this 24-hour window. As an early-stage module under active development, open bugs of this nature are expected and part of normal progress toward stability.

                                                      How can I help on this project?

                                                      • Prioritize engineering capacity to resolve the indexing completeness bug, as it directly impacts search quality and user trust in results.
                                                      • Support expanded testing resources to validate indexing across different language and content configurations before wider adoption.
                                                      ---

                                                      AI translate

                                                      The AI Translate module made progress on foundational quality improvements during this period. Documentation has been added to help users understand how to configure and use the module, addressing a previous gap in onboarding materials. Separately, automated testing infrastructure was repaired to ensure code quality checks run correctly, which supports more reliable future development.

                                                      Two proposals are under review to extend the module's translation capabilities. One addresses a bug where translating media entities (such as images) fails due to incorrect language handling. A related proposal would enable automatic translation of linked content, such as taxonomy terms referenced within an article, streamlining workflows where multiple related pieces of content need translation together.

                                                      How can I help on this project?

                                                      • Ensure review capacity is available to evaluate the two open translation enhancement proposals, which could materially improve user workflows if validated and merged.
                                                      • Consider user testing or feedback loops with teams translating media-heavy content to validate the proposed fixes meet real-world needs.

                                                      Contributors: Carlos Romero (o0Charly0o), Marcus Johansson (Marcus_Johansson) [1], Rob Loach (robloach) [1], szato (odi)

                                                      ---

                                                      Langfuse

                                                      Development progress continues on the Langfuse module with work underway to expand its feedback capabilities. A new merge request has been opened to introduce functionality for collecting user feedback, which will be packaged as a dedicated submodule. This addition will enable organizations to capture structured feedback within their Langfuse implementation, supporting better measurement of user sentiment and product quality. The work is currently under review and has not yet been integrated into the main codebase.

                                                      No new issues were raised during this period, and the project continues its development phase without critical blockers.

                                                      How can I help on this project?

                                                      • Ensure the team has access to subject matter experts or early adopters who can validate the feedback functionality against real-world use cases.
                                                      • Clarify the project's release roadmap and stability goals to help prioritize remaining development work.

                                                      Contributors: Abhisek Mazumdar (abhisekmazumdar)

                                                      ======================================================================== ## [28] factcheck:tldr:executive ======================================================================== Layer-1 corrections: 0 Judge flags: 1 ======================================================================== ## [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] Drupal 11.4 DeepChat Block does not work with Webprofiler enabled (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586615 [2] Add interactive refinement capability to Field Widget Actions (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586468 [3] Add interactive refinement capability to Field Widget Actions 2.x (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586655 [4] AiAutomatorEntityModifier::entityHasConfig() ignores the AI Automator's disabled (status: false) setting (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586654 [5] The Toolbar Chatbot runs the fold out animation on page reload (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3568246 [6] Allow Field Widget Actions to target a specific automator (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3571915 [7] Automator FWA buttons give no user feedback when values don't visibly change (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3585987 [8] QA of 1.4.6 and 1.3.11 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586651 [9] Release 1.4.6 and 1.3.11 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586650 [10] Add a ChatMemoryInterface for storing ChatBot chat history (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586539 [11] If only one tool, cannot delete it, gives an error: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php) & more (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586652 [12] AiToolsValidationException is not caught and passed back as tool output (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586653 [13] Undefined array key warnings in RestrictToTopic and RegexpGuardrail buildConfigurationForm() when creating new guardrail (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3584884 [14] Release 1.4.4 and 1.3.9 (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586586 [15] Allow Internal Tool Calling (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586616 [16] Provide proper support for "unconfigured" AI provider state (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3572645 [17] `AiReranker::extractItemText()` should prefer chunk text over configured indexed fields (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586637 [18] 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 [19] 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 [20] Approve the Chat Fundamentals (MCP-shaped rich chat) issue set for 1.6.x (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586639 [21] [Meta] Rich structured chat: adopt MCP content and interaction shapes (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586640 [22] (Optional) Typed context references on user messages via input-side content blocks (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586648 [23] Citations/sources and suggested replies via MCP shapes (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586647 [24] Elicitation round-trip: MCP-shaped request/result objects and pause/resume on ChatProcessor (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586646 [25] ChatBlockRenderer plugin type with default renderers and entity cards (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586645 [26] ChatProcessor: structured response channel and block-aware message history (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586644 [27] Add MCP content blocks and a _meta bag to ChatMessage (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586643 [28] Add MCP tool annotations to tool definitions and a ContentBlockProducerInterface for rich tool results (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586642 [29] Add ChatOutput::setMetadata() and stop discarding chunk metadata in streamed reconstruction (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586641 [30] Modules should register the AI request tags they can emit, at install time and dynamically (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3586638 [31] Chatbot closes itself when adding a modal (ai, Issue) — https://git.drupalcode.org/project/ai/-/work_items/3499451 [32] Issue #3586468: "Add interactive refinement capability to Field Widget Actions Automation" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1914 [33] bug: #3586654 AiAutomatorEntityModifier::entityHasConfig() ignores the AI... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1915 [34] Issue #3586468: "Add interactive refinement capability to Field Widget Actions Automation" (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1629 [35] Issue#3586539: Cherry pick d8017c74 (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1913 [36] Issue#3586539: Cherry pick d8017c74 (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1912 [37] Fix deleting the only selected tool in the AI tools library element. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1911 [38] Issue #3586539: Add ChatMemory plugin type (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1910 [39] Issue #3586539: Add ChatMemory plugin type (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1885 [40] Issue #3572645: Updated unconfigured ai provider handling. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1909 [41] bug: #3586637 should prefer chunk text over configured indexed fields (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1908 [42] fix: #3586589 Do not assume action definitions have a type when deriving action plugin functions (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1835 [43] task: #3586562 Add a configure-ai-settings agent skill for general AI settings... (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1708 [44] feat: #3586638 Add AI request tag registry with static and dynamic discovery (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1907 [45] Issue #3499451: Restore toolbar chatbot state idempotently so a dialog re-attach cannot close it (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1815 [46] Issue #3499451: Fixed chatbot not reopening after CKEditor/media modal closes. (ai, MR) — https://git.drupalcode.org/project/ai/-/merge_requests/1277 [47] [META] 2026 AI Inside Roadmap to DrupalCon Rotterdam 2026 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586657 [48] QA Bi-Weekly Meeting - 5th August 2026 (ai_initiative, Issue) — https://git.drupalcode.org/project/ai_initiative/-/work_items/3586658 [49] Simplify structured output configuration in the Chat action (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585014 [50] [Meta] Cover remaining AI operation types with ECA execute actions (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585013 [51] Add ECA execute action for Translate Text (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585012 [52] Add ECA execute action for Text to Image (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585011 [53] Add ECA execute action for Text Classification (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585010 [54] Add ECA execute action for Summarization (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585009 [55] Add ECA execute action for Speech to Speech (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585008 [56] Add ECA execute action for Object Detection (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585006 [57] Add ECA execute action for Image to Video (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585005 [58] Add ECA execute action for Image to Image (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585004 [59] Add ECA execute action for Image Classification (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585003 [60] Add ECA execute action for Audio to Audio (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585002 [61] Migrate the ECA agent to the Tools + ReAct architecture (create-only) (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585017 [62] Add ECA execute action for Rerank (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3585007 [63] Add AI ECA Interceptor submodule: intercept AI requests/responses through ECA (ai_integration_eca, Issue) — https://git.drupalcode.org/project/ai_integration_eca/-/work_items/3584407 [64] Issue #3585014 Simplify structured output configuration in the Chat action (ai_integration_eca, MR) — https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/12 [65] Resolve "9 different new actions" (ai_integration_eca, MR) — https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/9 [66] Resolve "Migrate the ECA agent to the Tools + ReAct architecture (create-only)" (ai_integration_eca, MR) — https://git.drupalcode.org/project/ai_integration_eca/-/merge_requests/14 [67] Issue #3568617: Added GitLab issue templates (Bug, Feature request... (ai_provider_anthropic, MR) — https://git.drupalcode.org/project/ai_provider_anthropic/-/merge_requests/23 [68] Issue #3607960: Add token counting, citations, and context management (ai_provider_anthropic, MR) — https://git.drupalcode.org/project/ai_provider_anthropic/-/merge_requests/35 [69] Alter description for model ID field in AzureProvider form to make clear the... (ai_provider_azure, MR) — https://git.drupalcode.org/project/ai_provider_azure/-/merge_requests/23 [70] Issue #3568632: Added GitLab issue templates (Bug, Default, Featur... (ai_vdb_provider_postgres, MR) — https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/merge_requests/18 [71] fix: #3609274 Cosine vectorSearch() defeats the embedding index it creates (ai_vdb_provider_postgres, MR) — https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/merge_requests/29 [72] Issue #3586862 by ignacio.perez.puertas: Re-apply Attributes columns after clear+reindex cycle (ai_vdb_provider_postgres, MR) — https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/merge_requests/24 [73] Issue #3553475: Fix query in deleteFromCollection(). (ai_vdb_provider_postgres, MR) — https://git.drupalcode.org/project/ai_vdb_provider_postgres/-/merge_requests/14 [74] If only one tool, cannot delete it, gives an error: Undefined array key 1 in Drupal\ai\Element\ToolsLibrary::processToolsLibrary() (line 89 of modules/contrib/ai/src/Element/ToolsLibrary.php) & more (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586058 [75] AI Agents 1.3.3 release (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586069 [76] Use streamed chat for agents (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3538174 [77] Research Scratchboards (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3576571 [78] Tool settings popup on agent edit form has no visible close/save button (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586066 [79] Add note on structured output (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3550160 [80] PHPUnit CI job fails (exit code 1) for every test class despite all assertions passing (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586053 [81] AiAgentEntityWrapper::fromArray() fatals when the serialized chat history contains an image (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586067 [82] Add a per-tool setting to restrict a tool from being called more than once per response (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586051 [83] Add test coverage for externally-driven execution (setLooped(FALSE)) (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586052 [84] Disable hostname filtering does not work when looping is off (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586061 [85] Give a parent agent possibility to forward request as is (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3550098 [86] Make it possible to pick providers per agent (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3535760 [87] Expose the agent status stream as MCP-shaped progress to any chat consumer (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586072 [88] Vetoable AgentToolPreExecuteEvent and annotation-driven pre-tool confirmation via elicitation (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586071 [89] Preserve structured tool output as content blocks through the agent loop (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586070 [90] No way to limit the size of files passed to an agent (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3586068 [91] Create implementation of ShortTermMemory (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3546411 [92] Add limits on how often a tool can run (ai_agents, Issue) — https://git.drupalcode.org/project/ai_agents/-/work_items/3547995 [93] Resolve ""ai_agent" entity type did not specify a list_builder handler." (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/334 [94] Tool settings popup on agent edit form has no visible close/save button (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/335 [95] Issue #3586065: Prevent undefined array key warning when parameters is missing (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/331 [96] feat: #3546411 use short term memory plugins in the agent loop (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/321 [97] AiAgentEntityWrapper::fromArray() fatals when the serialized chat history contains an image (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/333 [98] Issue#3556533:Normalize-Standalone-Line-Endings-Property_restrictions-Form fixes (ai_agents, MR) — https://git.drupalcode.org/project/ai_agents/-/merge_requests/332 [99] Dependency Dashboard (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591657 [100] Canvas AI: Send resolved prop values with current_layout, on both request paths (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591883 [101] Allow fields to be added to the page entity type (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3568228 [102] Brand Kit color support (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591838 [103] Support pushing code components from a headless codebase (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591912 [104] CKEditor links fail due to missing 'allow-forms' in ExtensionPage iframe sandbox (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591911 [105] Return flexible codebase files to local environment on canvas pull (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591862 [106] DefaultImagePreview renders the video src in an img tag instead of the poster (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591910 [107] User cannot publish changes for the unpublish page action on source (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591909 [108] Canvas AI: page builder discards the whole build when the LLM names a region that does not exist (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591876 [109] Canvas AI: Run the component agent in the dev chat with setLooped(FALSE), driven by the browser (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591884 [110] Content template preview is blank for every non-full view mode (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591908 [111] Cypress E2E parallel split balances by file count, not runtime — distribute by tagging slow/flaky specs (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591907 [112] Canvas AI: Add Tools dropdown to chat UI (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591856 [113] Missing upgrade path: stored `default-relative-url` prop sources written before 1.8 contain `$id` and fail `DefaultRelativeUrlPropSource::parse()` (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591904 [114] Replace Lupus CE API with a dedicated Canvas Headless endpoint (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3591861 [115] [META] Allow Canvas to be used on any content entity type (bundle), as long as it has certain entity type characteristics (canvas, Issue) — https://git.drupalcode.org/project/canvas/-/work_items/3498525 [116] chore(deps): update dependency cspell to v10 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1273 [117] chore(deps): update dependency @eslint/compat to v2 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1306 [118] chore(deps): update dependency @chromatic-com/storybook to v5 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1305 [119] chore(deps): update mysql docker tag to v8.4 (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1272 [120] fix(deps): update npm minor and patch (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1238 [121] #3591875: "Translatable props missing from TMGMT form when component instances cannot be auto-updated to active version" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1418 [122] feat(Page builder): #3568228 Add field_ui_base_route support for Canvas Page entity (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1471 [123] #3591883 Canvas AI: Send resolved prop values with current_layout, on both request paths (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1472 [124] #3591838 brand kit color implementation (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1385 [125] feat(Headless): #3591893 Enable headless previews for content templates (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1438 [126] feat(CLI Tool): Push components as external metadata when the Headless SDK is present (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1470 [127] Draft: #3591838 [PHASE 2] introduce color props (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1432 [128] feat: #3518272 support all entity types with configurable displays for content templates (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/791 [129] Draft: fix(CLI Tool): #3591895 CLI pull does not choose .jsx or .tsx based on pulled source (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1441 [130] #3591885: Add `document` object $ref for linking locally hosted documents (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1433 [131] chore: version packages (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1464 [132] fix(CLI Tool): #3591862 Add backward compatibility for codebase sync (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1469 [133] Issue #3591910: DefaultImagePreview renders the video src in an img tag instead of the poster (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1468 [134] feat(CLI Tool): Return flexible codebase files to local environment on canvas pull (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1443 [135] User cannot publish changes for the unpublish page action on source. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1467 [136] Draft: Resolve "User cannot publish changes for the unpublish page action on source" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1466 [137] Issues/3591884: Run component agnet with setlooped false. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1461 [138] fix: #3591876 Fall back to first region when the AI names a region that does not exist (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1423 [139] Don't collapse the preview iframe when a view mode's height comes from its content (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1465 [140] Draft: Resolve "Canvas AI: Add Tools dropdown to chat UI" (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1447 [141] #3498525 Allow entity types other than node; add feature flag module for taxonomy terms. (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1462 [142] feat(Headless): #3591861 Use the new Canvas content API endpoint in the headless SDK (canvas, MR) — https://git.drupalcode.org/project/canvas/-/merge_requests/1437 [143] Rename entity bundle and target entity scope plugins for better DX (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586276 [144] Clean up CCC inconsistencies and DX issues before rc1 (part 3) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586271 [145] [Meta] CCC MVP 1.0 roadmap (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3567798 [146] Update ai_context project page and docs based on new naming approach (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586217 [147] Create CCC video showing how to configure it (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586153 [148] CCC QA scripts for 1.0 testing (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586226 [149] Create CCC rc1 release (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586151 [150] [Discuss] Approach for CCC+agent integration testing (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3571117 [151] Full QA of CCC in prep for 1.0 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3573716 [152] Persist context-item token counts and show token-budget usage in CCC UI (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586379 [153] Decouple context item form descriptions from scope plugin descriptions (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586361 [154] [Discuss] Review context selection ranking factors before 1.0 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586365 [155] [Meta] CCC cleanup and API hardening from code review findings for beta4 (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586309 [156] Harden CCC context item access checks and document the authoring trust model (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586356 [157] CCC beta4 codebase review (pre-release) (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586374 [158] Design an indicator for the CCC UI that conveys subscription limits (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586337 [159] Remove max_items context limit and rely on the token budget (ai_context, Issue) — https://git.drupalcode.org/project/ai_context/-/work_items/3586378 [160] Issue #3586271: Clean up CCC inconsistencies and DX issues before rc1 (part 3) (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/211 [161] Issue #3586276: Rename entity bundle and target entity scope plugins for better DX (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/195 [162] Issue #3586361: Decouple context item form descriptions from scope plugin descriptions. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/239 [163] Issue #3586356: Harden CCC context item access checks and document the authoring trust model. (ai_context, MR) — https://git.drupalcode.org/project/ai_context/-/merge_requests/233 [164] Progressive indexing can drop tail chunks (ai_search, Issue) — https://git.drupalcode.org/project/ai_search/-/work_items/3584032 [165] Add documentation (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585534 [166] Fix Pipeline (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585537 [167] InvalidArgumentException: Invalid translation language (und) when translating media entities (ai_translate, Issue) — https://git.drupalcode.org/project/ai_translate/-/work_items/3585532 [168] Resolve "Add documentation" (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/32 [169] Issue #3585537: Fix the Pipelines by adding composer.json (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/34 [170] Resolve "InvalidArgumentException: Invalid translation language (und) when translating media entities" (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/36 [171] feat: Add batch translation for referenced translatable entities in AiTranslateController (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/35 [172] fix: #3585532 Translation language (und) when translating media entities. (ai_translate, MR) — https://git.drupalcode.org/project/ai_translate/-/merge_requests/30 [173] Issue #3548465: Add createScore() for feedback and a langfuse_feedback submodule (langfuse, MR) — https://git.drupalcode.org/project/langfuse/-/merge_requests/6 --- TODAY'S MODULE SUMMARIES ---

                                                        AI (Artificial Intelligence)

                                                        The project delivered several important capabilities during this period. A major advancement was completed to enable interactive refinement in Field Widget Actions, allowing editors to iteratively improve AI-generated content through conversational prompts before accepting it. This work enhances content creation workflows by giving editors more control over automated outputs.

                                                        A new chat memory plugin type was introduced, providing chatbots with standardized mechanisms to persist conversation history across requests. Each chatbot can now opt into server-side memory backends or continue managing history entirely in the browser. This foundation supports more sophisticated conversational experiences.

                                                        Multiple bug fixes were addressed, including issues affecting guardrail configuration forms and automator status settings. Work continued on improving chatbot stability, particularly around interactions with modals and the Drupal toolbar.

                                                        Looking ahead, the team is preparing releases for versions 1.4.6 and 1.3.11 following quality assurance testing. A substantial architectural proposal for rich structured chat—adopting Model Context Protocol shapes—has been filed but remains postponed pending maintainer approval. This proposal would affect the 1.6.x branch once created.

                                                        Several issues remain under review, including concerns around reranking logic for chunked search results, request tag registration for better visibility, and proper handling of unconfigured AI provider states. These reflect ongoing refinements as the module matures toward stable releases.

                                                        How can I help on this project?

                                                        Prioritize maintainer review of the Model Context Protocol adoption proposal to unblock architectural planning for version 1.6. Ensure adequate testing resources are allocated for the pending 1.4.6 and 1.3.11 releases to maintain quality standards. Consider whether additional resources are needed to address the backlog of open issues currently under review.

                                                        Contributors: Abhishek Dhariwal (adaptative), Ahmad Khader (Ahmad-Khader), Ahmad Khalil (ahmad-khalil-imagex), Ann Mary Sruthy (annmarysruthy), Artem Dmitriiev (a.dmitriiev) [1], Joshua Fernandes (joshua1234511), Levente Besenyei (LeventeB), Miguel Guerreiro (gueguerreiro), Prabhavathi Vanipenta (prabha1997), Ricardo Castañeda (cadence96), Rob Loach (robloach) [1]

                                                        ---

                                                        Drupal AI Initiative

                                                        Activity this period focused on planning and quality assurance. A roadmap was established targeting DrupalCon Rotterdam in late September, with the goal of demonstrating a fully integrated AI-powered Drupal site. The planned demonstration will showcase AI search, content review, translation, editor chat, observability, and guardrails working together on multilingual content. Visitors will be able to launch the demonstration site themselves within seconds. According to the [META] 2026 AI Inside Roadmap to DrupalCon Rotterdam 2026 issue, most individual features already function; the remaining work involves packaging them together with recipes and demonstration content.

                                                        The quality assurance team held its bi-weekly meeting, documented in QA Bi-Weekly Meeting - 5th August 2026. Testing is underway on Drupal CCC and regular releases. The team noted that developers are not consistently flagging issues as needing QA review, and plans are being made to onboard new QA team members.

                                                        How can I help on this project?

                                                        • Ensure the team has adequate resourcing and budget to complete the DrupalCon Rotterdam demonstration on schedule, including recipe development and demonstration content creation.
                                                        • Support QA capacity expansion by approving onboarding time for new quality assurance volunteers joining the initiative.
                                                        ---

                                                        AI Integration - ECA

                                                        This module bridges Drupal's Event-Condition-Action (ECA) workflow system with the AI module's capabilities. Over the past 24 hours, two major deliverables were merged that significantly expand what users can do with the integration and prepare it for its 1.0 release.

                                                        Nine new workflow building blocks were added, covering operations like text-to-image generation, image and text classification, translation, summarization, and video creation. Users can now trigger these AI operations through visual ECA workflows without writing custom code. This completes the coverage of all supported AI operation types except one (image-and-audio-to-video), which remains niche. A final operation—Rerank—is in development but not yet merged.

                                                        The ECA agent—a tool that lets users describe workflow automations in plain language and have the system generate them—was migrated to a new architecture that uses structured tools and reasoning loops. This modernizes the agent's implementation and brings it in line with the upstream AI module's current design patterns.

                                                        Work also began on improving how users configure structured responses in chat actions, and on a new feature that will allow workflows to intercept and modify AI requests and responses in real time.

                                                        How can I help on this project?

                                                        • Ensure testing resources are available to validate the new operation actions before the stable 1.0 release, particularly for media-heavy operations like video and image generation.
                                                        • Prioritize a decision on whether the AI Interceptor feature warrants release alongside 1.0 or should follow in a later version.

                                                        Contributors: Ahmad Khader (Ahmad-Khader), Marcus Johansson (Marcus_Johansson) [2]

                                                        ---

                                                        Anthropic Provider

                                                        Activity this period focused on project infrastructure and new feature development. Issue templates for bug reports and feature requests were added to the repository to streamline how contributors and users report problems and suggest improvements. This will help the team triage and respond to feedback more efficiently as the module matures.

                                                        A significant feature addition is in review that would add three new capabilities to the module: token counting (to track usage and costs), citation support (to reference sources in AI-generated responses), and context management tools (to handle long conversations more effectively). These features are designed to be optional and disabled by default, meaning existing functionality remains unchanged for current users. The work represents a major expansion of the module's capabilities for organizations that need tighter control over AI interactions and associated costs.

                                                        How can I help on this project?

                                                        • Ensure the team conducting the feature review has sufficient time allocated to thoroughly evaluate the token counting and context management additions before they reach production.
                                                        • Clarify organizational priorities around AI cost visibility and citation requirements to help guide which optional features should be recommended for broader adoption.

                                                        Contributors: Carlos Ospina (camoa), Mykola Podpriatov (nickolaj)

                                                        ---

                                                        Microsoft Azure AI

                                                        A user interface improvement was merged during this period to clarify how model identifiers are used when connecting to Azure services. The model ID field description update helps users understand that the value they enter will be sent directly to Azure when making requests. This reduces potential confusion during configuration and should help prevent setup errors.

                                                        The change represents incremental progress in making the module more accessible to site builders configuring Azure AI integrations.

                                                        How can I help on this project?

                                                        With no outstanding issues reported in this period, consider checking whether the module has sufficient user feedback to guide its roadmap toward a stable release, or whether additional testing resources would help validate the configuration experience improvements now in place.

                                                        Contributors: Peter Törnstrand (peter_tornstrand)

                                                        ---

                                                        Postgres VDB Provider

                                                        The Postgres VDB Provider module saw three improvements merged during this period, addressing core reliability and performance issues. A fix was applied to resolve a problem where the cosine vector search was not properly utilizing the embedding index it creates, which improves search performance. Another change ensures that attribute columns are correctly preserved when collections are cleared and reindexed, preventing data loss during maintenance operations. Finally, a query issue affecting the deletion of items from collections was corrected, ensuring data can be removed reliably.

                                                        These fixes strengthen the foundation of the module's vector database capabilities, making it more dependable for production use in AI-powered search and content retrieval features.

                                                        How can I help on this project?

                                                        • Support allocation of testing resources to validate these fixes in realistic production scenarios before wider deployment.
                                                        • Ensure stakeholder alignment on prioritizing stability work as the module matures toward a stable release.

                                                        Contributors: calmforce [1], Ignacio Pérez Puertas (djnash2002) [1], Mykola Podpriatov (nickolaj), Sergiu Nagailic (Nikro)

                                                        ---

                                                        AI Agents

                                                        The AI Agents module made significant progress over the past 24 hours, with version 1.3.3 released and several quality improvements merged.

                                                        Two key fixes were completed. First, a missing close button in the tool configuration popup has been resolved, improving the usability of the agent editing interface. Second, a technical error that prevented agents from correctly restoring conversation histories containing images has been fixed, ensuring agents can reliably continue conversations that include visual content.

                                                        The team also addressed issues affecting agent reliability: a security filtering inconsistency was resolved to ensure hostname restrictions work correctly in all execution modes, and additional test coverage was added to protect the external execution mode used by interactive interfaces. A new per-tool setting now allows administrators to prevent certain tools from being called multiple times in a single response, helping maintain control over agent behavior.

                                                        Open work includes a minor deletion bug affecting single-tool configurations, ongoing research into multi-agent communication patterns, and several proposals for advanced features such as streaming responses and improved progress reporting.

                                                        How can I help on this project?

                                                        Consider whether the project needs additional testing resources to address the CI pipeline stability issue. Review and approve or defer the three postponed feature proposals awaiting maintainer decision, as they represent significant architectural direction. Clarify requirements for the file size limit feature request to help contributors move forward.

                                                        Contributors: AKHIL BABU (AkhilBabu) [2], Alexis Martínez (alexismmd), Bharat Kelotra (bharatkelotra), Marcus Johansson (Marcus_Johansson)

                                                        ---

                                                        Drupal Canvas

                                                        Activity this period focused on improving the headless architecture, developer tooling, and the AI-powered page builder. Two significant improvements were merged that streamline workflows for teams building decoupled frontends.

                                                        The headless SDK now uses a dedicated Canvas content endpoint instead of relying on an external Lupus dependency, giving the project full control over how content is delivered to decoupled frontends. The CLI tool also gained the ability to synchronize flexible codebase files (package configuration, shared libraries) when pulling content from Canvas back to local development environments, with backward compatibility for older Canvas installations.

                                                        The AI page builder's developer chat underwent internal refactoring to improve how it processes requests. Instead of running the AI agent to completion in a single server request, the system now pauses after each decision and streams progress back to the browser, which should improve responsiveness and transparency during complex page builds.

                                                        Several user-facing fixes were merged, including a correction for blank previews when editing content templates in view modes other than "full," and improvements to video thumbnail rendering.

                                                        Work is progressing on brand kit color management, support for additional entity types beyond pages, and tools integration in the AI chat interface. Several issues remain open around component metadata handling, link editing in translated content, and data migration for properties created before version 1.8.

                                                        How can I help on this project?

                                                        • Prioritize decisions on which entity types beyond pages should support Canvas editing to guide the open entity type work.
                                                        • Review whether the brand kit color management roadmap aligns with your organization's design system requirements before implementation advances further.

                                                        Contributors: **** (project_19391_bot_17a61b0edeafd5a3db3e8b2462b6c010), **** (project_19391_bot_cb443e60680723bba08a5351bf595251), Adam G-H (phenaproxima), AKHIL BABU (AkhilBabu) [1], Ben Mullins (bnjmnm), Bálint Kléri (balintbrews), Chandan Singh (chandu7929), Dave Long (longwave), David Bravo (davidbp), Harumi Jang (hooroomoo) [1], Jakub Piasecki (zaporylie) [1], Juan Correa (jucs7), Kunal Sachdev (kunal.sachdev), Matt Glaman (mglaman), Rajab Natshah (RajabNatshah), Rajendar Pothireddypally (RajendarReddy), wotnak [2]

                                                        ---

                                                        Context Control Center (CCC)

                                                        The project continued refinement work toward its first release candidate. Multiple design and quality initiatives advanced during the period.

                                                        A UI indicator design for subscription limits was completed and closed. This work will help site builders understand when they have reached or are approaching capacity for context items attached to AI agents, and guide them to appropriate next steps. The completed design work feeds into implementation of token count persistence and budget usage displays.

                                                        Preparations for the 1.0 release continued with planning around QA test scripts, a configuration video tutorial, and documentation updates to reflect the module's naming approach. Several open proposals address code cleanup, permission hardening, and interface improvements ahead of the release candidate milestone.

                                                        Work in progress includes renaming plugins for better usability, decoupling UI descriptions from internal plugin text, and simplifying configuration by relying solely on token budgets rather than item count limits.

                                                        How can I help on this project?

                                                        • Confirm resourcing for the QA testing window; the team has flagged a preference for 14 days lead time before the planned release date.
                                                        • Review and approve the design decisions around subscription limits and token budgets to unblock implementation.

                                                        Contributors: Juan Correa (jucs7), Kristen Pol (kepol), Tamas Balog (tbalog), Tekla Aivazashvili (aivazashvilit)

                                                        ---

                                                        AI Search

                                                        The AI Search module is addressing a data integrity issue in its indexing process. A bug was identified where the progressive indexing feature can fail to process all content chunks, potentially leaving portions of documents unindexed and unsearchable. This occurs when the system miscounts how many pieces a document needs to be split into, causing the indexing process to stop prematurely while incorrectly marking the work as complete.

                                                        The issue, Progressive indexing can drop tail chunks, was opened during this period and is now being tracked. This affects search completeness and accuracy—users searching for content may miss relevant results if that content happens to fall in the unprocessed portions of documents. The problem is reproducible and occurs when certain language processing configurations are used.

                                                        No code changes were merged or committed during this 24-hour window. As an early-stage module under active development, open bugs of this nature are expected and part of normal progress toward stability.

                                                        How can I help on this project?

                                                        • Prioritize engineering capacity to resolve the indexing completeness bug, as it directly impacts search quality and user trust in results.
                                                        • Support expanded testing resources to validate indexing across different language and content configurations before wider adoption.
                                                        ---

                                                        AI translate

                                                        The AI Translate module made progress on foundational quality improvements during this period. Documentation has been added to help users understand how to configure and use the module, addressing a previous gap in onboarding materials. Separately, automated testing infrastructure was repaired to ensure code quality checks run correctly, which supports more reliable future development.

                                                        Two proposals are under review to extend the module's translation capabilities. One addresses a bug where translating media entities (such as images) fails due to incorrect language handling. A related proposal would enable automatic translation of linked content, such as taxonomy terms referenced within an article, streamlining workflows where multiple related pieces of content need translation together.

                                                        How can I help on this project?

                                                        • Ensure review capacity is available to evaluate the two open translation enhancement proposals, which could materially improve user workflows if validated and merged.
                                                        • Consider user testing or feedback loops with teams translating media-heavy content to validate the proposed fixes meet real-world needs.

                                                        Contributors: Carlos Romero (o0Charly0o), Marcus Johansson (Marcus_Johansson) [1], Rob Loach (robloach) [1], szato (odi)

                                                        ---

                                                        Langfuse

                                                        Development progress continues on the Langfuse module with work underway to expand its feedback capabilities. A new merge request has been opened to introduce functionality for collecting user feedback, which will be packaged as a dedicated submodule. This addition will enable organizations to capture structured feedback within their Langfuse implementation, supporting better measurement of user sentiment and product quality. The work is currently under review and has not yet been integrated into the main codebase.

                                                        No new issues were raised during this period, and the project continues its development phase without critical blockers.

                                                        How can I help on this project?

                                                        • Ensure the team has access to subject matter experts or early adopters who can validate the feedback functionality against real-world use cases.
                                                        • Clarify the project's release roadmap and stability goals to help prioritize remaining development work.

                                                        Contributors: Abhisek Mazumdar (abhisekmazumdar)

                                                        ======================================================================== ## [30] factcheck:capabilities:executive ======================================================================== Layer-1 corrections: 2 Judge flags: 4