Version 7.8.0 ============= Minor release headlined by **agent reasoning state support** and **multi-LLM configuration** in the BAF (BESSER Agent Framework) code generator. It adds new agent metamodel classes (``ReasoningState``, ``Tool``, ``Skill``, ``Workspace``) and multi-LLM factory methods on ``Agent`` (``new_llm``, ``set_default_llm``, ``new_tool``, ``new_skill``, ``new_workspace``, ``new_reasoning_state``), surfaced through the BAF generator template, the agent-model code builder, and the JSON↔B-UML converters. Agent Reasoning State and Multi-LLM Support -------------------------------------------------- BAF Generator — multi-LLM handling ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Introduced a unified ``default_llm`` variable in generated agent code, replacing the previous ``reply_llm`` approach. The variable is set dynamically from the agent configuration or the first available LLM; if no LLM is configured it is set to ``None`` so that a clear ``AttributeError`` is raised at runtime rather than producing a silent no-op. * All LLM invocations (``DBReply``, ``LLMReply``, intent-classifier, and fallback actions) now resolve the LLM **by name** at runtime, falling back to ``default_llm`` when no explicit override is provided. This makes it straightforward to run different actions against different models in the same agent. * The intent-classifier LLM selection uses a prioritised search across the per-classifier config and the agent-level defaults, ensuring consistent fallback behaviour when the classifier does not declare its own model. RAG improvements ~~~~~~~~~~~~~~~~ * RAG (Retrieval-Augmented Generation) configurations now resolve their LLM at runtime via ``llm_name``, falling back to ``default_llm`` when not explicitly set. The separate ``rag_llm`` variable that previously appeared in generated code is no longer emitted, reducing boilerplate and potential inconsistencies. Tools, Skills, and Workspaces ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Generated agent initialisation code now registers agent **tools**, **skills**, and **workspaces** with the agent instance, completing the round-trip from B-UML agent model to runnable BAF code for these component types. Reasoning State support ~~~~~~~~~~~~~~~~~~~~~~~ * Added code generation for ``ReasoningState`` objects: the generator detects reasoning states in the agent model and emits a ``new_reasoning_state(...)`` call with the appropriate LLM reference (falling back to ``default_llm``) and configuration (``max_steps``, ``enable_task_planning``, ``stream_steps``, ``system_prompt``, ``fallback_message``). Internal refactoring ~~~~~~~~~~~~~~~~~~~~ * Updated imports in ``besser/utilities/buml_code_builder/agent_model_builder.py`` to include ``ReasoningState``, ``Tool``, ``Skill``, and ``Workspace`` as well as the helper functions required by the new generation logic. * The BAF generator template (``besser/generators/agents/templates/``) has been refactored for improved modularity, readability, and extensibility.