Drupal AI Contribution meeting 2025-07-07
>>> [!note] Migrated issue
<!-- Drupal.org comment -->
<!-- Migrated from issue #3533872. -->
Reported by: [valthebald](https://www.drupal.org/user/239562)
>>>
<p>Drupal AI Contribution meeting from July 7, 2025 at 13:00 UTC to July 8, 2025 13:00 UTC (Check your local time at <a href="https://www.timebie.com/std/universal.php">https://www.timebie.com/std/universal.php</a>)</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>New "...to be triaged" category</h3>
<h3>Target branch clarifications</h3>
<h2>Attendees</h2>
<p>In the order of appearance:</p>
<p>valthebald, beautifulmind, matthews, dan2k3k4, lussoluca, thejimbirch, Bisonbleu, d34dman, Marcus Johansson, breidert, jurgenhaas, Kristen Pol</p>
<h2>Meeting transcript</h2>
<p>Hello everyone, and welcome to the Drupal AI contribution meeting!This meeting:➤ Happens every other Monday in #ai-contribute channel➤ Starts at 13:00 UTC (check your time at <a href="https://www.timebie.com/std/universal.php?q=13">https://www.timebie.com/std/universal.php?q=13</a>)➤ Is text only!➤ 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.➤ New topics are posted at least 5 minutes after previous, to give attendees time to respond/suggest their (sub) topics➤ Refers to various issues and plans tracking in d.o project:<span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/ai/issues/3533872" title="Status: Closed (fixed)">#3533872: Drupal AI Contribution meeting 2025-07-07</a></span> Please comment there so we can grant you credit for attending/contributing! Please note, we will only give attributions for active engagement.➤ Transcript will be exported and posted* to the agenda issue. For anonymous comments, start with a 👤 emoji. To take a comment or thread off the record, start with a 🚫 emoji.</p>
<h2>0️⃣ Roll call! Who's here? And to start with (almost) non-technical question, do you side with Cloudflare or AI scraper bots it's trying to stop?</h2>
<table>
<tr>
<td>beautifulmind</td>
<td>Bhavin Joshi (beautifulmind) -- <a href="https://jos.cx">Joshi Consultancy Services</a>As a developer, I do not take sides. (edited)</td>
</tr>
<tr>
<td>matthews</td>
<td>Matthew Saunders (MatthewS) - <a href="http://amazee.io">amazee.io</a>. I don't take a side per-se, but I've worked with Cloudflare more. (edited)</td>
</tr>
<tr>
<td>dan2k3k4</td>
<td>:wave: Dan (dan2k3k4)I believe we do need a way to prevent and restrict bots/scrapers in much the same way that spiders should respect robots.txt settings</td>
</tr>
<tr>
<td>matthews</td>
<td>Hi @beautifulmind and @dan2k3k4 :wave:</td>
</tr>
<tr>
<td>matthews</td>
<td>(and everyone else)</td>
</tr>
<tr>
<td>lussoluca</td>
<td>Luca (lussoluca). Hi!I also think that something like robots.txt must be respected by AI spiders</td>
</tr>
<tr>
<td>thejimbirch</td>
<td>:wave: Cloudflare created another great tool to use. Robots.txt is great if the bots respect it, but there are, and will continue to be bots that don't. <a href="https://www.nytimes.com/robots.txt">Great Robots.txt example</a>.</td>
</tr>
<tr>
<td>Bisonbleu</td>
<td>:wave: Good morning… I need a :coffee: and can make my own, bot/scrapers need data and cannot make their own…</td>
</tr>
<tr>
<td>matthews</td>
<td>Problem is the bots don't respect robots.txt</td>
</tr>
<tr>
<td>d34dman</td>
<td>Hi, Shibin Das (d34dman) - Factorial GmbH 🙂 (edited)</td>
</tr>
<tr>
<td>Marcus Johansson</td>
<td>Marcus (marcus johansson) - Cloudflare.</td>
</tr>
<tr>
<td>breidert</td>
<td>Hello all - I am with Cloudflare, crawlers cause traffic spikes and cost. They should ask permission.</td>
</tr>
<tr>
<td>jurgenhaas</td>
<td>Hi, we're using CrowdSec to keep malicious request away from our customer's sites, and they've just also made available a block list for AI bots. We're in the process of reviewing and testing that.</td>
</tr>
<tr>
<td>Kristen Pol (she/her)</td>
<td>Kristen, normally in California but currently in Washington state on my way to airport :wave: :airplane: I am siding with Cloudflare based on my limited knowledge of the approach Ideally we can gatekeep bots and only allow them if we want to, either for free or a fee that goes to the content creator</td>
</tr>
</table>
<h2>1️⃣ Follow up from the previous meeting</h2>
<table>
</table>
<h2>1️⃣ 1️⃣ Release schedule</h2>
<table>
<tr>
<td>valthebald</td>
<td>we have agreed to use first and third Wednesday of each month as release window, following the core and other contrib practice</td>
</tr>
<tr>
<td>valthebald</td>
<td>for the upcoming Wednesday, July 9, plan is to release 1.1.1 and first alpha of 1.2.0</td>
</tr>
</table>
<h2>1️⃣ 2️⃣ Roadmap for release 1.2.0[#3528530]</h2>
<table>
<tr>
<td>valthebald</td>
<td>please follow this issue if you want to participate/be "in the know"</td>
</tr>
<tr>
<td>Andy Marquis</td>
<td>@valthebald - can we get[#3531717] added to the 1.2 release? @svendecabooter and I have both tested and confirmed the patch is working as expected.</td>
</tr>
<tr>
<td>valthebald</td>
<td>@Andy Marquis this issue is already part of 1.2.0 roadmapI will review it after the "active" part of the meeting</td>
</tr>
<tr>
<td>Andy Marquis</td>
<td>Oh good, I must have missed it. Thanks</td>
</tr>
</table>
<h2>1️⃣ 3️⃣ Meta issues</h2>
<table>
<tr>
<td>valthebald</td>
<td>Due to increased activity in ai issue queue, we started to use meta-issues more. Here are some active meta issues:</td>
</tr>
<tr>
<td>valthebald</td>
<td><a href="https://www.drupal.org/project/ai/issues/353310[#3454452]">https://www.drupal.org/project/ai/issues/353310[#3454452]</a></td>
</tr>
<tr>
<td>breidert</td>
<td>I think the <a href="https://www.drupal.org/project/ai_agents/issues/3518963">guardrails issue</a> should also be a meta issue listed here. It is conceptional and from implementation it will be similar to Logging / Obersability. Mabye it should be moved to the ai issue board. Is ai_agents not moving into ai module anyways @Marcus Johansson?</td>
</tr>
<tr>
<td>valthebald</td>
<td>Is ai_agents not moving into ai moduleplanned in 2.0</td>
</tr>
<tr>
<td>Marcus Johansson</td>
<td>Its moving in 2.0 - I have always been a little bit uncertain about the Guardrails issue, because there are most likely use cases in none-agent workflows for at least input and output guardrails, so it might be that the AI module should take care of the actual plugin, and the Agents module is one consumer of it.But yeah, it makes sense to make it into a meta issue to discuss where it belongs if nothing else.</td>
</tr>
<tr>
<td>breidert</td>
<td>But implementattion would be similar to observability, right? I mean guardrails would also listen to events and react if an event does not comply with the guardrails (e.g. contains PII data).</td>
</tr>
<tr>
<td>Marcus Johansson</td>
<td>In the backend I think so, in the UI/UX we have to have it easy to create and set the guardrails at the same place as you set the agents as well. Guardrails for agents can be many very specifics Guardrails for one agent or even for a parameter of an tool an agent uses, while in the Guardrails for general things like AI Translate or AI Content Suggestions, you usually just set very broad things like PII data.An example for a specific Guardrail for a specific agent, could be something like:Check so the text in the image does not include any instructions that are no cooking instructions.
<p>Examples of cooking instructions are...You only want to run that for the agent that creates food recipes, not all AI calls.And then for the parameter recipe instructions you could have deterministic guardrails that checks for </p>
<script> tags for instance.</script></td></tr>
<tr><td>breidert</td><td>Yeah, this makes sense, logic and processing to fullfill guardrails is different (and the configuration UI of course), but it just listens to events just like obersability.</td></tr>
<tr><td>breidert</td><td>I added the information as <a href="https://www.drupal.org/project/ai_agents/issues/3518963#comment-16181342">a comment to the issue</a>.</td></tr>
</table>
<h2>1️⃣ 4️⃣ Revised components in the issue queue</h2>
<table>
<tr><td>valthebald</td><td>Thanks to @Kristen Pol (she/her), we now have revised component list in the issue queue[#3533272], with the new one ...to be triaged used as default</td></tr>
<tr><td>valthebald</td><td>approach is borrowed from experience builder project</td></tr>
<tr><td>Kristen Pol (she/her)</td><td>Thanks for announcing this :) a bit painful to refactor but now each submodule issue has a proper “home”</td></tr>
</table>
<h2>1️⃣ 5️⃣ First month of Drupal AI initiative</h2>
<table>
<tr><td>valthebald</td><td>AI initiative team is working on a June update[#3534170], if you have ideas on what should be mentioned, please contact them</td></tr>
<tr><td>Kristen Pol (she/her)</td><td>Note that I thought that was a general update but was instead focused on marketing</td></tr>
<tr><td>Kristen Pol (she/her)</td><td>We’ll still do a dev update but not via that issue</td></tr>
<tr><td>Kristen Pol (she/her)</td><td>You can add a comment there until we have a proper issue</td></tr>
<tr><td>Kristen Pol (she/her)</td><td>As Marcus already wrote some things</td></tr>
</table>
<h2>2️⃣ Issues/areas needing help</h2>
<table>
</table>
<h2>2️⃣ 1️⃣ Local setup with DDEV</h2>
<table>
<tr><td>valthebald</td><td><a href="https://www.drupal.org/project/ai/issues/3532795">https://www.drupal.org/project/ai/issues/3532795</a> needs review</td></tr>
<tr><td>lussoluca</td><td>hi, local setup works. Next steps:decide if this is what we need (I think yes 🙂 )decide what to put in the ai_dev_recipewrite documentation</td></tr>
<tr><td>matthews</td><td>has anyone talked to Randy Fay about this?</td></tr>
<tr><td>lussoluca</td><td>not yet</td></tr>
<tr><td>matthews</td><td>He's a close friend of mine if there is any need for introductions.</td></tr>
<tr><td>lussoluca</td><td>Thanks! A colleague of mine knows him well too</td></tr>
<tr><td>valthebald</td><td>everybody knows good old Randy! 🙂</td></tr>
<tr><td>matthews</td><td>He's just about as great a guy as you can come by. 🙂</td></tr>
<tr><td>yautja_cetanu (Jamie)</td><td>I also loved hanging out with Randy at Drupal camp London a while back :)</td></tr>
<tr><td>dan2k3k4</td><td>pinged @rfay 🙂 (edited)</td></tr>
<tr><td>Bisonbleu</td><td>Anyone using the same ddev sandbox to work on more than one project ? How do you deal with the multiple/nested git repos? Git worktree?</td></tr>
<tr><td>breidert</td><td>Checking the <a href="https://git.drupalcode.org/project/ai/-/merge_requests/714/diffs#0bd51b932c52d5ad82badc2635aca568c749178a">MR</a> it looks really good :+1:So you would like testing on the setup, then we move to recipe and documentation, correct?</td></tr>
<tr><td>valthebald</td><td>@Bisonbleu git submodules work fine</td></tr>
<tr><td>valthebald</td><td>i.e. you can composer require drupal/<modulename>:1.x-dev</modulename></td></tr>
<tr><td>valthebald</td><td>for multiple modules, and commit in every separate subrepo inside modules/contrib</td></tr>
<tr><td>lussoluca</td><td>So you would like testing on the setup, then we move to recipe and documentation, correct?correct</td></tr>
<tr><td>rfay</td><td>Commented there, recommend a DDEV add-on instead of wiring in ddev config.</td></tr>
<tr><td>lussoluca</td><td>I've used <a href="https://github.com/ddev/ddev-drupal-contrib">https://github.com/ddev/ddev-drupal-contrib</a>, you're saying that I don't have to commit the files provided by the addon?</td></tr>
<tr><td>rfay</td><td>Not exactly. If a team were using the repo, I'd suggest committing, and the team lead or whatever could manage the updates. But for a publicly available repo, I think it's kind of messy, and best to recommend installing an add-on.</td></tr>
<tr><td>rfay</td><td>But absolutely don't put name in config.yaml 🙂 And perhaps omit a few other things, certainly omit all comments</td></tr>
<tr><td>lussoluca</td><td>so I can develop a new addon, then when a new developer want to contribute to a drupal ai, he just clone the repo and install the addon, correct?e (edited)</td></tr>
<tr><td>rfay</td><td>Yes, that's the approach I would use.</td></tr>
<tr><td>rfay</td><td>So much easier to maintain the DDEV integration via an add-on than maintaining it in the repo here, and it should then be usable in other contexts.</td></tr>
<tr><td>lussoluca</td><td>it makes sense</td></tr>
<tr><td>rfay</td><td>It's possible I'm too opinionated. Just had the same conversation in search_api though...<span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-13"><a href="https://www.drupal.org/project/search_api/issues/3520659" title="Status: Needs work">#3520659: Enable local development env with DDEV</a></span>#comment-16149749</td></tr>
<tr><td>lussoluca</td><td>I admit I copied from devel (<a href="https://git.drupalcode.org/project/devel/-/tree/5.x/.ddev?ref_type=heads">https://git.drupalcode.org/project/devel/-/tree/5.x/.ddev?ref_type=heads</a>). I said to myself, if the DDEV Drupal Contrib maintainer does it, it will be the right way :sweat_smile:</td></tr>
<tr><td>rfay</td><td>That's a little different (probably?) because that's a situation where devel is rarely the project root, and when it is it's fine. Here you're always the project root, true?</td></tr>
<tr><td>rfay</td><td>(Happy to continue this conversation). Adding .ddev to a team-owned web project is definitely preferred. I just don't know about it on an open-source template type of thing.</td></tr>
<tr><td>lussoluca</td><td>I think that the devel use case is the same: clone the project and then just run ddev start to have the same configuration.But now, after all the discussions here and in the search_api issue, I think that committing all the .ddev folder to a contrib module can be more complex to maintain</td></tr>
<tr><td>rfay</td><td>I'm sure interested in the conversation and your experience over time whatever approach you take.</td></tr>
<tr><td>Kristen Pol (she/her)</td><td>@Darren fyi ^</td></tr>
<tr><td>lussoluca</td><td>@rfay what pattern do you think is more suitable for a contrib module like AI?:contrib module in the root and then symlinked to web/custom, like <a href="https://github.com/ddev/ddev-drupal-contribdrupal">https://github.com/ddev/ddev-drupal-contribdrupal</a> in the root and contrib cloned into web/custom, like <a href="https://github.com/drupal-xb/ddev-drupal-xb-dev">https://github.com/drupal-xb/ddev-drupal-xb-dev</a></td></tr>
<tr><td>lussoluca</td><td>if the AI module is going to be split into more submodules in the future, maybe the second pattern is better (it will be easier to compose different modules together)</td></tr>
<tr><td>rfay</td><td>It depends how it's used of course. If the contrib module is the project root usually, then a config.yaml without name can work. But it sure did make a mess in one of them. Can't remember which.</td></tr>
</table>
<h2>2️⃣ 2️⃣ UX of conversation interface</h2>
<table>
<tr><td>valthebald</td><td>Meta issue[#3533631]</td></tr>
<tr><td>valthebald</td><td>also, there is an idea to use ReactFlow (already used by XB) in chat UI as well[#3515026]</td></tr>
<tr><td>breidert</td><td>I think this issue should be re-worked. The issue description is very short:Explore ReactFlow for the modeller or Comfy UI instead of BPMNIt looks like a placeholder or reminder rather than something to be work with. I would imagine that we need a description what the requirements are, how to investigate if other software meets the requirements. Also links to ReactFlow and Comfy UI would be helpful. Should I leave a comment in the issue for this?</td></tr>
<tr><td>valthebald</td><td>sure thing @breidertplease do</td></tr>
<tr><td>breidert</td><td>@Kristen Pol (she/her) - do we have any requirements for issues, that we could follow?</td></tr>
<tr><td>Kristen Pol (she/her)</td><td>Traveling home today so not at computer… we don’t have any written guidelines for requirements afaik so we can create them</td></tr>
</table>
<h2>2️⃣ 3️⃣ Security submodule</h2>
<table>
<tr><td>valthebald</td><td>Meta issue[#3454452]</td></tr>
<tr><td>breidert</td><td>I think the title of the issue should be changes from[META] Create an AI Security module for custom moderation callsto[META] Create an module for custom prompt moderationOtherwise it sounds like it is similar to the the <a href="https://www.drupal.org/project/ai_agents/issues/3518963">guardrails issue</a>.</td></tr>
</table>
<h2>2️⃣ 4️⃣ Base class for OpenAI compatible providers in ai core?</h2>
<table>
<tr><td>valthebald</td><td>Discussion issue[#3531134]</td></tr>
<tr><td>valthebald</td><td>pro - less duplicated code for providers like litellm, lmstudio, amazeecontra - another dependency</td></tr>
<tr><td>matthews</td><td>I'll bring this up with amazee just in case it isn't on our radar.</td></tr>
<tr><td>yautja_cetanu (Jamie)</td><td>There is a question here as to whether we should put the openai base class in a php agentic framework instead of the AI module as well</td></tr>
<tr><td>Marcus Johansson</td><td>@matthews - @dan2k3k4 should be aware of it.</td></tr>
<tr><td>dan2k3k4</td><td>yep, flagged in one of our internal channels for @pmelab to check if he has time</td></tr>
<tr><td>dan2k3k4</td><td>from my quick review, it should work fine - tests fail as they're testing with a different AI release and not the merge request version</td></tr>
<tr><td>dan2k3k4</td><td>and it looks like Philipp fixed the MR for the <a href="http://amazee.ai">amazee.ai</a> provider module<a href="https://git.drupalcode.org/project/ai_provider_amazeeio/-/merge_requests/15@gxleano">https://git.drupalcode.org/project/ai_provider_amazeeio/-/merge_requests/15@gxleano</a></td></tr>
<tr><td>gxleano</td><td>I will take a look on the @pmelab changes, but it looks fine so far</td></tr>
<tr><td>gxleano</td><td>After that I will move it to RTBC, if for @pmelab everything is ok</td></tr>
<tr><td>dan2k3k4</td><td>oh one thing I notice is that your MR is to 1.1.x of the ai_provider_amazeeio moduleMaybe it needs to be bumped to 1.2.x to correspond with 1.2.x of the ai module ? :thinking_face:</td></tr>
<tr><td>dan2k3k4</td><td>(but maybe that means we need to open/create the 1.2.x branch first and I don't have maintainer access to ai_provider_amazeeio module :sweat_smile:)</td></tr>
<tr><td>gxleano</td><td>Yes</td></tr>
<tr><td>gxleano</td><td>hahaha</td></tr>
<tr><td>gxleano</td><td>There is no 1.2.x branch yet</td></tr>
<tr><td>pmelab</td><td>its hard to keep up with the releases of ai :sweat_smile:</td></tr>
<tr><td>gxleano</td><td>Yep, things move forward really fast</td></tr>
</table>
<h2>2️⃣ 5️⃣ Text extraction - use the same approach in content suggestion and ai translate</h2>
<table>
<tr><td>valthebald</td><td>I came by this issue[#3527520] while searching for something else, and it struck me that the service that extracts text from content entities already exist in ai_translate</td></tr>
<tr><td>valthebald</td><td>so maybe it would be good to use the same approach?</td></tr>
<tr><td>breidert</td><td>@jhedstrom :point_up:</td></tr>
<tr><td>jhedstrom</td><td>The solution I cobbled together for one project was to leverage the services in the <a href="https://www.drupal.org/project/search_api_attachments">Search API Attachments</a> module to extract media text on save, then leverage that text on node save since it is then available for the automators via tokens. I think a similar approach could be used for the content suggestions for embedded media or other entities in the parent forms…</td></tr>
</table>
<h2>2️⃣ 6️⃣ HTML to markdown abstraction</h2>
<table>
<tr><td>valthebald</td><td><a href="https://www.drupal.org/project/ai/issues/3534120">https://www.drupal.org/project/ai/issues/3534120</a></td></tr>
<tr><td>matthews</td><td>what is "league package"? - fine to pull this into a DM if it is already common knowledge.</td></tr>
<tr><td>Marcus Johansson</td><td>@matthews: <a href="https://github.com/thephpleague/commonmark">https://github.com/thephpleague/commonmark</a></td></tr>
<tr><td>matthews</td><td>Thanks Marcus</td></tr>
<tr><td>breidert</td><td>@artem :point_up:</td></tr>
<tr><td>artem</td><td>I tried to put as much as possible to the issue</td></tr>
<tr><td>artem</td><td>basically, it would be nice that this conversion is done with Drupal service, or some Drupal thing, that can be decorated, overwritten, etc.</td></tr>
<tr><td>Marcus Johansson</td><td>@artem - what do you think of doing it as part of this issue:[#3528673]We already are trying to normalize so you can use anything to create markdown from PDF, screenshot image from a Website URL, HTML from Website URL etc. - in Langchain you call these document loaders. So, the abstraction would be quite similar to AI Providers, but are mostly for helping with loading/transforming data.I think HTML to markdown also fits into this. And it would follow your idea as is more or less - a plugin with processing and configurations that any third part module could utilize.</td></tr>
<tr><td>Marcus Johansson</td><td>The difference being, that for PDF to Markdown, HTML to Markdown HTML from Website etc, we could have a default plugin already in core, since PHP can handle some of these things with okish to good success. And then you can add <a href="http://Unstructured.io">Unstructured.io</a> or ScrapingBot or whatever if you want better results.</td></tr>
<tr><td>artem</td><td>I totally agree</td></tr>
<tr><td>artem</td><td>if there are even more places where this can help - even better</td></tr>
<tr><td>valthebald</td><td>The logic of render array to HTML (or other format) happens in Drupal\Core\EventSubscriber\MainContentViewSubscriber::onViewRenderArray(): $wrapper = $request->query->get(static::WRAPPER_FORMAT, 'html');
// Fall back to HTML if the requested wrapper envelope is not available.
$wrapper = isset($this->mainContentRenderers[$wrapper]) ? $wrapper : 'html';
$renderer = $this->classResolver->getInstanceFromDefinition($this->mainContentRenderers[$wrapper]);
$response = $renderer->renderResponse($result, $request, $this->routeMatch);could it be that we're talking about render array > markdown conversion rather than html > markdown?</td></tr>
<tr><td>valthebald</td><td>in the former case, it's the matter of having MarkdownRenderer service</td></tr>
</table>
<h2>3️⃣ Non-code related questions</h2>
<table>
</table>
<h2>3️⃣ 1️⃣ Do people like the idea of splitting up the modules in AI module or prefer it being in one place ?</h2>
<table>
<tr><td>valthebald</td><td>link to the discussion that started last week - <a href="https://drupal.slack.com/archives/C0803LX4536/p1751294525694429">https://drupal.slack.com/archives/C0803LX4536/p1751294525694429</a></td></tr>
<tr><td>Andy Marquis</td><td>+1 for one place</td></tr>
<tr><td>matthews</td><td>I prefer not having to go searching around. I think unless there is a compelling reason to break it up, it shouldn't be.</td></tr>
<tr><td>andy_w</td><td>So much of Drupal is going to lean on the AI module suite, these modules are going to be so important, and their functionality so wide that like the ai image alt I think they should be broken up, but would be good to have a central list, much like the webform module and its centralised list of recommendations. (+1 for separation - with dependancies on the main base module) (edited)</td></tr>
<tr><td>valthebald</td><td>Doesn't composer solve the problem of multiple repositories?</td></tr>
<tr><td>Andy Marquis</td><td>Val, I believe the issue is that sub-modules basically reserve a namespace in composer but when someone goes to create a new module on <a href="http://drupal.org">drupal.org</a>, the sub-module names can’t be validated to prevent name collisions. So one theory around solving this was to transition out of sub-module architecture and split those out into separate contrib modules but the theory IMO is very flawed and unrealistic given ecosystems like webform and ECA that have so many parts.</td></tr>
<tr><td>yautja_cetanu (Jamie)</td><td>It solves it for devs but no one else.It's far from obvious as a non developer what modules exist that composer requires. We require a lot of libraries such as tiktoken and openai pho sdk and those have almost no visibility. Some people do check them but it's rare it's talked about.The Issue queue is optimiser around modules, it's very hard to manage issues in <a href="http://drupal.org">drupal.org</a> across multiple modules. It's hard to favourite some issues or set up filters of multiple modules in the ecosystem easily that everyone can see. (You can do something personally with filters but it's not the same as an issue queues I know everyone can see ).From a reliability point of view, generally speaking the sub modules in webform I take to have Jay's seal of approval. In reality sub modules can get ignored but when it comes to the webform ecosystem I have to evaluate each new module one by one before using it, who is the maintainer? How active is the issue queue, what is the install base? How future proofed is it ? If we split everything up we lose that. Similarly I trust the sub modules in commerce more than the sub modules across commerce(edited)</td></tr>
<tr><td>mandclu</td><td>IMHO the field_widget_actions submodule specifically could be really useful for use cases that don't need AI. For example, it could be useful for having ECA-based data alterations. I would vote for having that as a separate module, which the AI module could require</td></tr>
<tr><td>Kristen Pol (she/her)</td><td>We discussed that sub module specifically and I said it shouldn’t be in the ai project if it handles non-AI things but that won’t happen for awhile I think</td></tr>
</table>
<h2>3️⃣ 2️⃣ Ethical aspects of AI</h2>
<table>
<tr><td>valthebald</td><td>Discussion issue[#3533875]</td></tr>
<tr><td>matthews</td><td>Part of the training session I'm helping put together for Govcon in DC is going to cover some of this topic.</td></tr>
<tr><td>matthews</td><td>I'm happy to collaborate with anyone that wants to do a think in this space with me.</td></tr>
</table>
<h2>3️⃣ 3️⃣ Documentation</h2>
<table>
<tr><td>valthebald</td><td><a href="https://www.drupal.org/project/ai/issues/353389[#3453630]">https://www.drupal.org/project/ai/issues/353389[#3453630]</a></td></tr>
<tr><td>valthebald</td><td>for the first issue, would be something Amazee is interested in? @dan2k3k4 @matthews</td></tr>
<tr><td>matthews</td><td>Yes. We're interested in helping get a page up and running on <a href="http://Drupal.org">Drupal.org</a></td></tr>
<tr><td>matthews</td><td>I think a central place for people to try this is pretty critical to adoption. Right now we're fragmented.</td></tr>
<tr><td>Kristen Pol (she/her)</td><td>Some other issues</td></tr>
<tr><td>Kristen Pol (she/her)</td><td><a href="https://www.drupal.org/project/ai_initiative/issues/3511483">https://www.drupal.org/project/ai_initiative/issues/3511483</a></td></tr>
<tr><td>Kristen Pol (she/her)</td><td><a href="https://www.drupal.org/project/ai_initiative/issues/3534360">https://www.drupal.org/project/ai_initiative/issues/3534360</a></td></tr>
</table>
<h2>3️⃣ 4️⃣ Feedback on AI meetings</h2>
<table>
<tr><td>valthebald</td><td>@Kristen Pol (she/her) has opened[#3533303] and I tried to answer most of the points</td></tr>
<tr><td>valthebald</td><td>if you have yours, feel free to comment here or in the issue</td></tr>
<tr><td>Kristen Pol (she/her)</td><td>I don’t see any comments you @valthebald but I’m on phone so maybe some caching issue?</td></tr>
<tr><td>valthebald</td><td>@Kristen Pol (she/her) I renamed event from meetup to meeting, added disclaimer that we post transcript, and added date instead of meeting number :nerd_face:</td></tr>
<tr><td>Kristen Pol (she/her)</td><td>Sweet :clap:</td></tr>
</table>
<h2>3️⃣ 5️⃣ Create MAINTAINERS.txt</h2>
<table>
<tr><td>valthebald</td><td>Issue[#3528785]</td></tr>
<tr><td>valthebald</td><td>I have started to write the roles, but quickly understood that I don't know the whole picture.@Marcus Johansson - the chief and boss of everything</td></tr>
<tr><td>valthebald</td><td>@Scott Euser and myself for all things multilingual</td></tr>
<tr><td>valthebald</td><td>help me please with everything else 🙂</td></tr>
<tr><td>valthebald</td><td>non-coding roles are equally important, would be good to describe these of @Kristen Pol (she/her) and @breidert among others</td></tr>
<tr><td>valthebald</td><td>@yautja_cetanu (Jamie) - BDFL 🙂</td></tr>
<tr><td>Marcus Johansson</td><td>I probably forget something now, so help me out (and this is code focused and not much focus on AI Core):@Scott Euser - main maintainer for AI Search and the coming prompt library in the AI Core, co-maintainer of AI Translate and AI Logging.@Seogow - creator of the first underlying AI Core module and co-maintainer of the AI Search, AI Logging and AI Automators@wouters_f - creator and main maintainer of AI Validations and co-maintainer of AI CKEditor, AI Content Suggestions, AI ECA, AI Translate.@kevinquillen - creator and co-maintainer of AI Content Suggestions, AI ECA, AI Translate and AI API Explorer. Creator and main maintainer of CKEditor.@gxleano - co-maintainer of AI Search, AI Assistants API and AI Chatbot.@artem - creator and main maintainer of Field Widget Actions, co-maintainer of AI Content Suggestions and AI CKEditor@valthebald co-maintainer of the AI Translate module</td></tr>
<tr><td>Seogow</td><td>Not in the office for the next two weeks, but seems good to me</td></tr>
<tr><td>Marcus Johansson</td><td>I think also @Roland Obermair should be mentioned in there, even if he's not a maintainer, he should be written down as Creator of the Deepchat part of the AI Chatbot module.Same with @Andrew Belcher being the Creator of the Operation Types and one of the creators of the AI Search module (it was a puzzle that came from many places).</td></tr>
</table>
<h2>3️⃣ 6️⃣ Issue workflow</h2>
<table>
<tr><td>valthebald</td><td><a href="https://www.drupal.org/project/ai_initiative/issues/3532764">https://www.drupal.org/project/ai_initiative/issues/3532764</a></td></tr>
<tr><td>Kristen Pol (she/her)</td><td>And related[#3534360]</td></tr>
</table>
<h2>4️⃣ Updates from maintainers</h2>
<table>
</table>
<h2>4️⃣ 2️⃣ Marcus</h2>
<table>
<tr><td>Marcus Johansson</td><td>So, the main feature for at least editors in AI 1.2.0 will be the Field Widget Actions module. The module itself, is just a builder module that allows you to add buttons on entity form elements, that allows you to fill out that form. Its using an abstraction layer that allows any processor to tell what fields and widgets it supports and can run it.I have had at least 20+ people ask me in different variations "The Automators are nice, but I don't want automation - how can I trigger it via a button" . Well, now you can! And in the future agents and ECA as well!I have added plugins for three examples - Autocomplete Tags field, Image Alt Text and Text fields like title. Check the video for the Autocomplete one.But we want more! So I have created a parent issue, for anyone wanting to help with this. One plugin, one credit. Check here if you want to help out:<span class="drupalorg-gitlab-issue-link drupalorg-gitlab-link-wrapper"><a href="https://git.drupalcode.org/project/ai/-/work_items/3534445" class="drupalorg-gitlab-link">https://git.drupalcode.org/project/ai/-/work_items/3534445</a></span></td></tr>
<tr><td>Marcus Johansson</td><td>Also in 1.2.x there will be a possibility for any contrib module that relies on AI to spoof an provider API request with only a YAML file. The AI Test provider module that is under tests in AI Core, can listen to any installed module for the resources/ai_test/requests/{method} where method is for instance chat. If you put a file in there and the request of any input to the AI test provider, fits the requests section it will output the response section.This means that you can use it in kernel and functional testing, without having to learn how to do mocks using Guzzle or setup something like Mockoon. Just one YAML file and you are ready to go.The above video example actually runs as a functional test using this now, where you can see the output of the browser in the artifacts of each phpunit run, see: <a href="https://git.drupalcode.org/project/ai/-/jobs/5803480/artifacts/browse/web/sites/default/files/simpletest/screenshots/ai_automators/AutoCompleteTagsTaxonomyTest/">https://git.drupalcode.org/project/ai/-/jobs/5803480/artifacts/browse/web/sites/defaul[…]est/screenshots/ai_automators/AutoCompleteTagsTaxonomyTest/</a></td></tr>
<tr><td>Marcus Johansson</td><td>This is documented from 1.2.x on here: <a href="https://project.pages.drupalcode.org/ai/1.2.x/contribute/testing/spoof_provider/">https://project.pages.drupalcode.org/ai/1.2.x/contribute/testing/spoof_provider/</a></td></tr>
</table>
<h2>5️⃣ Open mike! Suggest your topic(s)</h2>
<table>
<tr><td>d34dman</td><td>Just for improving the discovery of things to do with AI on <a href="http://drupal.org">drupal.org</a>, I have started this[#3533902] Cross posting to spread awareness.</td></tr>
<tr><td>d34dman</td><td>Oops! it was posted in this channel before.. I thought I had posted it in #ai -.-" its so confusing!</td></tr>
<tr><td>valthebald</td><td>It is! :nerd_face:</td></tr>
<tr><td>matthews</td><td>Further on the Documentation thread, I think we need to not just highlight where you can try Drupal AI, I think we need it right there on <a href="http://Drupal.org">Drupal.org</a>. I think it's lovely to direct folks to different companies that you can do that, but I think it would be even better to not send someone somewhere else. I know that is counter-intuitive for someone representing a company that want's to sell services to say, but I feel there is urgency to build this eco-system (outside of us that ALREADY KNOW how awesome it is and that it is getting better) as quickly as possible.</td></tr>
<tr><td>Kristen Pol (she/her)</td><td>There has been some discussion about perhaps white labeling Drupal Forge so it’s accessible via a DA domain but not sure of the status of that /cc @Darren</td></tr>
<tr><td>Darren</td><td>My conclusion after discussing with @Sal was that because the AI initiative members plan for their work to be available only from members for six months, it would be more appropriate for DevPanel to join the AI initiative and build a white label version of Drupal Forge that would be under the control of the AI initiative. Since I am not directly involved in the negotiations I do not know the status of the proposal.</td></tr>
<tr><td>Darren</td><td>I created a <a href="https://www.drupal.org/project/drupalforge_token">token</a> module that would allow a Drupal Forge express launch widget for any demo to be embedded on <a href="http://drupal.org">drupal.org</a>. Last I heard it was blocked because @drumm wanted to wait until <a href="http://drupal.org">drupal.org</a> ran on Drupal 10. Now that sections of the site do run Drupal 10, there is no reason to wait. There is an example of the embedded widget on my personal site: <a href="https://darren.oh.name/node/73 ">https://darren.oh.name/node/73 </a>(edited)</td></tr>
<tr><td>Kristen Pol (she/her)</td><td>Thanks for the update</td></tr>
</table>
> Related issue: [Issue #3533024](https://www.drupal.org/node/3533024)
> Related issue: [Issue #3534170](https://www.drupal.org/node/3534170)
> Related issue: [Issue #3533875](https://www.drupal.org/node/3533875)
> Related issue: [Issue #3527520](https://www.drupal.org/node/3527520)
> Related issue: [Issue #3533303](https://www.drupal.org/node/3533303)
> Related issue: [Issue #3509235](https://www.drupal.org/node/3509235)
> Related issue: [Issue #3534360](https://www.drupal.org/node/3534360)
> Related issue: [Issue #3534120](https://www.drupal.org/node/3534120)
> Related issue: [Issue #3533897](https://www.drupal.org/node/3533897)
> Related issue: [Issue #3493277](https://www.drupal.org/node/3493277)
> Related issue: [Issue #3519474](https://www.drupal.org/node/3519474)
> Related issue: [Issue #3523061](https://www.drupal.org/node/3523061)
> Related issue: [Issue #3515026](https://www.drupal.org/node/3515026)
> Related issue: [Issue #3532795](https://www.drupal.org/node/3532795)
> Related issue: [Issue #3533109](https://www.drupal.org/node/3533109)
> Related issue: [Issue #3533890](https://www.drupal.org/node/3533890)
> Related issue: [Issue #3456553](https://www.drupal.org/node/3456553)
> Related issue: [Issue #3533631](https://www.drupal.org/node/3533631)
> Related issue: [Issue #3454452](https://www.drupal.org/node/3454452)
> Related issue: [Issue #3453630](https://www.drupal.org/node/3453630)
> Related issue: [Issue #3528530](https://www.drupal.org/node/3528530)
> Related issue: [Issue #3528724](https://www.drupal.org/node/3528724)
> Related issue: [Issue #3528785](https://www.drupal.org/node/3528785)
issue