Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
27f132d
[Platform] Split bridges into dedicated packages
OskarStark Dec 9, 2025
2b2b1b9
[Deptrac] Add platform bridge layers and rules
OskarStark Dec 9, 2025
4c9cd08
[AiBundle] Add willBeAvailable checks for platform bridges
OskarStark Dec 9, 2025
f1665ea
[Platform] Add symfony/ai-agent dependency for bridges with OutputPro…
OskarStark Dec 9, 2025
fe52359
[Platform] Fix PHPStan errors in bridge tests
OskarStark Dec 9, 2025
08e0197
[Demo] Require platform bridge packages
OskarStark Dec 9, 2025
62482b8
[Examples] Add platform bridge packages and path repositories
OskarStark Dec 9, 2025
9067bf6
-
OskarStark Dec 9, 2025
8701739
[Platform] Add PHPStan array type annotations to bridge tests
OskarStark Dec 9, 2025
96aea3c
[Bedrock] Allow async-aws/bedrock-runtime v1.0
OskarStark Dec 9, 2025
2707a4e
[Platform] Use central fixtures folder for bridge tests
OskarStark Dec 9, 2025
87686c8
[Platform] Add PHPStan array type annotations to more bridge tests
OskarStark Dec 9, 2025
87e38bd
[Platform] Add more PHPStan array type annotations to bridge tests
OskarStark Dec 9, 2025
a813946
[Platform] Remove PHPStan array type annotations from bridge tests
OskarStark Dec 9, 2025
d8e3b51
[Platform] Remove PHPDoc type annotations from FileNormalizerTest
OskarStark Dec 9, 2025
ce3a044
[Platform] Add back PHPDoc annotation to AssistantMessageNormalizerTest
OskarStark Dec 9, 2025
3ec8d67
[Platform] Remove PHPDoc type annotations from ToolCallMessageNormali…
OskarStark Dec 9, 2025
9ba1d4d
[Platform] Remove PHPDoc annotation from VertexAi TokenOutputProcesso…
OskarStark Dec 9, 2025
d6ca72d
[Platform] Add back @return annotation to ToolCallMessageNormalizerTest
OskarStark Dec 9, 2025
24942b1
[Platform] Remove @param annotations from AssistantMessageNormalizerTest
OskarStark Dec 9, 2025
3efaf94
[Platform] Remove @param annotations from VoyageContractTest
OskarStark Dec 9, 2025
3c7b481
[Platform] Remove @param annotation from Voyage ModelClientTest
OskarStark Dec 9, 2025
977fabd
[Platform] Document platform bridge packages in README
OskarStark Dec 9, 2025
817c0a7
[Gemini] Simplify PHPDoc annotations in MessageBagNormalizerTest
OskarStark Dec 9, 2025
c8d6091
[Gemini][VertexAi] Simplify PHPDoc annotations in ToolNormalizerTest
OskarStark Dec 9, 2025
a69338a
[Voyage] Remove PHPDoc param annotations in CollectionNormalizerTest
OskarStark Dec 9, 2025
1d8a8d6
[Platform] Remove @return iterable PHPDoc annotations from bridge tests
OskarStark Dec 9, 2025
a52d42f
[Platform] Keep @return annotations and move Fixtures to src/platform…
OskarStark Dec 9, 2025
c4b6885
[Anthropic] Add @return annotation to AssistantMessageNormalizerTest
OskarStark Dec 10, 2025
503b66f
[Gemini] Add @return annotation to ToolCallMessageNormalizerTest
OskarStark Dec 10, 2025
86142b8
[Gemini] Add @return annotation to ToolNormalizerTest
OskarStark Dec 10, 2025
16615d6
[Gemini] Add @return annotation to UserMessageNormalizerTest
OskarStark Dec 10, 2025
6ad29e6
Apply suggestions from code review
OskarStark Dec 10, 2025
6764b02
Apply suggestions from code review
OskarStark Dec 10, 2025
10fbc41
Update src/platform/src/Bridge/Meta/Tests/LlamaPromptConverterTest.php
OskarStark Dec 10, 2025
09494b1
Apply suggestions from code review
OskarStark Dec 10, 2025
b88f081
[Gemini][VertexAi] Reorder data provider methods in UserMessageNormal…
OskarStark Dec 10, 2025
2f093a1
[TransformersPhp] Add allow-plugins config for Composer plugins
OskarStark Dec 10, 2025
2aca879
[Mistral] Fix fixture path in DocumentNormalizerTest
OskarStark Dec 10, 2025
4bfc5fb
[LmStudio] Move tests to Bridge/LmStudio/Tests namespace
OskarStark Dec 10, 2025
6fe3ffe
[Decart] Add platform bridge package
OskarStark Dec 10, 2025
a1a4fa6
[OpenRouter] Move tests to Bridge/OpenRouter/Tests namespace
OskarStark Dec 10, 2025
79f92ac
[Platform] Add platform bridges to splitsh.json
OskarStark Dec 11, 2025
bf39280
-
OskarStark Dec 11, 2025
96a7afe
[Decart] Remove unnecessary allow-plugins config
OskarStark Dec 11, 2025
bb0d482
[Platform] Move http-client dependency to bridge packages
OskarStark Dec 11, 2025
c8455db
-
OskarStark Dec 11, 2025
c65c233
[Platform] Remove bridge-specific dependencies from main package
OskarStark Dec 11, 2025
0140cd2
[OpenRouter][LmStudio] Add missing symfony/ai-generic-platform depend…
OskarStark Dec 11, 2025
d3a0c51
[HuggingFace] Fix fixture path in FileNormalizerTest
OskarStark Dec 11, 2025
c7eee2b
[Decart] Add missing phpunit.xml.dist
OskarStark Dec 11, 2025
3ff5b3f
[HuggingFace] Remove docblock from data provider
OskarStark Dec 12, 2025
6210a39
-
OskarStark Dec 12, 2025
cce0bbe
-
OskarStark Dec 12, 2025
63442db
[Decart] Fix DecartClientTest to use binary response content
OskarStark Dec 12, 2025
fa6b071
-
OskarStark Dec 12, 2025
19941d9
-
OskarStark Dec 12, 2025
2bcd09a
[CI] Use copy instead of symlink for path repositories
OskarStark Dec 12, 2025
6a87e3f
Revert "[CI] Use copy instead of symlink for path repositories"
OskarStark Dec 12, 2025
15a198c
[Platform] Add path repositories for bridge packages
OskarStark Dec 12, 2025
ce5d793
[Agent] Add path repositories for tool bridge packages
OskarStark Dec 12, 2025
dfa50c1
[CI] Skip OpenRouter and LmStudio bridges in unit tests
OskarStark Dec 12, 2025
2484efb
Revert "[Agent] Add path repositories for tool bridge packages"
OskarStark Dec 12, 2025
8b639ba
[CI] Skip all platform bridges except Generic in unit tests
OskarStark Dec 12, 2025
e17c603
[CI] Add OpenRouter bridge to unit tests
OskarStark Dec 12, 2025
3369a3e
[CI] Add LmStudio bridge to unit tests
OskarStark Dec 12, 2025
946d112
[CI] Add Anthropic bridge to unit tests (has agent dependency)
OskarStark Dec 12, 2025
4871960
[CI] Add AiMlApi bridge to unit tests
OskarStark Dec 12, 2025
c268304
[CI] Add Albert bridge to unit tests
OskarStark Dec 12, 2025
4dcda12
[CI] Add Azure bridge to unit tests
OskarStark Dec 12, 2025
1bbe814
[CI] Add Bedrock bridge to unit tests
OskarStark Dec 12, 2025
3a50c1c
[CI] Add Decart bridge to unit tests
OskarStark Dec 12, 2025
5992419
[CI] Add TransformersPhp bridge to unit tests
OskarStark Dec 12, 2025
ac4f552
[CI] Add Cartesia bridge to unit tests
OskarStark Dec 12, 2025
72ae1ca
[CI] Add Cerebras bridge to unit tests
OskarStark Dec 12, 2025
1e6aa57
[CI] Disable all platform bridges except Generic
OskarStark Dec 12, 2025
0e3811d
Update PHPUnit requirement to ^11.5.46 in all platform bridges
OskarStark Dec 12, 2025
2d9e6f5
[CI] Add debug output for PHP 8.2 lowest job
OskarStark Dec 12, 2025
a7dbc55
[CI] Skip platform component and all platform bridges in unit tests
OskarStark Dec 12, 2025
3c97dd3
[CI] Improve debug output readability
OskarStark Dec 12, 2025
d83ddf0
[CI] Enable platform component tests, skip only platform bridges
OskarStark Dec 12, 2025
1f4798d
[CI] Run tests sequentially for lowest deps to identify failures
OskarStark Dec 12, 2025
6d49c15
[CI] Enable platform bridges in unit tests
OskarStark Dec 12, 2025
b01165a
Revert "[CI] Run tests sequentially for lowest deps to identify failu…
OskarStark Dec 12, 2025
e11169b
Revert "[CI] Improve debug output readability"
OskarStark Dec 12, 2025
773faaf
-
OskarStark Dec 12, 2025
8ccad37
[CI] Disable lowest deps job until platform bridges are published
OskarStark Dec 12, 2025
72eda9b
Add missing bridge dependencies according to deptrac rules
OskarStark Dec 12, 2025
bef9b18
Revert deptrac.yaml changes
OskarStark Dec 12, 2025
4c2a40c
Add Meta bridge to examples/composer.json
OskarStark Dec 12, 2025
61da02a
Fix OpenAI platform package name to symfony/ai-open-ai-platform
OskarStark Dec 12, 2025
f968c92
[CI] Use copy instead of symlink for path repositories
OskarStark Dec 12, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .github/build-packages.php
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,9 @@
$repositories[] = [
'type' => 'path',
'url' => $packageInfo['path'],
'options' => [
'symlink' => false,
],
];
$key = isset($packageData['require'][$packageName]) ? 'require' : 'require-dev';
$packageData[$key][$packageName] = '@dev';
Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/unit-tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,10 @@ jobs:
dependency-version: ['']
symfony-version: ['']
include:
# TODO: Uncomment once all platform bridge packages are published and at least one tag exists
# lowest deps
- php-version: '8.2'
dependency-version: 'lowest'
# - php-version: '8.2'
# dependency-version: 'lowest'
# Symfony 7.4 LTS
- php-version: '8.2'
symfony-version: '7.4.*'
Expand Down
13 changes: 13 additions & 0 deletions .github/workflows/validation.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,16 @@ jobs:

- name: Validate tool bridges are in splitsh.json
run: .github/scripts/validate-bridge-splitsh.sh tool agent

validate_platforms:
name: Platform Bridges
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6

- name: Validate platform bridge naming conventions
run: .github/scripts/validate-bridge-naming.sh platform platform

- name: Validate platform bridges are in splitsh.json
run: .github/scripts/validate-bridge-splitsh.sh platform
2 changes: 2 additions & 0 deletions demo/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
"symfony/ai-bundle": "@dev",
"symfony/ai-chroma-db-store": "@dev",
"symfony/ai-clock-tool": "@dev",
"symfony/ai-hugging-face-platform": "@dev",
"symfony/ai-open-ai-platform": "@dev",
"symfony/ai-similarity-search-tool": "@dev",
"symfony/ai-wikipedia-tool": "@dev",
"symfony/asset": "^8.0",
Expand Down
9 changes: 8 additions & 1 deletion demo/config/reference.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
<?php

// This file is auto-generated and is for apps only. Bundles SHOULD NOT rely on its content.
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <[email protected]>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace Symfony\Component\DependencyInjection\Loader\Configurator;

Expand Down
129 changes: 125 additions & 4 deletions examples/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,43 +19,164 @@
{
"type": "path",
"url": "../src/store"
},
{
"type": "path",
"url": "../src/platform/src/Bridge/AiMlApi"
},
{
"type": "path",
"url": "../src/platform/src/Bridge/Albert"
},
{
"type": "path",
"url": "../src/platform/src/Bridge/Anthropic"
},
{
"type": "path",
"url": "../src/platform/src/Bridge/Azure"
},
{
"type": "path",
"url": "../src/platform/src/Bridge/Bedrock"
},
{
"type": "path",
"url": "../src/platform/src/Bridge/Cartesia"
},
{
"type": "path",
"url": "../src/platform/src/Bridge/Cerebras"
},
{
"type": "path",
"url": "../src/platform/src/Bridge/Decart"
},
{
"type": "path",
"url": "../src/platform/src/Bridge/DeepSeek"
},
{
"type": "path",
"url": "../src/platform/src/Bridge/DockerModelRunner"
},
{
"type": "path",
"url": "../src/platform/src/Bridge/ElevenLabs"
},
{
"type": "path",
"url": "../src/platform/src/Bridge/Gemini"
},
{
"type": "path",
"url": "../src/platform/src/Bridge/Generic"
},
{
"type": "path",
"url": "../src/platform/src/Bridge/HuggingFace"
},
{
"type": "path",
"url": "../src/platform/src/Bridge/LmStudio"
},
{
"type": "path",
"url": "../src/platform/src/Bridge/Meta"
},
{
"type": "path",
"url": "../src/platform/src/Bridge/Mistral"
},
{
"type": "path",
"url": "../src/platform/src/Bridge/Ollama"
},
{
"type": "path",
"url": "../src/platform/src/Bridge/OpenAi"
},
{
"type": "path",
"url": "../src/platform/src/Bridge/OpenRouter"
},
{
"type": "path",
"url": "../src/platform/src/Bridge/Perplexity"
},
{
"type": "path",
"url": "../src/platform/src/Bridge/Scaleway"
},
{
"type": "path",
"url": "../src/platform/src/Bridge/TransformersPhp"
},
{
"type": "path",
"url": "../src/platform/src/Bridge/VertexAi"
},
{
"type": "path",
"url": "../src/platform/src/Bridge/Voyage"
}
],
"require": {
"php": ">=8.2",
"async-aws/bedrock-runtime": "^1.1",
"codewithkyrian/transformers": "^0.6.2",
"doctrine/dbal": "^3.3|^4.0",
"google/auth": "^1.47",
"symfony/ai-agent": "@dev",
"symfony/ai-ai-ml-api-platform": "@dev",
"symfony/ai-albert-platform": "@dev",
"symfony/ai-anthropic-platform": "@dev",
"symfony/ai-azure-platform": "@dev",
"symfony/ai-azure-search-store": "@dev",
"symfony/ai-bedrock-platform": "@dev",
"symfony/ai-brave-tool": "@dev",
"symfony/ai-cache-store": "@dev",
"symfony/ai-cartesia-platform": "@dev",
"symfony/ai-cerebras-platform": "@dev",
"symfony/ai-chat": "@dev",
"symfony/ai-chroma-db-store": "@dev",
"symfony/ai-click-house-store": "@dev",
"symfony/ai-clock-tool": "@dev",
"symfony/ai-cloudflare-store": "@dev",
"symfony/ai-decart-platform": "@dev",
"symfony/ai-deep-seek-platform": "@dev",
"symfony/ai-docker-model-runner-platform": "@dev",
"symfony/ai-eleven-labs-platform": "@dev",
"symfony/ai-gemini-platform": "@dev",
"symfony/ai-generic-platform": "@dev",
"symfony/ai-hugging-face-platform": "@dev",
"symfony/ai-lm-studio-platform": "@dev",
"symfony/ai-manticore-search-store": "@dev",
"symfony/ai-maria-db-store": "@dev",
"symfony/ai-meilisearch-store": "@dev",
"symfony/ai-meta-platform": "@dev",
"symfony/ai-milvus-store": "@dev",
"symfony/ai-mistral-platform": "@dev",
"symfony/ai-mongo-db-store": "@dev",
"symfony/ai-neo4j-store": "@dev",
"symfony/ai-ollama-platform": "@dev",
"symfony/ai-open-ai-platform": "@dev",
"symfony/ai-open-meteo-tool": "@dev",
"symfony/ai-open-router-platform": "@dev",
"symfony/ai-open-search-store": "@dev",
"symfony/ai-perplexity-platform": "@dev",
"symfony/ai-pinecone-store": "@dev",
"symfony/ai-platform": "@dev",
"symfony/ai-postgres-store": "@dev",
"symfony/ai-qdrant-store": "@dev",
"symfony/ai-redis-store": "@dev",
"symfony/ai-scaleway-platform": "@dev",
"symfony/ai-scraper-tool": "@dev",
"symfony/ai-serp-api-tool": "@dev",
"symfony/ai-similarity-search-tool": "@dev",
"symfony/ai-supabase-store": "@dev",
"symfony/ai-surreal-db-store": "@dev",
"symfony/ai-tavily-tool": "@dev",
"symfony/ai-transformers-php-platform": "@dev",
"symfony/ai-typesense-store": "@dev",
"symfony/ai-vertex-ai-platform": "@dev",
"symfony/ai-voyage-platform": "@dev",
"symfony/ai-weaviate-store": "@dev",
"symfony/ai-wikipedia-tool": "@dev",
"symfony/ai-youtube-tool": "@dev",
Expand Down
30 changes: 29 additions & 1 deletion splitsh.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,35 @@
"ai-bundle": "src/ai-bundle",
"ai-chat": "src/chat",
"mcp-bundle": "src/mcp-bundle",
"ai-platform": "src/platform",
"ai-platform": {
"prefixes": [{ "from": "src/platform", "to": "", "excludes": ["src/Bridge"] }]
},
"ai-ai-ml-api-platform": "src/platform/src/Bridge/AiMlApi",
"ai-albert-platform": "src/platform/src/Bridge/Albert",
"ai-anthropic-platform": "src/platform/src/Bridge/Anthropic",
"ai-azure-platform": "src/platform/src/Bridge/Azure",
"ai-bedrock-platform": "src/platform/src/Bridge/Bedrock",
"ai-cartesia-platform": "src/platform/src/Bridge/Cartesia",
"ai-cerebras-platform": "src/platform/src/Bridge/Cerebras",
"ai-decart-platform": "src/platform/src/Bridge/Decart",
"ai-deep-seek-platform": "src/platform/src/Bridge/DeepSeek",
"ai-docker-model-runner-platform": "src/platform/src/Bridge/DockerModelRunner",
"ai-eleven-labs-platform": "src/platform/src/Bridge/ElevenLabs",
"ai-gemini-platform": "src/platform/src/Bridge/Gemini",
"ai-generic-platform": "src/platform/src/Bridge/Generic",
"ai-hugging-face-platform": "src/platform/src/Bridge/HuggingFace",
"ai-lm-studio-platform": "src/platform/src/Bridge/LmStudio",
"ai-meta-platform": "src/platform/src/Bridge/Meta",
"ai-mistral-platform": "src/platform/src/Bridge/Mistral",
"ai-ollama-platform": "src/platform/src/Bridge/Ollama",
"ai-open-ai-platform": "src/platform/src/Bridge/OpenAi",
"ai-open-router-platform": "src/platform/src/Bridge/OpenRouter",
"ai-perplexity-platform": "src/platform/src/Bridge/Perplexity",
"ai-replicate-platform": "src/platform/src/Bridge/Replicate",
"ai-scaleway-platform": "src/platform/src/Bridge/Scaleway",
"ai-transformers-php-platform": "src/platform/src/Bridge/TransformersPhp",
"ai-vertex-ai-platform": "src/platform/src/Bridge/VertexAi",
"ai-voyage-platform": "src/platform/src/Bridge/Voyage",
"ai-store": {
"prefixes": [{ "from": "src/store", "to": "", "excludes": ["src/Bridge"] }]
},
Expand Down
5 changes: 1 addition & 4 deletions src/ai-bundle/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,7 @@
}
},
"config": {
"sort-packages": true,
"allow-plugins": {
"php-http/discovery": true
}
"sort-packages": true
},
"extra": {
"branch-alias": {
Expand Down
Loading
Loading