New Features * #3537084 Update drush ai:translate-entity command to accept multiple ids * #3542498 Provide an exception interface all exceptions implement * #3531212 Create Image-To-Image operation type * #3541284 Pass AI token usage data to the events * #3525127 Make it possible to take the input as an interactive prompt * #3525296 Add optional RAW vectors in RAG results * #3540682 Simplify AI Event classes by using base classes * #3528948 Add chat_history form element * #3534716 Add a common method for suggestions in Field Widget Actions * #3528549 Allow tool calling in streamed chat * #3544954 Allow ContextDefinitionNormalizer::normalize properties to be hook/altered. * #3525303 Create Plugin Action for Recipes to check for installed default provider * #3528730 Create ShortTermMemoryPlugin Tasks * #3541471 Add finished reason to stream iterator * #3541473 Add token usage to OpenAiProviderClientBase * #3541470 Remove canChatStream * #3538027 Support Fibers for collaborative multitasking on LLM io waiting * #3544143 Add input, tags, provider id and model id to the stream * #3491446 Solr 'boost' of results should find results that are not found by traditional Solr search * #3488376 Create unit tests for the PromptCodeBlockExtractor * #3546175 Implement error handling when the backend search is not available * #3546653 Document the polling service in AI Agents * #3539032 Consider implementing \Drupal\search_api\Backend\BackendSpecificInterface * #3503947 Deprecate internal ECA-module in the AI module * #3531279 Provide updated UI for AI Chatbot module Bugs * #3541933 Undefined array key "button_label" when configuring automator_text on form display * #3541472 Return streamed message on the OpenAiBasedProviderClientBase * #3542944 Wrong permission for ai.settings.menu route * #3541931 Missing field_types and widget_types in automator_text field widget action * #3545602 SetChatTokeUsage should only run when then response is not streamed in OpenAiBasedProviderClientBase * #3545134 foreach in ToolsPropertyInput::renderPropertyArray unintentionally overrides $property * #3541304 Unable to view a log entry * #3525319 CKEditor Plugin Base Throws LogicException on Acquia Cloud * #3546387 AI API Explorer outputs a wrong code snippet for structured output * #3544949 Missing 'multiple' handling in ContextDefinitionNormalizer::normalize * #3543253 Chatbot first message should be translatable * #3541562 AiDataTypeConverters incorrectly handling multi value Contexts * #3544206 AI Search tests is failing on next minor * #3537126 Form validation missing for Vector Database Provider when creating Search API server with AI Search backend * #3544206 AI Search tests is failing on next minor * #3546646 Remove Group PHPunit attribute from test * #3525540 Error: Call to a member function newInstance() with ActionPluginDeriver * #3544206 AI Search tests is failing on next minor * #3546744 RagTool uses chunks results only but in results set the id for full entity is used * #3530683 Toolbar in ckeditor disappears when no plugins are selected in ai assistant. * #3547369 Tool function input should be object when no parameters are passed * #3542368 Reinstate PHP 8.1 tests (previous major) and check for any breaking code * #3544189 AI Translate: LbFieldExtractor adds translations with default values for empty fields. * #3541580 JsonDeserializer and YamlDeserializer incorrectly checking data type * #3546590 Combination of 'Suggest taxonomy terms' and 'Use source vocabulary' does not use configured prompt Contributors: brunodbo, sijumpk, a.dmitriiev, marcus_johansson, gxleano, andrewbelcher, yautja_cetanu, kristen pol, claudiu.cristea, divyansh.gupta, ralkeon, anjaliprasannan, valthebald, b_sharpe, mglaman, d34dman, danharper, prashant.c, dan2k3k4, murz, svendecabooter, ishani patel, robloach, abhinesh, annmarysruthy, catia_penas, abhisekmazumdar, nikro, jofitz, scott_euser, jurgenhaas, michaellander, mandclu, jhedstrom, saxenaakansha30, koppie, damienmckenna, ambuj_gupta, seogow, nnevill, littlepixiez, mjb3141, spec0, mrdalesmith, j-barnes, lakhal, keiserjb, norbert-goco, merilainen, himanshu5050, ronraney, thejimbirch, codebymikey, narendrar, divya.sejekan, sarvjeetsingh, roshanibhangale, nireneko, danrod, kim.pepper, lpeabody, anmolgoyal74, lammensj, yannickoo, bbruno, breidert, akhil babu