Problem/Motivation
The latest 1.2.x only supports PHP 8.3 due to src/Plugin/ModelerApiModelOwner/Agent.php:
------ ----------------------------------------------------------------------------
Line Agent.php
------ ----------------------------------------------------------------------------
35 Class constants with native types are supported only on PHP 8.3 and later.
------ ----------------------------------------------------------------------------
Steps to reproduce
Install ai_agents 1.2.x.
Get the following error:
ParseError: syntax error, unexpected identifier "SUPPORTED_COMPONENT_TYPES", expecting "=" in /opt/drupal/web/modules/contrib/ai_agents/src/Plugin/ModelerApiModelOwner/Agent.php on line 35 #0 /opt/drupal/vendor/composer/ClassLoader.php(427): Composer\Autoload\{closure}('/opt/drupal/web...')
#1 [internal function]: Composer\Autoload\ClassLoader->loadClass('Drupal\\ai_agent...')
#2 /opt/drupal/web/core/lib/Drupal/Component/Plugin/Discovery/AttributeClassDiscovery.php(139): ReflectionClass->__construct('Drupal\\ai_agent...')
#3 /opt/drupal/web/core/lib/Drupal/Component/Plugin/Discovery/AttributeClassDiscovery.php(84): Drupal\Component\Plugin\Discovery\AttributeClassDiscovery->parseClass('Drupal\\ai_agent...', Object(SplFileInfo))
#4 /opt/drupal/web/core/lib/Drupal/Component/Plugin/Discovery/DerivativeDiscoveryDecorator.php(86): Drupal\Component\Plugin\Discovery\AttributeClassDiscovery->getDefinitions()
#5 /opt/drupal/web/core/lib/Drupal/Core/Plugin/DefaultPluginManager.php(337): Drupal\Component\Plugin\Discovery\DerivativeDiscoveryDecorator->getDefinitions()
#6 /opt/drupal/web/core/lib/Drupal/Core/Plugin/DefaultPluginManager.php(213): Drupal\Core\Plugin\DefaultPluginManager->findDefinitions()
#7 /opt/drupal/web/modules/contrib/modeler_api/src/Plugin/ModelOwnerPluginManager.php(59): Drupal\Core\Plugin\DefaultPluginManager->getDefinitions()
#8 /opt/drupal/web/modules/contrib/modeler_api/src/Hook/EntityHooks.php(332): Drupal\modeler_api\Plugin\ModelOwnerPluginManager->getAllInstances(true)
#9 /opt/drupal/web/modules/contrib/modeler_api/modeler_api.module(56): Drupal\modeler_api\Hook\EntityHooks->systemInfoAlter(Array, Object(Drupal\Core\Extension\Extension), 'module')
#10 /opt/drupal/web/core/lib/Drupal/Core/Extension/ModuleHandler.php(552): modeler_api_system_info_alter(Array, Object(Drupal\Core\Extension\Extension), 'module')
#11 /opt/drupal/web/core/lib/Drupal/Core/Extension/ExtensionList.php(321): Drupal\Core\Extension\ModuleHandler->alter('system_info', Array, Object(Drupal\Core\Extension\Extension), 'module')
#12 /opt/drupal/web/core/lib/Drupal/Core/Extension/ModuleExtensionList.php(155): Drupal\Core\Extension\ExtensionList->doList()
#13 /opt/drupal/web/core/lib/Drupal/Core/Extension/ExtensionList.php(283): Drupal\Core\Extension\ModuleExtensionList->doList()
#14 /opt/drupal/vendor/drush/drush/src/Commands/pm/PmCommands.php(324): Drupal\Core\Extension\ExtensionList->getList()
#15 /opt/drupal/vendor/drush/drush/src/Commands/pm/PmCommands.php(120): Drush\Commands\pm\PmCommands->addInstallDependencies(Array)
#16 /opt/drupal/vendor/consolidation/annotated-command/src/Hooks/Dispatchers/ValidateHookDispatcher.php(53): Drush\Commands\pm\PmCommands->validateEnableModules(Object(Consolidation\AnnotatedCommand\CommandData))
#17 /opt/drupal/vendor/consolidation/annotated-command/src/Hooks/Dispatchers/ValidateHookDispatcher.php(42): Consolidation\AnnotatedCommand\Hooks\Dispatchers\ValidateHookDispatcher->doValidator(Array, Object(Consolidation\AnnotatedCommand\CommandData))
#18 /opt/drupal/vendor/consolidation/annotated-command/src/Hooks/Dispatchers/ValidateHookDispatcher.php(29): Consolidation\AnnotatedCommand\Hooks\Dispatchers\ValidateHookDispatcher->callValidator(Array, Object(Consolidation\AnnotatedCommand\CommandData))
#19 /opt/drupal/vendor/consolidation/annotated-command/src/CommandProcessor.php(195): Consolidation\AnnotatedCommand\Hooks\Dispatchers\ValidateHookDispatcher->validate(Object(Consolidation\AnnotatedCommand\CommandData))
#20 /opt/drupal/vendor/consolidation/annotated-command/src/CommandProcessor.php(176): Consolidation\AnnotatedCommand\CommandProcessor->validateRunAndAlter(Array, Array, Object(Consolidation\AnnotatedCommand\CommandData))
#21 /opt/drupal/vendor/consolidation/annotated-command/src/AnnotatedCommand.php(391): Consolidation\AnnotatedCommand\CommandProcessor->process(Object(Symfony\Component\Console\Output\ConsoleOutput), Array, Array, Object(Consolidation\AnnotatedCommand\CommandData))
#22 /opt/drupal/vendor/symfony/console/Command/Command.php(326): Consolidation\AnnotatedCommand\AnnotatedCommand->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#23 /opt/drupal/vendor/symfony/console/Application.php(1096): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#24 /opt/drupal/vendor/symfony/console/Application.php(324): Symfony\Component\Console\Application->doRunCommand(Object(Consolidation\AnnotatedCommand\AnnotatedCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#25 /opt/drupal/vendor/symfony/console/Application.php(175): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#26 /opt/drupal/vendor/drush/drush/src/Runtime/Runtime.php(110): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#27 /opt/drupal/vendor/drush/drush/src/Runtime/Runtime.php(40): Drush\Runtime\Runtime->doRun(Array, Object(Symfony\Component\Console\Output\ConsoleOutput))
#28 /opt/drupal/vendor/drush/drush/drush.php(139): Drush\Runtime\Runtime->run(Array)
#29 /opt/drupal/vendor/drush/drush/drush(4): require('/opt/drupal/ven...')
#30 /opt/drupal/vendor/bin/drush(119): include('/opt/drupal/ven...')
#31 {main}
ParseError: syntax error, unexpected identifier "SUPPORTED_COMPONENT_TYPES", expecting "=" in Composer\Autoload\{closure}() (line 35 of /opt/drupal/web/modules/contrib/ai_agents/src/Plugin/ModelerApiModelOwner/Agent.php).
Proposed resolution
- Scan module and ensure all code is compatible with PHP 8.1.
- Add a PHPStan test to continuously verify PHP version compatibility.
Remaining tasks
- Fix up existing PHP version conflicts.
- Add a test to verify PHP version compatibility.