Move ai_drush_agents into ai_agents as a submodule
## Problem / Motivation [ai_drush_agents](https://www.drupal.org/project/ai_drush_agents) is a small standalone module that exists purely as an extension of ai_agents. It hard-depends on `ai_agents` (`drupal/ai_agents:^1.1.0`) and provides nothing on its own: a handful of Drush commands plus supporting AI tools and agents. Keeping it as a separate project adds release, CI and maintenance overhead for very little code, and makes the Drush integration harder to discover for people already using ai_agents. Its config entities already live in the `ai_agents.ai_agent.*` namespace, so it is conceptually part of ai_agents already. Proposal: fold ai_drush_agents into ai_agents as a new optional submodule for the 1.4.x branch, mirroring the existing submodules (`ai_agents_explorer`, `ai_agents_extra`, `ai_agents_extra_tools`, `ai_agents_form_integration`). ## What would move Into `modules/ai_drush_agents/` within ai_agents: - **Drush command classes** (`drush.services.yml` + `src/Commands/`): `AiAgentCommands`, `AiConfigExplainCommands`, `AiDrushExplainerCommands` - **AiFunctionCall tool plugins** (`src/Plugin/AiFunctionCall/`): `ConfigDiff`, `GetConfigById`, `GetConfigEntity`, `GetDrushCode`, `GetDrushCommands`, `LoadTemporaryData`, `SaveSchemaFileToModule`, `SaveTemporaryData` - **Config agents** (`config/install/`): `config_export_explainer`, `config_to_schema_agent`, `drush_explain_agent` - The `.install` file and `.info.yml` (converted to a submodule info file) ## Proposed resolution / remaining tasks - Create `modules/ai_drush_agents` as an optional submodule. Keep the machine name `ai_drush_agents` so the `Drupal\ai_drush_agents\...` namespace, service IDs and config entity names are unchanged and existing sites keep working after they switch which project provides the module. - Handle the extra dependency: `sevenecks/markdown-terminal:^0.0.1` (used for terminal markdown rendering). Decide whether to require it in the root ai_agents `composer.json`, add it as a `suggest`, or make the dependency soft so the submodule degrades gracefully when it is absent. - Verify there is no collision between the moved `AiFunctionCall` plugin IDs / config agent IDs and anything already shipped in ai_agents. - Add documentation for the Drush commands under the ai_agents docs. - After the move lands, mark the standalone [ai_drush_agents](https://www.drupal.org/project/ai_drush_agents) project as obsolete / moved, and point its project page at ai_agents. Provide a short upgrade note for existing users (switch the dependency; no data migration needed since config names are preserved). ## Notes Part of the road to 1.4.0 (see #3586017). This issue is a planning/tracking issue for the move; no code should be migrated until the approach on the extra composer dependency is agreed.
issue