Skip to content

Commit 62c9fd7

Browse files
refactor(resolver): use stable ai-* deps and distinguish configuration vs runtime errors
1 parent 0aa505a commit 62c9fd7

6 files changed

Lines changed: 23 additions & 7 deletions

File tree

composer.json

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@
1818
"api-platform/symfony": "^4.3",
1919
"league/commonmark": "^2.8",
2020
"sylius/sylius": "^2.0",
21-
"symfony/ai-bundle": "dev-main as 0.8.x-dev",
22-
"symfony/ai-platform": "dev-main as 0.8.x-dev",
21+
"symfony/ai-platform": "^0.8",
2322
"symfony/framework-bundle": "^7.3",
2423
"symfony/rate-limiter": "^7.3",
2524
"twig/markdown-extra": "^3.24",
@@ -40,7 +39,9 @@
4039
"friends-of-behat/symfony-extension": "^2.6",
4140
"friends-of-behat/variadic-extension": "^1.6",
4241
"nyholm/psr7": "^1.8",
43-
"symfony/ai-open-ai-platform": "dev-main as 0.8.x-dev",
42+
"symfony/ai-agent": "^0.8",
43+
"symfony/ai-bundle": "^0.8",
44+
"symfony/ai-open-ai-platform": "^0.8",
4445
"phpstan/phpstan": "^1.12",
4546
"phpstan/phpstan-doctrine": "^1.3",
4647
"phpstan/phpstan-webmozart-assert": "^1.2",
@@ -60,6 +61,7 @@
6061
"symfony/webpack-encore-bundle": "^2.2"
6162
},
6263
"suggest": {
64+
"symfony/ai-bundle": "Required to enable AI features (declares Platform services from ai.yaml config)",
6365
"symfony/ai-open-ai-platform": "To use OpenAI as AI provider",
6466
"symfony/ai-anthropic-platform": "To use Anthropic Claude as AI provider",
6567
"symfony/ai-mistral-platform": "To use Mistral as AI provider"

src/Processor/GridQueryProcessor.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace Guiziweb\SyliusGridAssistantPlugin\Processor;
66

7+
use Guiziweb\SyliusGridAssistantPlugin\Resolver\GridQueryConfigurationException;
78
use Guiziweb\SyliusGridAssistantPlugin\Resolver\GridQueryResolverException;
89
use Guiziweb\SyliusGridAssistantPlugin\Resolver\GridQueryResolverInterface;
910
use Guiziweb\SyliusGridAssistantPlugin\Schema\GridSchemaBuilderInterface;
@@ -54,6 +55,10 @@ public function process(string $query, string $gridCode, string $routeName, arra
5455

5556
try {
5657
$resolved = $this->queryResolver->resolve($query, $gridCode);
58+
} catch (GridQueryConfigurationException $e) {
59+
$this->aiLogger->warning('[GridAssistant] Configuration error', ['error' => $e->getMessage()]);
60+
61+
throw new GridQueryProcessorException($e->getMessage(), 0, $e);
5762
} catch (GridQueryResolverException $e) {
5863
$this->aiLogger->warning('[GridAssistant] Resolver error', ['error' => $e->getMessage()]);
5964

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Guiziweb\SyliusGridAssistantPlugin\Resolver;
6+
7+
final class GridQueryConfigurationException extends GridQueryResolverException
8+
{
9+
}

src/Resolver/GridQueryResolver.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public function __construct(
3232
public function resolve(string $query, string $gridCode): ResolvedGridQuery
3333
{
3434
if (null === $this->platform) {
35-
throw new GridQueryResolverException('No AI platform configured. Install a bridge: composer require symfony/ai-openai-platform (or symfony/ai-gemini-platform, symfony/ai-anthropic-platform, symfony/ai-mistral-platform) and configure ai.platform.<provider> in your config.');
35+
throw new GridQueryConfigurationException('No AI platform configured. Run: composer require symfony/ai-bundle symfony/ai-openai-platform (or another bridge: symfony/ai-gemini-platform, symfony/ai-anthropic-platform, symfony/ai-mistral-platform), then configure ai.platform.<provider> in config/packages/ai.yaml.');
3636
}
3737

3838
$gridSchema = $this->schemaBuilder->buildSchema($gridCode);

src/Resolver/GridQueryResolverException.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@
44

55
namespace Guiziweb\SyliusGridAssistantPlugin\Resolver;
66

7-
final class GridQueryResolverException extends \RuntimeException
7+
class GridQueryResolverException extends \RuntimeException
88
{
99
}

tests/Unit/Resolver/GridQueryResolverTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44

55
namespace Guiziweb\SyliusGridAssistantPlugin\Tests\Unit\Resolver;
66

7+
use Guiziweb\SyliusGridAssistantPlugin\Resolver\GridQueryConfigurationException;
78
use Guiziweb\SyliusGridAssistantPlugin\Resolver\GridQueryResolver;
8-
use Guiziweb\SyliusGridAssistantPlugin\Resolver\GridQueryResolverException;
99
use Guiziweb\SyliusGridAssistantPlugin\Schema\GridSchemaBuilderInterface;
1010
use Guiziweb\SyliusGridAssistantPlugin\Toolbox\GridToolSchemaFactoryInterface;
1111
use PHPUnit\Framework\TestCase;
@@ -25,7 +25,7 @@ public function testThrowsWhenNoPlatformIsConfigured(): void
2525
$this->createMock(ClockInterface::class),
2626
);
2727

28-
$this->expectException(GridQueryResolverException::class);
28+
$this->expectException(GridQueryConfigurationException::class);
2929
$this->expectExceptionMessageMatches('/No AI platform configured/');
3030

3131
$resolver->resolve('any query', 'sylius_admin_order');

0 commit comments

Comments
 (0)