From 3cd93ede5ac8a0c8e7b0343cac34977f13cf5c69 Mon Sep 17 00:00:00 2001 From: Mike Gladysch Date: Fri, 12 Sep 2025 19:14:33 +0200 Subject: [PATCH 1/2] Rewrite output processors from Agent side used by Platform - Introduced a separate output processor, that accepts a result handler and gives the result of the Output data container to this handler. - removed dependency to symfony/ai-agent from composer file within platform subtree - added deptrac check --- .github/workflows/deptrac.yaml | 59 +++++++++++++++++++ composer.json | 1 + deptrac.yaml | 26 ++++++++ .../OutputProcessor/ResultOutputProcessor.php | 29 +++++++++ .../DependencyInjection/AiBundleTest.php | 18 +++++- ...cessor.php => TokenUsageResultHandler.php} | 0 ...cessor.php => TokenUsageResultHandler.php} | 0 ...cessor.php => TokenUsageResultHandler.php} | 0 ...cessor.php => TokenUsageResultHandler.php} | 0 ...tProcessor.php => SearchResultHandler.php} | 0 ...cessor.php => TokenUsageResultHandler.php} | 0 ...cessor.php => TokenUsageResultHandler.php} | 0 .../src/Result/ResultHandlerInterface.php | 17 ++++++ ...st.php => TokenUsageResultHandlerTest.php} | 0 ...rTest.php => TokenUsageDeterminerTest.php} | 0 ...rTest.php => TokenUsageDeterminerTest.php} | 0 ...rTest.php => TokenUsageDeterminerTest.php} | 0 ...rTest.php => TokenUsageDeterminerTest.php} | 0 ...rTest.php => TokenUsageDeterminerTest.php} | 0 19 files changed, 148 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/deptrac.yaml create mode 100644 deptrac.yaml create mode 100644 src/agent/src/OutputProcessor/ResultOutputProcessor.php rename src/platform/src/Bridge/Anthropic/{TokenOutputProcessor.php => TokenUsageResultHandler.php} (100%) rename src/platform/src/Bridge/Gemini/{TokenOutputProcessor.php => TokenUsageResultHandler.php} (100%) rename src/platform/src/Bridge/Mistral/{TokenOutputProcessor.php => TokenUsageResultHandler.php} (100%) rename src/platform/src/Bridge/OpenAi/{TokenOutputProcessor.php => TokenUsageResultHandler.php} (100%) rename src/platform/src/Bridge/Perplexity/{SearchResultProcessor.php => SearchResultHandler.php} (100%) rename src/platform/src/Bridge/Perplexity/{TokenOutputProcessor.php => TokenUsageResultHandler.php} (100%) rename src/platform/src/Bridge/VertexAi/{TokenOutputProcessor.php => TokenUsageResultHandler.php} (100%) create mode 100644 src/platform/src/Result/ResultHandlerInterface.php rename src/platform/tests/Bridge/Anthropic/{TokenOutputProcessorTest.php => TokenUsageResultHandlerTest.php} (100%) rename src/platform/tests/Bridge/Gemini/{TokenOutputProcessorTest.php => TokenUsageDeterminerTest.php} (100%) rename src/platform/tests/Bridge/Mistral/{TokenOutputProcessorTest.php => TokenUsageDeterminerTest.php} (100%) rename src/platform/tests/Bridge/OpenAi/{TokenOutputProcessorTest.php => TokenUsageDeterminerTest.php} (100%) rename src/platform/tests/Bridge/Perplexity/{TokenOutputProcessorTest.php => TokenUsageDeterminerTest.php} (100%) rename src/platform/tests/Bridge/VertexAi/{TokenOutputProcessorTest.php => TokenUsageDeterminerTest.php} (100%) diff --git a/.github/workflows/deptrac.yaml b/.github/workflows/deptrac.yaml new file mode 100644 index 000000000..6edc45787 --- /dev/null +++ b/.github/workflows/deptrac.yaml @@ -0,0 +1,59 @@ +name: deptrac + +on: + push: + paths-ignore: + - 'src/*/doc/**' + - 'src/**/*.md' + pull_request: + paths-ignore: + - 'src/*/doc/**' + - 'src/**/*.md' + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + deptrac: + name: deptrac + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + php-version: [ '8.4' ] + steps: + - name: Checkout + uses: actions/checkout@v5 + + - name: Configure environment + run: | + echo COLUMNS=120 >> $GITHUB_ENV + echo COMPOSER_UP='composer update --no-progress --no-interaction --ansi --ignore-platform-req=ext-mongodb' >> $GITHUB_ENV + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php-version }} + + - name: Get composer cache directory + id: composer-cache + run: | + echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT + + - name: Cache packages dependencies + uses: actions/cache@v4 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-composer-packages-${{ matrix.php-version }}-${{ hashFiles('src/**/composer.json') }} + restore-keys: | + ${{ runner.os }}-composer-packages-${{ matrix.php-version }} + + - name: Install root dependencies + uses: ramsey/composer-install@v3 + + - name: Build root packages + run: php .github/build-packages.php + + - name: Run DEPTRAC + run: $COMPOSER_UP && vendor/bin/deptrac diff --git a/composer.json b/composer.json index b022443ee..2496eb1c9 100644 --- a/composer.json +++ b/composer.json @@ -7,6 +7,7 @@ ], "require-dev": { "php": ">=8.2", + "deptrac/deptrac": "^4.2", "php-cs-fixer/shim": "^3.75", "phpstan/phpstan-strict-rules": "^2.0", "symfony/filesystem": "^7.3|^8.0", diff --git a/deptrac.yaml b/deptrac.yaml new file mode 100644 index 000000000..8820ae52d --- /dev/null +++ b/deptrac.yaml @@ -0,0 +1,26 @@ +deptrac: + paths: + - ./src + exclude_files: + - '#.*test.*#' + layers: + - name: Agent + collectors: + - type: classLike + value: Symfony\\AI\\Agent.* + - name: Platform + collectors: + - type: classLike + value: Symfony\\AI\\Platform.* + - name: Store + collectors: + - type: classLike + value: Symfony\\AI\\Store.* + ruleset: + Platform: ~ + Agent: + - Platform + - orm + - Store + Store: + - Platform diff --git a/src/agent/src/OutputProcessor/ResultOutputProcessor.php b/src/agent/src/OutputProcessor/ResultOutputProcessor.php new file mode 100644 index 000000000..c8e09cd54 --- /dev/null +++ b/src/agent/src/OutputProcessor/ResultOutputProcessor.php @@ -0,0 +1,29 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\AI\Agent\OutputProcessor; + +use Symfony\AI\Agent\Output; +use Symfony\AI\Agent\OutputProcessorInterface; +use Symfony\AI\Platform\Result\ResultHandlerInterface; + +readonly class ResultOutputProcessor implements OutputProcessorInterface +{ + public function __construct( + private ResultHandlerInterface $resultProcessor, + ) { + } + + public function processOutput(Output $output): void + { + $this->resultProcessor->handleResult($output->result); + } +} diff --git a/src/ai-bundle/tests/DependencyInjection/AiBundleTest.php b/src/ai-bundle/tests/DependencyInjection/AiBundleTest.php index 5887234b6..b2b4ab73a 100644 --- a/src/ai-bundle/tests/DependencyInjection/AiBundleTest.php +++ b/src/ai-bundle/tests/DependencyInjection/AiBundleTest.php @@ -683,9 +683,23 @@ public function testTokenUsageProcessorTags() $agentId = 'ai.agent.tracked_agent'; + // Token usage determiner must exist for OpenAI platform + $tokenUsageDeterminer = $container->getDefinition('ai.platform.token_usage_result_handler.openai'); + $outputTags = $tokenUsageDeterminer->getTag('ai.agent.token_usage_result_handler'); + + $foundTag = false; + foreach ($outputTags as $tag) { + if (($tag['agent'] ?? '') === $agentId) { + $foundTag = true; + break; + } + } + + $this->assertTrue($foundTag, 'Token usage determiner should have output tag with full agent ID'); + // Token usage processor must exist for OpenAI platform - $tokenUsageProcessor = $container->getDefinition('ai.platform.token_usage_processor.openai'); - $outputTags = $tokenUsageProcessor->getTag('ai.agent.output_processor'); + $tokenOutputProcessor = $container->getDefinition('ai.platform.token_usage_processor.openai'); + $outputTags = $tokenOutputProcessor->getTag('ai.platform.token_usage_processor'); $foundTag = false; foreach ($outputTags as $tag) { diff --git a/src/platform/src/Bridge/Anthropic/TokenOutputProcessor.php b/src/platform/src/Bridge/Anthropic/TokenUsageResultHandler.php similarity index 100% rename from src/platform/src/Bridge/Anthropic/TokenOutputProcessor.php rename to src/platform/src/Bridge/Anthropic/TokenUsageResultHandler.php diff --git a/src/platform/src/Bridge/Gemini/TokenOutputProcessor.php b/src/platform/src/Bridge/Gemini/TokenUsageResultHandler.php similarity index 100% rename from src/platform/src/Bridge/Gemini/TokenOutputProcessor.php rename to src/platform/src/Bridge/Gemini/TokenUsageResultHandler.php diff --git a/src/platform/src/Bridge/Mistral/TokenOutputProcessor.php b/src/platform/src/Bridge/Mistral/TokenUsageResultHandler.php similarity index 100% rename from src/platform/src/Bridge/Mistral/TokenOutputProcessor.php rename to src/platform/src/Bridge/Mistral/TokenUsageResultHandler.php diff --git a/src/platform/src/Bridge/OpenAi/TokenOutputProcessor.php b/src/platform/src/Bridge/OpenAi/TokenUsageResultHandler.php similarity index 100% rename from src/platform/src/Bridge/OpenAi/TokenOutputProcessor.php rename to src/platform/src/Bridge/OpenAi/TokenUsageResultHandler.php diff --git a/src/platform/src/Bridge/Perplexity/SearchResultProcessor.php b/src/platform/src/Bridge/Perplexity/SearchResultHandler.php similarity index 100% rename from src/platform/src/Bridge/Perplexity/SearchResultProcessor.php rename to src/platform/src/Bridge/Perplexity/SearchResultHandler.php diff --git a/src/platform/src/Bridge/Perplexity/TokenOutputProcessor.php b/src/platform/src/Bridge/Perplexity/TokenUsageResultHandler.php similarity index 100% rename from src/platform/src/Bridge/Perplexity/TokenOutputProcessor.php rename to src/platform/src/Bridge/Perplexity/TokenUsageResultHandler.php diff --git a/src/platform/src/Bridge/VertexAi/TokenOutputProcessor.php b/src/platform/src/Bridge/VertexAi/TokenUsageResultHandler.php similarity index 100% rename from src/platform/src/Bridge/VertexAi/TokenOutputProcessor.php rename to src/platform/src/Bridge/VertexAi/TokenUsageResultHandler.php diff --git a/src/platform/src/Result/ResultHandlerInterface.php b/src/platform/src/Result/ResultHandlerInterface.php new file mode 100644 index 000000000..df561e248 --- /dev/null +++ b/src/platform/src/Result/ResultHandlerInterface.php @@ -0,0 +1,17 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\AI\Platform\Result; + +interface ResultHandlerInterface +{ + public function handleResult(ResultInterface $result): void; +} diff --git a/src/platform/tests/Bridge/Anthropic/TokenOutputProcessorTest.php b/src/platform/tests/Bridge/Anthropic/TokenUsageResultHandlerTest.php similarity index 100% rename from src/platform/tests/Bridge/Anthropic/TokenOutputProcessorTest.php rename to src/platform/tests/Bridge/Anthropic/TokenUsageResultHandlerTest.php diff --git a/src/platform/tests/Bridge/Gemini/TokenOutputProcessorTest.php b/src/platform/tests/Bridge/Gemini/TokenUsageDeterminerTest.php similarity index 100% rename from src/platform/tests/Bridge/Gemini/TokenOutputProcessorTest.php rename to src/platform/tests/Bridge/Gemini/TokenUsageDeterminerTest.php diff --git a/src/platform/tests/Bridge/Mistral/TokenOutputProcessorTest.php b/src/platform/tests/Bridge/Mistral/TokenUsageDeterminerTest.php similarity index 100% rename from src/platform/tests/Bridge/Mistral/TokenOutputProcessorTest.php rename to src/platform/tests/Bridge/Mistral/TokenUsageDeterminerTest.php diff --git a/src/platform/tests/Bridge/OpenAi/TokenOutputProcessorTest.php b/src/platform/tests/Bridge/OpenAi/TokenUsageDeterminerTest.php similarity index 100% rename from src/platform/tests/Bridge/OpenAi/TokenOutputProcessorTest.php rename to src/platform/tests/Bridge/OpenAi/TokenUsageDeterminerTest.php diff --git a/src/platform/tests/Bridge/Perplexity/TokenOutputProcessorTest.php b/src/platform/tests/Bridge/Perplexity/TokenUsageDeterminerTest.php similarity index 100% rename from src/platform/tests/Bridge/Perplexity/TokenOutputProcessorTest.php rename to src/platform/tests/Bridge/Perplexity/TokenUsageDeterminerTest.php diff --git a/src/platform/tests/Bridge/VertexAi/TokenOutputProcessorTest.php b/src/platform/tests/Bridge/VertexAi/TokenUsageDeterminerTest.php similarity index 100% rename from src/platform/tests/Bridge/VertexAi/TokenOutputProcessorTest.php rename to src/platform/tests/Bridge/VertexAi/TokenUsageDeterminerTest.php From ce0b61df6ff9db62c7c01d003ca5ff0e1293b8d0 Mon Sep 17 00:00:00 2001 From: Mike Gladysch Date: Fri, 12 Sep 2025 19:18:12 +0200 Subject: [PATCH 2/2] Fix typo within deptrac.yaml --- .gitignore | 1 + deptrac.yaml | 27 +++++++++++++---- .../OutputProcessor/ResultOutputProcessor.php | 29 ------------------- .../DependencyInjection/AiBundleTest.php | 18 ++---------- ...ltHandler.php => TokenOutputProcessor.php} | 0 ...ltHandler.php => TokenOutputProcessor.php} | 0 ...ltHandler.php => TokenOutputProcessor.php} | 0 ...ltHandler.php => TokenOutputProcessor.php} | 0 ...tHandler.php => SearchResultProcessor.php} | 0 ...ltHandler.php => TokenOutputProcessor.php} | 0 ...ltHandler.php => TokenOutputProcessor.php} | 0 .../src/Result/ResultHandlerInterface.php | 17 ----------- ...rTest.php => TokenOutputProcessorTest.php} | 0 ...rTest.php => TokenOutputProcessorTest.php} | 0 ...rTest.php => TokenOutputProcessorTest.php} | 0 ...rTest.php => TokenOutputProcessorTest.php} | 0 ...rTest.php => TokenOutputProcessorTest.php} | 0 ...rTest.php => TokenOutputProcessorTest.php} | 0 18 files changed, 25 insertions(+), 67 deletions(-) delete mode 100644 src/agent/src/OutputProcessor/ResultOutputProcessor.php rename src/platform/src/Bridge/Anthropic/{TokenUsageResultHandler.php => TokenOutputProcessor.php} (100%) rename src/platform/src/Bridge/Gemini/{TokenUsageResultHandler.php => TokenOutputProcessor.php} (100%) rename src/platform/src/Bridge/Mistral/{TokenUsageResultHandler.php => TokenOutputProcessor.php} (100%) rename src/platform/src/Bridge/OpenAi/{TokenUsageResultHandler.php => TokenOutputProcessor.php} (100%) rename src/platform/src/Bridge/Perplexity/{SearchResultHandler.php => SearchResultProcessor.php} (100%) rename src/platform/src/Bridge/Perplexity/{TokenUsageResultHandler.php => TokenOutputProcessor.php} (100%) rename src/platform/src/Bridge/VertexAi/{TokenUsageResultHandler.php => TokenOutputProcessor.php} (100%) delete mode 100644 src/platform/src/Result/ResultHandlerInterface.php rename src/platform/tests/Bridge/Anthropic/{TokenUsageResultHandlerTest.php => TokenOutputProcessorTest.php} (100%) rename src/platform/tests/Bridge/Gemini/{TokenUsageDeterminerTest.php => TokenOutputProcessorTest.php} (100%) rename src/platform/tests/Bridge/Mistral/{TokenUsageDeterminerTest.php => TokenOutputProcessorTest.php} (100%) rename src/platform/tests/Bridge/OpenAi/{TokenUsageDeterminerTest.php => TokenOutputProcessorTest.php} (100%) rename src/platform/tests/Bridge/Perplexity/{TokenUsageDeterminerTest.php => TokenOutputProcessorTest.php} (100%) rename src/platform/tests/Bridge/VertexAi/{TokenUsageDeterminerTest.php => TokenOutputProcessorTest.php} (100%) diff --git a/.gitignore b/.gitignore index 5d204c615..b86a9a51f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.deptrac.cache .doctor-rst.cache .php-cs-fixer.cache .phpunit.cache diff --git a/deptrac.yaml b/deptrac.yaml index 8820ae52d..4a10a46f3 100644 --- a/deptrac.yaml +++ b/deptrac.yaml @@ -3,11 +3,16 @@ deptrac: - ./src exclude_files: - '#.*test.*#' + - '#.*vendor.*#' layers: - name: Agent collectors: - type: classLike value: Symfony\\AI\\Agent.* + - name: Chat + collectors: + - type: classLike + value: Symfony\\AI\\Chat.* - name: Platform collectors: - type: classLike @@ -17,10 +22,22 @@ deptrac: - type: classLike value: Symfony\\AI\\Store.* ruleset: - Platform: ~ Agent: - - Platform - - orm - - Store + - Platform + - Store + Chat: + - Agent + - Platform + Platform: ~ Store: - - Platform + - Platform + # Baseline of known violations to be skipped for now + skip_violations: + Symfony\AI\Platform\Bridge\Anthropic\TokenOutputProcessor: [Symfony\AI\Agent\OutputProcessorInterface, Symfony\AI\Agent\Output] + Symfony\AI\Platform\Bridge\DeepSeek\TokenOutputProcessor: [Symfony\AI\Agent\OutputProcessorInterface, Symfony\AI\Agent\Output] + Symfony\AI\Platform\Bridge\Gemini\TokenOutputProcessor: [Symfony\AI\Agent\OutputProcessorInterface, Symfony\AI\Agent\Output] + Symfony\AI\Platform\Bridge\Mistral\TokenOutputProcessor: [Symfony\AI\Agent\OutputProcessorInterface, Symfony\AI\Agent\Output] + Symfony\AI\Platform\Bridge\OpenAi\TokenOutputProcessor: [Symfony\AI\Agent\OutputProcessorInterface, Symfony\AI\Agent\Output] + Symfony\AI\Platform\Bridge\Perplexity\SearchResultProcessor: [Symfony\AI\Agent\OutputProcessorInterface, Symfony\AI\Agent\Output] + Symfony\AI\Platform\Bridge\Perplexity\TokenOutputProcessor: [Symfony\AI\Agent\OutputProcessorInterface, Symfony\AI\Agent\Output] + Symfony\AI\Platform\Bridge\VertexAi\TokenOutputProcessor: [Symfony\AI\Agent\OutputProcessorInterface, Symfony\AI\Agent\Output] diff --git a/src/agent/src/OutputProcessor/ResultOutputProcessor.php b/src/agent/src/OutputProcessor/ResultOutputProcessor.php deleted file mode 100644 index c8e09cd54..000000000 --- a/src/agent/src/OutputProcessor/ResultOutputProcessor.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\AI\Agent\OutputProcessor; - -use Symfony\AI\Agent\Output; -use Symfony\AI\Agent\OutputProcessorInterface; -use Symfony\AI\Platform\Result\ResultHandlerInterface; - -readonly class ResultOutputProcessor implements OutputProcessorInterface -{ - public function __construct( - private ResultHandlerInterface $resultProcessor, - ) { - } - - public function processOutput(Output $output): void - { - $this->resultProcessor->handleResult($output->result); - } -} diff --git a/src/ai-bundle/tests/DependencyInjection/AiBundleTest.php b/src/ai-bundle/tests/DependencyInjection/AiBundleTest.php index b2b4ab73a..5887234b6 100644 --- a/src/ai-bundle/tests/DependencyInjection/AiBundleTest.php +++ b/src/ai-bundle/tests/DependencyInjection/AiBundleTest.php @@ -683,23 +683,9 @@ public function testTokenUsageProcessorTags() $agentId = 'ai.agent.tracked_agent'; - // Token usage determiner must exist for OpenAI platform - $tokenUsageDeterminer = $container->getDefinition('ai.platform.token_usage_result_handler.openai'); - $outputTags = $tokenUsageDeterminer->getTag('ai.agent.token_usage_result_handler'); - - $foundTag = false; - foreach ($outputTags as $tag) { - if (($tag['agent'] ?? '') === $agentId) { - $foundTag = true; - break; - } - } - - $this->assertTrue($foundTag, 'Token usage determiner should have output tag with full agent ID'); - // Token usage processor must exist for OpenAI platform - $tokenOutputProcessor = $container->getDefinition('ai.platform.token_usage_processor.openai'); - $outputTags = $tokenOutputProcessor->getTag('ai.platform.token_usage_processor'); + $tokenUsageProcessor = $container->getDefinition('ai.platform.token_usage_processor.openai'); + $outputTags = $tokenUsageProcessor->getTag('ai.agent.output_processor'); $foundTag = false; foreach ($outputTags as $tag) { diff --git a/src/platform/src/Bridge/Anthropic/TokenUsageResultHandler.php b/src/platform/src/Bridge/Anthropic/TokenOutputProcessor.php similarity index 100% rename from src/platform/src/Bridge/Anthropic/TokenUsageResultHandler.php rename to src/platform/src/Bridge/Anthropic/TokenOutputProcessor.php diff --git a/src/platform/src/Bridge/Gemini/TokenUsageResultHandler.php b/src/platform/src/Bridge/Gemini/TokenOutputProcessor.php similarity index 100% rename from src/platform/src/Bridge/Gemini/TokenUsageResultHandler.php rename to src/platform/src/Bridge/Gemini/TokenOutputProcessor.php diff --git a/src/platform/src/Bridge/Mistral/TokenUsageResultHandler.php b/src/platform/src/Bridge/Mistral/TokenOutputProcessor.php similarity index 100% rename from src/platform/src/Bridge/Mistral/TokenUsageResultHandler.php rename to src/platform/src/Bridge/Mistral/TokenOutputProcessor.php diff --git a/src/platform/src/Bridge/OpenAi/TokenUsageResultHandler.php b/src/platform/src/Bridge/OpenAi/TokenOutputProcessor.php similarity index 100% rename from src/platform/src/Bridge/OpenAi/TokenUsageResultHandler.php rename to src/platform/src/Bridge/OpenAi/TokenOutputProcessor.php diff --git a/src/platform/src/Bridge/Perplexity/SearchResultHandler.php b/src/platform/src/Bridge/Perplexity/SearchResultProcessor.php similarity index 100% rename from src/platform/src/Bridge/Perplexity/SearchResultHandler.php rename to src/platform/src/Bridge/Perplexity/SearchResultProcessor.php diff --git a/src/platform/src/Bridge/Perplexity/TokenUsageResultHandler.php b/src/platform/src/Bridge/Perplexity/TokenOutputProcessor.php similarity index 100% rename from src/platform/src/Bridge/Perplexity/TokenUsageResultHandler.php rename to src/platform/src/Bridge/Perplexity/TokenOutputProcessor.php diff --git a/src/platform/src/Bridge/VertexAi/TokenUsageResultHandler.php b/src/platform/src/Bridge/VertexAi/TokenOutputProcessor.php similarity index 100% rename from src/platform/src/Bridge/VertexAi/TokenUsageResultHandler.php rename to src/platform/src/Bridge/VertexAi/TokenOutputProcessor.php diff --git a/src/platform/src/Result/ResultHandlerInterface.php b/src/platform/src/Result/ResultHandlerInterface.php deleted file mode 100644 index df561e248..000000000 --- a/src/platform/src/Result/ResultHandlerInterface.php +++ /dev/null @@ -1,17 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\AI\Platform\Result; - -interface ResultHandlerInterface -{ - public function handleResult(ResultInterface $result): void; -} diff --git a/src/platform/tests/Bridge/Anthropic/TokenUsageResultHandlerTest.php b/src/platform/tests/Bridge/Anthropic/TokenOutputProcessorTest.php similarity index 100% rename from src/platform/tests/Bridge/Anthropic/TokenUsageResultHandlerTest.php rename to src/platform/tests/Bridge/Anthropic/TokenOutputProcessorTest.php diff --git a/src/platform/tests/Bridge/Gemini/TokenUsageDeterminerTest.php b/src/platform/tests/Bridge/Gemini/TokenOutputProcessorTest.php similarity index 100% rename from src/platform/tests/Bridge/Gemini/TokenUsageDeterminerTest.php rename to src/platform/tests/Bridge/Gemini/TokenOutputProcessorTest.php diff --git a/src/platform/tests/Bridge/Mistral/TokenUsageDeterminerTest.php b/src/platform/tests/Bridge/Mistral/TokenOutputProcessorTest.php similarity index 100% rename from src/platform/tests/Bridge/Mistral/TokenUsageDeterminerTest.php rename to src/platform/tests/Bridge/Mistral/TokenOutputProcessorTest.php diff --git a/src/platform/tests/Bridge/OpenAi/TokenUsageDeterminerTest.php b/src/platform/tests/Bridge/OpenAi/TokenOutputProcessorTest.php similarity index 100% rename from src/platform/tests/Bridge/OpenAi/TokenUsageDeterminerTest.php rename to src/platform/tests/Bridge/OpenAi/TokenOutputProcessorTest.php diff --git a/src/platform/tests/Bridge/Perplexity/TokenUsageDeterminerTest.php b/src/platform/tests/Bridge/Perplexity/TokenOutputProcessorTest.php similarity index 100% rename from src/platform/tests/Bridge/Perplexity/TokenUsageDeterminerTest.php rename to src/platform/tests/Bridge/Perplexity/TokenOutputProcessorTest.php diff --git a/src/platform/tests/Bridge/VertexAi/TokenUsageDeterminerTest.php b/src/platform/tests/Bridge/VertexAi/TokenOutputProcessorTest.php similarity index 100% rename from src/platform/tests/Bridge/VertexAi/TokenUsageDeterminerTest.php rename to src/platform/tests/Bridge/VertexAi/TokenOutputProcessorTest.php