Drupal AI Contribution meeting 2025-11-24
>>> [!note] Migrated issue
<!-- Drupal.org comment -->
<!-- Migrated from issue #3559530. -->
Reported by: [valthebald](https://www.drupal.org/user/239562)
>>>
<p>Drupal AI Contribution meeting from Nov 24, 2025 at 17:00 UTC to Nov 25, 2025 17:00 UTC (Check your local time at <a href="https://www.timebie.com/std/universal.php?q=17">https://www.timebie.com/std/universal.php?q=17</a>)</p>
<p>Previous meeting <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/ai/issues/3558177" title="Status: Closed (fixed)">#3558177: Drupal AI Contribution meeting 2025-11-17</a></span><br>
Next meeting <span class="drupalorg-gitlab-issue-link drupalorg-gitlab-link-wrapper"><a href="https://git.drupalcode.org/project/ai/-/work_items/3560640" class="drupalorg-gitlab-link">https://git.drupalcode.org/project/ai/-/work_items/3560640</a></span></p>
<h2>Where</h2>
<p>#ai-contrib channel in <a href="https://www.drupal.org/slack/">Drupal Slack</a></p>
<h2>Agenda</h2>
<h3>Attendees self-intro and interests</h3>
<h3>Follow-up to topics of previous meeting</h3>
<h3>Suggest your topic in comments</h3>
<h3>Add the issue you want to discuss as a related issue to this meeting</h3>
<h2>Transcript</h2>
<p>Hello everyone, and welcome to the Drupal AI contribution meeting!<br>
This meeting:<br>
➤ Happens every Monday in #ai-contrib channel<br>
➤ Starts at 16:00 UTC (check your time at <a href="https://www.timebie.com/std/universal.php?q=16">https://www.timebie.com/std/universal.php?q=16</a>)<br>
➤ Is text only!<br>
➤ Happens in threads, which you can follow to be notified of new replies even if you don’t comment in the thread. You may also join the meeting later and participate asynchronously.<br>
➤ New topics are posted at least 5 minutes after previous, to give attendees time to respond/suggest their (sub) topics<br>
➤ Refers to various issues and plans tracking in d.o project: <a href="https://www.drupal.org/project/ai/issues/3559530">https://www.drupal.org/project/ai/issues/3559530</a> Please comment there so we can grant you credit for attending/contributing! Please note, we will only give attributions for active engagement.<br>
➤ Transcript will be exported and posted* to the agenda issue. For anonymous comments, start with a :bust_in_silhouette: emoji. To take a comment or thread off the record, start with a :no_entry_sign: emoji.<br>
Some other emojis used in this meeting:<br>
:construction: - issue is in the works<br>
:blob_help: - help needed<br>
:status_needs_review: - needs review<br>
:pear: - low hanging fruit (novice or easy success issue)<br>
:comment: - call for discussion</p>
<h2>0️⃣ Roll call! Who's here? Please mention your <a href="http://drupal.org">drupal.org</a> username.And if you're up for a smalltalk, were you ever thinking about participating in VC gathering like YCombinator one <a href="https://www.ycombinator.com/demoday">next week</a>? (edited) </h2>
<table>
<tr>
<td>valthebald</td>
<td>(that was not an advertisement 🙂 )</td>
</tr>
<tr>
<td>Gurwinder</td>
<td>gantal :wave::skin-tone-4: my gathering participation been limited to tech conferences so far :disappointed:</td>
</tr>
<tr>
<td>matthews</td>
<td>matthews I don't know how I would even take part in such an event. I don't have the money to be an investor. I don't know how I'd be invited to do a demo on a demo day. I'm not sure what I would demo if I was invited. All the businesses I've started have either been service based or nonprofits. (edited)</td>
</tr>
<tr>
<td>dan2k3k4</td>
<td>dan2k3k4 :wave:</td>
</tr>
<tr>
<td>valthebald</td>
<td>I sometimes imagine myself on the pitching side 🙂</td>
</tr>
<tr>
<td>valthebald</td>
<td>but too lazy to develop crazy ideas to presentable state</td>
</tr>
<tr>
<td>matthews</td>
<td>@valthebald I have a pretty good sense of how BUSY you are. I wouldn't categorize you as being lazy in any sense of the word.</td>
</tr>
<tr>
<td>Tyler Staples (nexusnovaz)</td>
<td>nexusnovaz - I'm unsure what it all is, so nope from me haha</td>
</tr>
<tr>
<td>littlepixiez</td>
<td>Hellooo... Littlepixiez here! Clueless over here but sounds exciting! :heart_eyes:</td>
</tr>
<tr>
<td>Kristen Pol (she/her)</td>
<td>Kristen, California :wave: I haven’t attended any and don’t have a desire to tbhI have lived in Silicon Valley and been part of the startup scene (in the last tech bubble) and live on the edge of it now That’s good enough for now :)</td>
</tr>
<tr>
<td>Anmol Goel (anmolgoyal74)</td>
<td>Anmol, India. Not sure, If i would be taking part in such events.</td>
</tr>
<tr>
<td>svendecabooter</td>
<td>svendecabooter - not my cup of tea i think</td>
</tr>
<tr>
<td>harivansh</td>
<td>harivansh, India. Will not be participating.</td>
</tr>
<tr>
<td>lussoluca</td>
<td>lussoluca, not so into VC things :-)</td>
</tr>
<tr>
<td>bryan</td>
<td>:wave: b_sharpe</td>
</tr>
</table>
<h2>1️⃣ Release schedule</h2>
<table>
</table>
<h2>1️⃣ 1️⃣ No releases are planned this week in 1.1.x/1.2.x</h2>
<table>
<tr>
<td>valthebald</td>
<td>For 1.0.x, the only possible next release could be a security one, and if it happens, that would be the last supported 1.0.x release</td>
</tr>
<tr>
<td>valthebald</td>
<td>Usage numbers for 1.0. are quickly dropping, time to switch to 1.2.x 🙂</td>
</tr>
</table>
<h2>1️⃣ 2️⃣ 2.0.x progress</h2>
<table>
<tr>
<td>valthebald</td>
<td>2.0.x continues to be the main development branch, and is not intended for production</td>
</tr>
<tr>
<td>valthebald</td>
<td>Use on your own risk, or in case you want to contribute to the development of ai module ecosystem</td>
</tr>
</table>
<h2>2️⃣ This week's priorities</h2>
<table>
</table>
<h2>2️⃣ 1️⃣ <a href="https://www.drupal.org/project/ai/issues/3552887">Move AI Translate from the core</a> :construction:</h2>
<table>
<tr>
<td>valthebald</td>
<td>Removing part is easy, but it would be good to leave implementation of "Translate" operation type in AI module</td>
</tr>
<tr>
<td>valthebald</td>
<td>which has a dependency on ai_translate.settings configuration.</td>
</tr>
<tr>
<td>valthebald</td>
<td>I am not sure to best handle this, easiest option is keep a single default prompt for translation, leaving all the blows and whistles in the contrib module. Does it make sense?</td>
</tr>
<tr>
<td>svendecabooter</td>
<td>I don't immediately see that dependency?src/OperationType/TranslateText seems to provide a self-contained operation type interface, which then gets implemented by \Drupal\ai_translate\Plugin\AiProvider\ChatTranslationProviderThat currently works when ai_translate module is disabled, so moving that out of the AI module wouldn't really change much?Unless I'm missing something</td>
</tr>
<tr>
<td>valthebald</td>
<td>I think @Marcus Johansson’s suggestion was to leave also "Chat LLM" implementation in the core</td>
</tr>
<tr>
<td>valthebald</td>
<td>so I was thinking to leave ChatTranslationProvider in the core, but make it a single prompt entity. WDYT @svendecabooter?</td>
</tr>
<tr>
<td>svendecabooter</td>
<td>would it serve any purpose in the AI core module, if the ai_translate module is not installed?</td>
</tr>
<tr>
<td>svendecabooter</td>
<td>Just looking into how that class fits into the flow.. haven't looked at it in detailIt acts as a bridge to pass along "translate_text" operation logic, towards the default AI provider that is set up for the "chat" operation type, if I understand correctly</td>
</tr>
<tr>
<td>valthebald</td>
<td>exactlyhaving this plugin in core would automatically fill "Translate" select box with at least one provider</td>
</tr>
<tr>
<td>valthebald</td>
<td>I wonder if ckeditor translate plugin uses translate text operation type</td>
</tr>
<tr>
<td>svendecabooter</td>
<td>Seems to just be using "chat" from what I can tell</td>
</tr>
<tr>
<td>svendecabooter</td>
<td>Do we actually need the translateText() logic within a proxy AIProvider?Can't it be like "AI Translate triggers translation" -> "calls some service in ai_translate that gets correct prompt & sets variables - i.e. prepares the chat input specifically for translation" -> "calls the configured 'chat' AI provider, as configured via AI core"</td>
</tr>
<tr>
<td>svendecabooter</td>
<td>Because currently there's a "translate_text" operation type that isn't really being implemented by any AI provider specifically, it's just kind of there for the proxy...</td>
</tr>
<tr>
<td>svendecabooter</td>
<td>(maybe I'm missing some architectural complexities here... not sure)</td>
</tr>
<tr>
<td>valthebald</td>
<td>this operation type was added to integrate deeply translation, which doesn't need prompts</td>
</tr>
<tr>
<td>valthebald</td>
<td>and then implemented also by gemini using google cloud native translation</td>
</tr>
<tr>
<td>valthebald</td>
<td>but both implementations were not in ai core, so "Translate" select box was always empty</td>
</tr>
<tr>
<td>valthebald</td>
<td>(if you have only ai + plus provider module)</td>
</tr>
<tr>
<td>valthebald</td>
<td>for 1.x, it is impossible to move operation type definition out of ai core</td>
</tr>
<tr>
<td>svendecabooter</td>
<td>OK i see</td>
</tr>
<tr>
<td>svendecabooter</td>
<td>what does your suggestion "make it a single prompt entity" mean in practice then?</td>
</tr>
<tr>
<td>Marcus Johansson</td>
<td>So there are modules outside AI Translate that are using translate operation type, like <a href="https://www.drupal.org/project/ai_translate_textfield">https://www.drupal.org/project/ai_translate_textfield</a>, so it is being used.</td>
</tr>
<tr>
<td>valthebald</td>
<td>my suggestion is:ChatTranslationProvider uses a prompt with hard-coded ID (ai_translate.default), so no configuration neededprompt is installed from ai/config/install</td>
</tr>
<tr>
<td>svendecabooter</td>
<td>OK then AI Core comes with a simple ai_prompt entity for all translations + a basic ChatTranslationProvider plugin, whereas ai_translate comes with more complex prompt config (per language etc...), and a more complex AIProvider implementation, that is able to load the correct prompt based on context</td>
</tr>
<tr>
<td>svendecabooter</td>
<td>(or the core ChatTranslationProvider comes with an alter mechanism that ai_translate can leverage, if we don't want users to have to switch AI provider in settings?)</td>
</tr>
<tr>
<td>valthebald</td>
<td>that's the idea, yes</td>
</tr>
<tr>
<td>svendecabooter</td>
<td>I see 🙂 took some sidetracks in my head, but that sounds like a good approach yes :wink:</td>
</tr>
<tr>
<td>valthebald</td>
<td>it's always good to have a side track 🙂</td>
</tr>
</table>
<h2>2️⃣ 2️⃣ <a href="https://www.drupal.org/project/ai/issues/3492940">Add ChatConsumer</a> :status_needs_review:</h2>
<table>
<tr>
<td>valthebald</td>
<td>Keeping this issue in the list mainly because of its importance, but at this stage, it could be hard to enter the discussion (30 comments at the moment) (edited)</td>
</tr>
</table>
<h2>2️⃣ 3️⃣ <a href="https://www.drupal.org/project/ai/issues/3552774">Linkable schema for providers</a> :status_needs_review:</h2>
<table>
<tr>
<td>harivansh</td>
<td>I have worked, It need review. Waiting for the feedback.</td>
</tr>
</table>
<h2>2️⃣ 4️⃣ <a href="https://www.drupal.org/project/ai/issues/3552904">Moving out FWA</a> :construction:</h2>
<table>
<tr>
<td>valthebald</td>
<td>Work in progress lead by @artem</td>
</tr>
<tr>
<td>artem</td>
<td>I’ve made the necessary changes, now it needs final review from @Marcus Johansson (edited)</td>
</tr>
</table>
<h2>2️⃣ 5️⃣ <a href="https://www.drupal.org/project/ai/issues/3552885">Move out content suggestions</a> :blob_help:</h2>
<table>
<tr>
<td>valthebald</td>
<td>this module is up for grabbing!</td>
</tr>
<tr>
<td>valthebald</td>
<td>are you the next maintainer?</td>
</tr>
<tr>
<td>Kristen Pol (she/her)</td>
<td>Are we also considering renaming it? I know it has been confusing to some</td>
</tr>
<tr>
<td>Anmol Goel (anmolgoyal74)</td>
<td>I would like to take this up.</td>
</tr>
<tr>
<td>valthebald</td>
<td>@Kristen Pol (she/her) why not? 🙂</td>
</tr>
<tr>
<td>Kristen Pol (she/her)</td>
<td>I don’t know… I haven’t followed that issue or the naming confusions Perhaps a good one for the UX folks to chime in on if it might be renamed</td>
</tr>
<tr>
<td>valthebald</td>
<td>I saw some priority issues use Needs UX manager review, added this to the issue</td>
</tr>
<tr>
<td>Kristen Pol (she/her)</td>
<td>Ah… we had talked about using Needs UX but I’ll let @Aidan Foster chime in on that</td>
</tr>
<tr>
<td>Aidan Foster</td>
<td>Will have a look today and add comments to the issue. Also I'll check with my team and maybe this would be something we can take on.</td>
</tr>
<tr>
<td>Aidan Foster</td>
<td>Hi everyone, I think it should be renamed:Content Suggestions isn't what the module actually does. It's doing recommendations, writes summaries, auto tagging, and assess grade levels for the written content.I reviewed this with my team, and we're up for taking stewardship of this module if that makes sense to the AI Initiative. It's aligned with our collective work over on the Context Control Center so might be a good test bed for that work.I also wanted to cite that <a href="https://www.drupal.org/project/ai_content_advisor">https://www.drupal.org/project/ai_content_advisor</a> has a lot of similarities. We might think about merging at some point. (edited)</td>
</tr>
<tr>
<td>Kristen Pol (she/her)</td>
<td>Thanks for the review and update :pray:</td>
</tr>
</table>
<h2>2️⃣ 6️⃣ <a href="https://www.drupal.org/project/ai/issues/3553398">Move AI agents Entity to AI core</a></h2>
<table>
<tr>
<td>valthebald</td>
<td>This one is important for Drupal Canvas and will be backported to 1.2.x/1.3.x if we can't release AI 2.0 by the end of January 2026</td>
</tr>
<tr>
<td>littlepixiez</td>
<td>Interesting - but it will keep all the keys etc? Might be able to help with this</td>
</tr>
</table>
<h2>3️⃣ Discussions</h2>
<table>
</table>
<h2>3️⃣ 1️⃣ <a href="https://www.drupal.org/project/ai/issues/3552140">Make Add/Edit Agent UI less overwhelming</a> :comment:</h2>
<table>
</table>
<h2>3️⃣ 2️⃣ <a href="https://www.drupal.org/project/ai/issues/3456768">Interface suggestion for text classification operation type</a> :comment:</h2>
<table>
</table>
<h2>3️⃣ 3️⃣ <a href="https://www.drupal.org/project/ai/issues/3556187">System prompt form element</a>? :comment:</h2>
<table>
</table>
<h2>3️⃣ 4️⃣ <a href="https://www.drupal.org/project/ai/issues/3556140">Allow usage of Tool API in Agents</a> :comment:</h2>
<table>
</table>
<h2>3️⃣ 5️⃣ <a href="https://www.drupal.org/project/ai/issues/3552825">Multiple providers of the same type</a> :comment:</h2>
<table>
</table>
<h2>3️⃣6️⃣ <a href="https://www.drupal.org/project/ai/issues/3559800">Operation types vs Provider plugins</a></h2>
<table>
<tr>
<td>artem</td>
<td>@Marcus Johansson this is the Discussion issue that I promised to create</td>
</tr>
<tr>
<td>Marcus Johansson</td>
<td>Thank you!</td>
</tr>
<tr>
<td>harivansh</td>
<td>@Marcus Johansson I have commented the approach to remove the Provider proxy[#3552919]#comment-16359697</td>
</tr>
<tr>
<td>artem</td>
<td>nice explanation and once again good approach @harivansh!</td>
</tr>
<tr>
<td>artem</td>
<td>also regarding the Trait thing, that I mentioned yesterday, just to try to minimize compatibility issues</td>
</tr>
<tr>
<td>artem</td>
<td>here <a href="https://www.php.net/manual/en/language.oop5.traits.php">https://www.php.net/manual/en/language.oop5.traits.php</a> there is an aliased approach for methods from Trait</td>
</tr>
<tr>
<td>artem</td>
<td>I am not sure, but maybe we can try to do the following:use ChatTrait {<br>
ChatTrait::doChat as chat<br>
}</td>
</tr>
<tr>
<td>artem</td>
<td>in provider, and this way they won’t need to explicitly implement the doChat method</td>
</tr>
<tr>
<td>artem</td>
<td>but maybe it is just stupid and naive thing from my side</td>
</tr>
<tr>
<td>harivansh</td>
<td>I will look into trait method aliasing. (edited)</td>
</tr>
</table>
<h2>4️⃣ Open questions (not only code)</h2>
<table>
</table>
<h2>4️⃣ 1️⃣ Contrib meeting frequency</h2>
<table>
<tr>
<td>valthebald</td>
<td>About a month ago I <a href="https://www.drupal.org/project/ai/issues/3554412">have asked</a> if that'd be OK to return to meetings once every 2 weeks instead of weekly ones.Consensus was that bi-weekly is OK, but the weekly format is better</td>
</tr>
<tr>
<td>valthebald</td>
<td>I need some help here, because frankly, I'm starting to feel the pressure</td>
</tr>
<tr>
<td>valthebald</td>
<td>Does anyone want to give a helping hand and lead some of the meetings?</td>
</tr>
<tr>
<td>littlepixiez</td>
<td>It's sort of bang on teatime here, perhaps a post somewhere with an idea of what it sort of involves or could we split out your responsibilities? Like can anybody help out doing little bits of admin? But sadly can't help lead the meetings just due to childcare conflicts! :pensive:</td>
</tr>
<tr>
<td>Kristen Pol (she/her)</td>
<td>I could lead the meeting every other week if someone else does the issue work so that could be a good splitUnless someone else wants to lead it!</td>
</tr>
</table>
<h2>5️⃣ Open Mike! What are you working on? Are you blocked? Or do you want to discuss a specific topic? Add your status, questions, and topics (and discuss them in threads) for another 23 hours. Start a new thread named 5️⃣ 1️⃣ , 5️⃣ 2️⃣ etc.</h2>
<table>
<tr>
<td>yautja_cetanu (Jamie)</td>
<td>Just a quick update on what we are FG are focusing on:Very High PriorityRelease of AI module 1.3 (Need a Meta Issue for this)Release of AI Agents 1.3(Need a Meta Issue for this)Release of Drupal CMS 2.0Its possible there is a change to the installer to the <a href="http://amazee.io">amazee.io</a>Medium (2025) PriorityHelping with the MCP recipe release if neededEC Jan 13th Training Demos + RecipesEvaluate all the existing Alt Text and provides suggested changes.Using MCP for the Alt Text guidelines.Helping with migration of specific sites.Categorisation Agents (To their external taxnomy)using MCP for the listMedia Agents (Helping if needed)PoC of AI powered Design system. (A little to get the community going)PoC of FlowDrop + AI (Might have to be us alot, but maybe QED42?) (If we can do this, we can show it off January)Medium (2026) PriorityDrush commands to create a whole themeLocalgov Drupal IdeasBrand guideline agent + Moderation queueAI Migration for from Wordpress for a ClientAI work for a compliance clientLower Priority (Important but not 2025)Tools APIWe swap to tools being the default and require the tools module.Tools API refactor of Drupal CMS AI Agents.(Update the Drupal CMS Recipe to Tools[#3556140]AI Agents Runner to SMFlowdrop deterministic + Non determinisicAI 2.0(edited)</td>
</tr>
</table>
<h2>5️⃣ 1️⃣ <a href="https://www.drupal.org/project/ai/issues/3480683">Use core Json::encode() and Json::decode everywhere possible</a></h2>
<table>
<tr>
<td>Tyler Staples (nexusnovaz)</td>
<td>I've just popped a comment on this ticket after reviewing. I've found a couple of references, and would be good if someone can confirm whether these need to be addressed!</td>
</tr>
</table>
<h2>5️⃣ 2️⃣ Working with a number of folks (Aidan/Emma/Marcus/Jamie/Ted) on the redesign/rearchitecture of the context module and will want more feedback from the wider community soon… stay tuned!</h2>
<table>
<tr>
<td>Kristen Pol (she/her)</td>
<td>Join the #ai-context channel if you’re interested</td>
</tr>
</table>
<h2>5️⃣3️⃣ This issue[#3555399] needs review :status_needs_review:</h2>
<table>
</table>
<h2>5️⃣4️⃣ working on a POC for[#3553408], I'll post some details later this week</h2>
<table>
</table>
<p>Participants:</p>
<p>valthebald, Gurwinder, matthews, dan2k3k4, Tyler Staples (nexusnovaz), littlepixiez, Kristen Pol, Anmol Goel (anmolgoyal74), svendecabooter, harivansh, lussoluca, bryan</p>
issue