|
3 | 3 | use Fusio\Cli; |
4 | 4 | use Fusio\Engine\Action; |
5 | 5 | use Fusio\Engine\Adapter\ServiceBuilder; |
| 6 | +use Fusio\Engine\Agent\ToolsInterface; |
6 | 7 | use Fusio\Engine\ConnectorInterface; |
7 | 8 | use Fusio\Engine\DispatcherInterface; |
8 | 9 | use Fusio\Engine\Repository; |
|
14 | 15 | use Fusio\Impl\Provider; |
15 | 16 | use Fusio\Impl\Repository as ImplRepository; |
16 | 17 | use Fusio\Impl\Service\Action\Producer; |
| 18 | +use Fusio\Impl\Service\Agent; |
17 | 19 | use Fusio\Impl\Service\Event\Dispatcher; |
| 20 | +use Fusio\Impl\Service\Mcp\ReferenceHandler; |
18 | 21 | use Fusio\Impl\Service\Tenant\LimiterInterface; |
19 | 22 | use Fusio\Impl\Service\User\Captcha; |
20 | 23 | use Fusio\Impl\Tenant\UnlimitedLimiter; |
| 24 | +use Mcp\Capability\Registry\ReferenceHandlerInterface; |
21 | 25 | use Psr\Cache\CacheItemPoolInterface; |
22 | 26 | use Psr\SimpleCache\CacheInterface; |
23 | 27 | use PSX\Api; |
|
30 | 34 | use PSX\Framework\Migration\DependencyFactoryFactory; |
31 | 35 | use PSX\Http\Filter\UserAgentEnforcer; |
32 | 36 | use PSX\Schema; |
| 37 | +use Symfony\AI\Agent\Toolbox\Toolbox; |
| 38 | +use Symfony\AI\Agent\Toolbox\ToolboxInterface; |
| 39 | +use Symfony\AI\Agent\Toolbox\ToolCallArgumentResolverInterface; |
| 40 | +use Symfony\AI\Agent\Toolbox\ToolFactoryInterface; |
33 | 41 | use Symfony\Component\Cache\Psr16Cache; |
34 | 42 | use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; |
35 | 43 | use function Symfony\Component\DependencyInjection\Loader\Configurator\param; |
36 | 44 | use function Symfony\Component\DependencyInjection\Loader\Configurator\service; |
| 45 | +use function Symfony\Component\DependencyInjection\Loader\Configurator\tagged_iterator; |
37 | 46 |
|
38 | 47 | return static function (ContainerConfigurator $container) { |
39 | 48 | $services = ServiceBuilder::build($container); |
|
62 | 71 | $services->set(Dispatcher::class); |
63 | 72 | $services->alias(DispatcherInterface::class, Dispatcher::class); |
64 | 73 |
|
| 74 | + $services->set(Agent\Tools::class); |
| 75 | + $services->alias(ToolsInterface::class, Agent\Tools::class); |
| 76 | + |
65 | 77 | $services->alias('test_connector', ConnectorInterface::class) |
66 | 78 | ->public(); |
67 | 79 |
|
|
112 | 124 | $services->set(SDKgenConfig::class); |
113 | 125 | $services->alias(Api\Repository\SDKgen\ConfigInterface::class, SDKgenConfig::class); |
114 | 126 |
|
| 127 | + $services->set(Agent\OperationToolFactory::class); |
| 128 | + $services->alias(ToolFactoryInterface::class, Agent\OperationToolFactory::class); |
| 129 | + |
| 130 | + $services->set(Agent\OperationToolCallArgumentResolver::class); |
| 131 | + $services->alias(ToolCallArgumentResolverInterface::class, Agent\OperationToolCallArgumentResolver::class); |
| 132 | + |
| 133 | + $services->set(Agent\OperationTool::class) |
| 134 | + ->tag('fusio.ai.tool'); |
| 135 | + |
| 136 | + $services->set(Toolbox::class) |
| 137 | + ->arg('$tools', tagged_iterator('fusio.ai.tool')); |
| 138 | + $services->alias(ToolboxInterface::class, Toolbox::class); |
| 139 | + |
115 | 140 | // psx |
116 | 141 | $services->set(Framework\Loader\RoutingParser\DatabaseParser::class); |
117 | 142 | $services->set(Framework\Loader\RoutingParser\CompositeParser::class); |
|
0 commit comments