diff --git a/demo/composer.json b/demo/composer.json
index 39f368f5e0..4c8a2cc01b 100644
--- a/demo/composer.json
+++ b/demo/composer.json
@@ -11,6 +11,8 @@
"ext-iconv": "*",
"codewithkyrian/chromadb-php": "^0.4.0",
"league/commonmark": "^2.7",
+ "mrmysql/youtube-transcript": "^0.0.5",
+ "php-http/discovery": "^1.20",
"runtime/frankenphp-symfony": "^0.2.0",
"symfony/ai-bundle": "@dev",
"symfony/asset": "7.3.*",
diff --git a/demo/composer.lock b/demo/composer.lock
index c11bbca49c..d7e1842b43 100644
--- a/demo/composer.lock
+++ b/demo/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "afb427389b43f337697f38a12fb4c765",
+ "content-hash": "d376fdbaeea8a7a8e4e399c9d8a6d2a4",
"packages": [
{
"name": "codewithkyrian/chromadb-php",
@@ -951,6 +951,59 @@
],
"time": "2025-03-24T10:02:05+00:00"
},
+ {
+ "name": "mrmysql/youtube-transcript",
+ "version": "v0.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/MrMySQL/youtube-transcript.git",
+ "reference": "e10e5b11dbc1b3f67f375c425ac11188af9c21c4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/MrMySQL/youtube-transcript/zipball/e10e5b11dbc1b3f67f375c425ac11188af9c21c4",
+ "reference": "e10e5b11dbc1b3f67f375c425ac11188af9c21c4",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8.2",
+ "psr/http-client": "^1.0",
+ "psr/http-factory": "^1.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^10",
+ "psalm/plugin-phpunit": "^0.19.5",
+ "vimeo/psalm": "^6.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "MrMySQL\\YoutubeTranscript\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "WTFPL"
+ ],
+ "authors": [
+ {
+ "name": "MrMySQL",
+ "email": "mrmysql.90@gmail.com"
+ }
+ ],
+ "description": "Retrieving transcripts for youtube videos.",
+ "support": {
+ "issues": "https://github.com/MrMySQL/youtube-transcript/issues",
+ "source": "https://github.com/MrMySQL/youtube-transcript/tree/v0.0.5"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/MrMySQL",
+ "type": "github"
+ }
+ ],
+ "time": "2025-06-13T23:40:09+00:00"
+ },
{
"name": "nette/schema",
"version": "v1.3.2",
@@ -1150,6 +1203,85 @@
},
"time": "2025-03-26T16:14:22+00:00"
},
+ {
+ "name": "php-http/discovery",
+ "version": "1.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-http/discovery.git",
+ "reference": "82fe4c73ef3363caed49ff8dd1539ba06044910d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-http/discovery/zipball/82fe4c73ef3363caed49ff8dd1539ba06044910d",
+ "reference": "82fe4c73ef3363caed49ff8dd1539ba06044910d",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^1.0|^2.0",
+ "php": "^7.1 || ^8.0"
+ },
+ "conflict": {
+ "nyholm/psr7": "<1.0",
+ "zendframework/zend-diactoros": "*"
+ },
+ "provide": {
+ "php-http/async-client-implementation": "*",
+ "php-http/client-implementation": "*",
+ "psr/http-client-implementation": "*",
+ "psr/http-factory-implementation": "*",
+ "psr/http-message-implementation": "*"
+ },
+ "require-dev": {
+ "composer/composer": "^1.0.2|^2.0",
+ "graham-campbell/phpspec-skip-example-extension": "^5.0",
+ "php-http/httplug": "^1.0 || ^2.0",
+ "php-http/message-factory": "^1.0",
+ "phpspec/phpspec": "^5.1 || ^6.1 || ^7.3",
+ "sebastian/comparator": "^3.0.5 || ^4.0.8",
+ "symfony/phpunit-bridge": "^6.4.4 || ^7.0.1"
+ },
+ "type": "composer-plugin",
+ "extra": {
+ "class": "Http\\Discovery\\Composer\\Plugin",
+ "plugin-optional": true
+ },
+ "autoload": {
+ "psr-4": {
+ "Http\\Discovery\\": "src/"
+ },
+ "exclude-from-classmap": [
+ "src/Composer/Plugin.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com"
+ }
+ ],
+ "description": "Finds and installs PSR-7, PSR-17, PSR-18 and HTTPlug implementations",
+ "homepage": "http://php-http.org",
+ "keywords": [
+ "adapter",
+ "client",
+ "discovery",
+ "factory",
+ "http",
+ "message",
+ "psr17",
+ "psr7"
+ ],
+ "support": {
+ "issues": "https://github.com/php-http/discovery/issues",
+ "source": "https://github.com/php-http/discovery/tree/1.20.0"
+ },
+ "time": "2024-10-02T11:20:13+00:00"
+ },
{
"name": "phpdocumentor/reflection-common",
"version": "2.2.0",
@@ -1880,11 +2012,11 @@
},
{
"name": "symfony/ai-agent",
- "version": "dev-integrate-demo",
+ "version": "dev-demo-update",
"dist": {
"type": "path",
"url": "../src/agent",
- "reference": "291833affae32075b3c79790a1a9c5b197fd9b95"
+ "reference": "fdf39db02aa955deb5ce0a1d983a5a373210d5e2"
},
"require": {
"ext-fileinfo": "*",
@@ -1901,17 +2033,23 @@
"symfony/type-info": "^7.2.3"
},
"require-dev": {
+ "mrmysql/youtube-transcript": "^v0.0.5",
"phpstan/phpstan": "^2.0",
"phpunit/phpunit": "^11.5.13",
"symfony/ai-store": "@dev",
+ "symfony/cache": "^6.4 || ^7.1",
"symfony/css-selector": "^6.4 || ^7.1",
"symfony/dom-crawler": "^6.4 || ^7.1",
- "symfony/event-dispatcher": "^6.4 || ^7.1"
+ "symfony/event-dispatcher": "^6.4 || ^7.1",
+ "symfony/http-foundation": "^6.4 || ^7.1"
},
"suggest": {
+ "mrmysql/youtube-transcript": "For using the YouTube transcription tool.",
+ "psr/cache": "For using the CacheStore as message store.",
"symfony/ai-store": "For using Similarity Search with a vector store.",
"symfony/css-selector": "For using the YouTube transcription tool.",
- "symfony/dom-crawler": "For using the YouTube transcription tool."
+ "symfony/dom-crawler": "For using the Crawler tool.",
+ "symfony/http-foundation": "For using the SessionStore as message store."
},
"type": "library",
"extra": {
@@ -1956,7 +2094,7 @@
},
{
"name": "symfony/ai-bundle",
- "version": "dev-integrate-demo",
+ "version": "dev-demo-update",
"dist": {
"type": "path",
"url": "../src/ai-bundle",
@@ -2007,11 +2145,11 @@
},
{
"name": "symfony/ai-platform",
- "version": "dev-integrate-demo",
+ "version": "dev-demo-update",
"dist": {
"type": "path",
"url": "../src/platform",
- "reference": "9fe0bfa258e784fc869062f53868ffc836f5106d"
+ "reference": "21cd90f88bc76accce0b5ffb118618333d2eca21"
},
"require": {
"ext-fileinfo": "*",
@@ -2026,6 +2164,7 @@
"symfony/property-info": "^6.4 || ^7.1",
"symfony/serializer": "^6.4 || ^7.1",
"symfony/type-info": "^7.2.3",
+ "symfony/uid": "^6.4 || ^7.1",
"webmozart/assert": "^1.11"
},
"require-dev": {
@@ -2091,11 +2230,11 @@
},
{
"name": "symfony/ai-store",
- "version": "dev-integrate-demo",
+ "version": "dev-demo-update",
"dist": {
"type": "path",
"url": "../src/store",
- "reference": "8c2f8bb841d392d3981d76c8485193abb9dc00b9"
+ "reference": "b74fe318350ea22aee3318589831060d8479ef5a"
},
"require": {
"ext-fileinfo": "*",
@@ -2112,7 +2251,9 @@
},
"require-dev": {
"codewithkyrian/chromadb-php": "^0.2.1 || ^0.3 || ^0.4",
- "mongodb/mongodb": "^1.21",
+ "doctrine/dbal": "^3.3 || ^4.0",
+ "ext-pdo": "*",
+ "mongodb/mongodb": "^1.21 || ^2.0",
"phpstan/phpstan": "^2.0",
"phpstan/phpstan-webmozart-assert": "^2.0",
"phpunit/phpunit": "^11.5",
@@ -2120,6 +2261,8 @@
},
"suggest": {
"codewithkyrian/chromadb-php": "For using the ChromaDB as retrieval vector store.",
+ "doctrine/dbal": "For using MariaDB via Doctrine as retrieval vector store",
+ "ext-pdo": "For using MariaDB as retrieval vector store.",
"mongodb/mongodb": "For using MongoDB Atlas as retrieval vector store.",
"probots-io/pinecone-php": "For using the Pinecone as retrieval vector store."
},
@@ -2153,7 +2296,7 @@
"email": "oskarstark@googlemail.com"
}
],
- "description": "PHP library for abstracting interaction with data stores in AI applications.",
+ "description": "Low-level abstraction for storing and retrieving documents in a vector store.",
"keywords": [
"ai",
"chromadb",
@@ -2315,16 +2458,16 @@
},
{
"name": "symfony/cache",
- "version": "v7.3.0",
+ "version": "v7.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/cache.git",
- "reference": "c4b217b578c11ec764867aa0c73e602c602965de"
+ "reference": "a7c6caa9d6113cebfb3020b427bcb021ebfdfc9e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/cache/zipball/c4b217b578c11ec764867aa0c73e602c602965de",
- "reference": "c4b217b578c11ec764867aa0c73e602c602965de",
+ "url": "https://api.github.com/repos/symfony/cache/zipball/a7c6caa9d6113cebfb3020b427bcb021ebfdfc9e",
+ "reference": "a7c6caa9d6113cebfb3020b427bcb021ebfdfc9e",
"shasum": ""
},
"require": {
@@ -2393,7 +2536,7 @@
"psr6"
],
"support": {
- "source": "https://github.com/symfony/cache/tree/v7.3.0"
+ "source": "https://github.com/symfony/cache/tree/v7.3.1"
},
"funding": [
{
@@ -2409,7 +2552,7 @@
"type": "tidelift"
}
],
- "time": "2025-05-06T19:00:13+00:00"
+ "time": "2025-06-27T19:55:54+00:00"
},
{
"name": "symfony/cache-contracts",
@@ -2638,16 +2781,16 @@
},
{
"name": "symfony/console",
- "version": "v7.3.0",
+ "version": "v7.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "66c1440edf6f339fd82ed6c7caa76cb006211b44"
+ "reference": "9e27aecde8f506ba0fd1d9989620c04a87697101"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/66c1440edf6f339fd82ed6c7caa76cb006211b44",
- "reference": "66c1440edf6f339fd82ed6c7caa76cb006211b44",
+ "url": "https://api.github.com/repos/symfony/console/zipball/9e27aecde8f506ba0fd1d9989620c04a87697101",
+ "reference": "9e27aecde8f506ba0fd1d9989620c04a87697101",
"shasum": ""
},
"require": {
@@ -2712,7 +2855,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v7.3.0"
+ "source": "https://github.com/symfony/console/tree/v7.3.1"
},
"funding": [
{
@@ -2728,7 +2871,7 @@
"type": "tidelift"
}
],
- "time": "2025-05-24T10:34:04+00:00"
+ "time": "2025-06-27T19:55:54+00:00"
},
{
"name": "symfony/css-selector",
@@ -2797,16 +2940,16 @@
},
{
"name": "symfony/dependency-injection",
- "version": "v7.3.0",
+ "version": "v7.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
- "reference": "f64a8f3fa7d4ad5e85de1b128a0e03faed02b732"
+ "reference": "8656c4848b48784c4bb8c4ae50d2b43f832cead8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f64a8f3fa7d4ad5e85de1b128a0e03faed02b732",
- "reference": "f64a8f3fa7d4ad5e85de1b128a0e03faed02b732",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/8656c4848b48784c4bb8c4ae50d2b43f832cead8",
+ "reference": "8656c4848b48784c4bb8c4ae50d2b43f832cead8",
"shasum": ""
},
"require": {
@@ -2857,7 +3000,7 @@
"description": "Allows you to standardize and centralize the way objects are constructed in your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dependency-injection/tree/v7.3.0"
+ "source": "https://github.com/symfony/dependency-injection/tree/v7.3.1"
},
"funding": [
{
@@ -2873,7 +3016,7 @@
"type": "tidelift"
}
],
- "time": "2025-05-19T13:28:56+00:00"
+ "time": "2025-06-24T04:04:43+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -2944,16 +3087,16 @@
},
{
"name": "symfony/dom-crawler",
- "version": "v7.3.0",
+ "version": "v7.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/dom-crawler.git",
- "reference": "0fabbc3d6a9c473b716a93fc8e7a537adb396166"
+ "reference": "8b2ee2e06ab99fa5f067b6699296d4e35c156bb9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/0fabbc3d6a9c473b716a93fc8e7a537adb396166",
- "reference": "0fabbc3d6a9c473b716a93fc8e7a537adb396166",
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/8b2ee2e06ab99fa5f067b6699296d4e35c156bb9",
+ "reference": "8b2ee2e06ab99fa5f067b6699296d4e35c156bb9",
"shasum": ""
},
"require": {
@@ -2991,7 +3134,7 @@
"description": "Eases DOM navigation for HTML and XML documents",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dom-crawler/tree/v7.3.0"
+ "source": "https://github.com/symfony/dom-crawler/tree/v7.3.1"
},
"funding": [
{
@@ -3007,7 +3150,7 @@
"type": "tidelift"
}
],
- "time": "2025-03-05T10:15:41+00:00"
+ "time": "2025-06-15T10:07:06+00:00"
},
{
"name": "symfony/dotenv",
@@ -3085,16 +3228,16 @@
},
{
"name": "symfony/error-handler",
- "version": "v7.3.0",
+ "version": "v7.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
- "reference": "cf68d225bc43629de4ff54778029aee6dc191b83"
+ "reference": "35b55b166f6752d6aaf21aa042fc5ed280fce235"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/error-handler/zipball/cf68d225bc43629de4ff54778029aee6dc191b83",
- "reference": "cf68d225bc43629de4ff54778029aee6dc191b83",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/35b55b166f6752d6aaf21aa042fc5ed280fce235",
+ "reference": "35b55b166f6752d6aaf21aa042fc5ed280fce235",
"shasum": ""
},
"require": {
@@ -3142,7 +3285,7 @@
"description": "Provides tools to manage errors and ease debugging PHP code",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/error-handler/tree/v7.3.0"
+ "source": "https://github.com/symfony/error-handler/tree/v7.3.1"
},
"funding": [
{
@@ -3158,7 +3301,7 @@
"type": "tidelift"
}
],
- "time": "2025-05-29T07:19:49+00:00"
+ "time": "2025-06-13T07:48:40+00:00"
},
{
"name": "symfony/event-dispatcher",
@@ -3448,16 +3591,16 @@
},
{
"name": "symfony/flex",
- "version": "v2.7.1",
+ "version": "v2.8.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/flex.git",
- "reference": "4ae50d368415a06820739e54d38a4a29d6df9155"
+ "reference": "423c36e369361003dc31ef11c5f15fb589e52c01"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/flex/zipball/4ae50d368415a06820739e54d38a4a29d6df9155",
- "reference": "4ae50d368415a06820739e54d38a4a29d6df9155",
+ "url": "https://api.github.com/repos/symfony/flex/zipball/423c36e369361003dc31ef11c5f15fb589e52c01",
+ "reference": "423c36e369361003dc31ef11c5f15fb589e52c01",
"shasum": ""
},
"require": {
@@ -3496,7 +3639,7 @@
"description": "Composer plugin for Symfony",
"support": {
"issues": "https://github.com/symfony/flex/issues",
- "source": "https://github.com/symfony/flex/tree/v2.7.1"
+ "source": "https://github.com/symfony/flex/tree/v2.8.1"
},
"funding": [
{
@@ -3512,20 +3655,20 @@
"type": "tidelift"
}
],
- "time": "2025-05-28T14:22:54+00:00"
+ "time": "2025-07-05T07:45:19+00:00"
},
{
"name": "symfony/framework-bundle",
- "version": "v7.3.0",
+ "version": "v7.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/framework-bundle.git",
- "reference": "030646f55fe18501a43edab22a8ad250d8ec42a6"
+ "reference": "91905f22f26aa350a33b3b9690bdf94976b0d0ab"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/030646f55fe18501a43edab22a8ad250d8ec42a6",
- "reference": "030646f55fe18501a43edab22a8ad250d8ec42a6",
+ "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/91905f22f26aa350a33b3b9690bdf94976b0d0ab",
+ "reference": "91905f22f26aa350a33b3b9690bdf94976b0d0ab",
"shasum": ""
},
"require": {
@@ -3650,7 +3793,7 @@
"description": "Provides a tight integration between Symfony components and the Symfony full-stack framework",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/framework-bundle/tree/v7.3.0"
+ "source": "https://github.com/symfony/framework-bundle/tree/v7.3.1"
},
"funding": [
{
@@ -3666,20 +3809,20 @@
"type": "tidelift"
}
],
- "time": "2025-05-28T06:56:42+00:00"
+ "time": "2025-06-27T19:55:54+00:00"
},
{
"name": "symfony/http-client",
- "version": "v7.3.0",
+ "version": "v7.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-client.git",
- "reference": "57e4fb86314015a695a750ace358d07a7e37b8a9"
+ "reference": "4403d87a2c16f33345dca93407a8714ee8c05a64"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-client/zipball/57e4fb86314015a695a750ace358d07a7e37b8a9",
- "reference": "57e4fb86314015a695a750ace358d07a7e37b8a9",
+ "url": "https://api.github.com/repos/symfony/http-client/zipball/4403d87a2c16f33345dca93407a8714ee8c05a64",
+ "reference": "4403d87a2c16f33345dca93407a8714ee8c05a64",
"shasum": ""
},
"require": {
@@ -3691,6 +3834,7 @@
},
"conflict": {
"amphp/amp": "<2.5",
+ "amphp/socket": "<1.1",
"php-http/discovery": "<1.15",
"symfony/http-foundation": "<6.4"
},
@@ -3703,7 +3847,6 @@
"require-dev": {
"amphp/http-client": "^4.2.1|^5.0",
"amphp/http-tunnel": "^1.0|^2.0",
- "amphp/socket": "^1.1",
"guzzlehttp/promises": "^1.4|^2.0",
"nyholm/psr7": "^1.0",
"php-http/httplug": "^1.0|^2.0",
@@ -3745,7 +3888,7 @@
"http"
],
"support": {
- "source": "https://github.com/symfony/http-client/tree/v7.3.0"
+ "source": "https://github.com/symfony/http-client/tree/v7.3.1"
},
"funding": [
{
@@ -3761,7 +3904,7 @@
"type": "tidelift"
}
],
- "time": "2025-05-02T08:23:16+00:00"
+ "time": "2025-06-28T07:58:39+00:00"
},
{
"name": "symfony/http-client-contracts",
@@ -3843,16 +3986,16 @@
},
{
"name": "symfony/http-foundation",
- "version": "v7.3.0",
+ "version": "v7.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
- "reference": "4236baf01609667d53b20371486228231eb135fd"
+ "reference": "23dd60256610c86a3414575b70c596e5deff6ed9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/4236baf01609667d53b20371486228231eb135fd",
- "reference": "4236baf01609667d53b20371486228231eb135fd",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/23dd60256610c86a3414575b70c596e5deff6ed9",
+ "reference": "23dd60256610c86a3414575b70c596e5deff6ed9",
"shasum": ""
},
"require": {
@@ -3902,7 +4045,7 @@
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-foundation/tree/v7.3.0"
+ "source": "https://github.com/symfony/http-foundation/tree/v7.3.1"
},
"funding": [
{
@@ -3918,20 +4061,20 @@
"type": "tidelift"
}
],
- "time": "2025-05-12T14:48:23+00:00"
+ "time": "2025-06-23T15:07:14+00:00"
},
{
"name": "symfony/http-kernel",
- "version": "v7.3.0",
+ "version": "v7.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
- "reference": "ac7b8e163e8c83dce3abcc055a502d4486051a9f"
+ "reference": "1644879a66e4aa29c36fe33dfa6c54b450ce1831"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/ac7b8e163e8c83dce3abcc055a502d4486051a9f",
- "reference": "ac7b8e163e8c83dce3abcc055a502d4486051a9f",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/1644879a66e4aa29c36fe33dfa6c54b450ce1831",
+ "reference": "1644879a66e4aa29c36fe33dfa6c54b450ce1831",
"shasum": ""
},
"require": {
@@ -4016,7 +4159,7 @@
"description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-kernel/tree/v7.3.0"
+ "source": "https://github.com/symfony/http-kernel/tree/v7.3.1"
},
"funding": [
{
@@ -4032,7 +4175,7 @@
"type": "tidelift"
}
],
- "time": "2025-05-29T07:47:32+00:00"
+ "time": "2025-06-28T08:24:55+00:00"
},
{
"name": "symfony/monolog-bridge",
@@ -4433,16 +4576,16 @@
},
{
"name": "symfony/property-access",
- "version": "v7.3.0",
+ "version": "v7.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/property-access.git",
- "reference": "3bcf43665d6aff90547b005348e1e351f4e2174b"
+ "reference": "518d15c8cca726ebe665dcd7154074584cf862e8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/property-access/zipball/3bcf43665d6aff90547b005348e1e351f4e2174b",
- "reference": "3bcf43665d6aff90547b005348e1e351f4e2174b",
+ "url": "https://api.github.com/repos/symfony/property-access/zipball/518d15c8cca726ebe665dcd7154074584cf862e8",
+ "reference": "518d15c8cca726ebe665dcd7154074584cf862e8",
"shasum": ""
},
"require": {
@@ -4489,7 +4632,7 @@
"reflection"
],
"support": {
- "source": "https://github.com/symfony/property-access/tree/v7.3.0"
+ "source": "https://github.com/symfony/property-access/tree/v7.3.1"
},
"funding": [
{
@@ -4505,27 +4648,27 @@
"type": "tidelift"
}
],
- "time": "2025-05-10T11:59:09+00:00"
+ "time": "2025-06-24T04:04:43+00:00"
},
{
"name": "symfony/property-info",
- "version": "v7.3.0",
+ "version": "v7.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/property-info.git",
- "reference": "200d230d8553610ada73ac557501dc4609aad31f"
+ "reference": "90586acbf2a6dd13bee4f09f09111c8bd4773970"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/property-info/zipball/200d230d8553610ada73ac557501dc4609aad31f",
- "reference": "200d230d8553610ada73ac557501dc4609aad31f",
+ "url": "https://api.github.com/repos/symfony/property-info/zipball/90586acbf2a6dd13bee4f09f09111c8bd4773970",
+ "reference": "90586acbf2a6dd13bee4f09f09111c8bd4773970",
"shasum": ""
},
"require": {
"php": ">=8.2",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/string": "^6.4|^7.0",
- "symfony/type-info": "~7.1.9|^7.2.2"
+ "symfony/type-info": "~7.2.8|^7.3.1"
},
"conflict": {
"phpdocumentor/reflection-docblock": "<5.2",
@@ -4575,7 +4718,7 @@
"validator"
],
"support": {
- "source": "https://github.com/symfony/property-info/tree/v7.3.0"
+ "source": "https://github.com/symfony/property-info/tree/v7.3.1"
},
"funding": [
{
@@ -4591,7 +4734,7 @@
"type": "tidelift"
}
],
- "time": "2025-04-04T13:12:05+00:00"
+ "time": "2025-06-27T19:55:54+00:00"
},
{
"name": "symfony/routing",
@@ -4676,16 +4819,16 @@
},
{
"name": "symfony/runtime",
- "version": "v7.3.0",
+ "version": "v7.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/runtime.git",
- "reference": "fda552ee63dce9f3365f9c397efe7a80c8abac0a"
+ "reference": "9516056d432f8acdac9458eb41b80097da7a05c9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/runtime/zipball/fda552ee63dce9f3365f9c397efe7a80c8abac0a",
- "reference": "fda552ee63dce9f3365f9c397efe7a80c8abac0a",
+ "url": "https://api.github.com/repos/symfony/runtime/zipball/9516056d432f8acdac9458eb41b80097da7a05c9",
+ "reference": "9516056d432f8acdac9458eb41b80097da7a05c9",
"shasum": ""
},
"require": {
@@ -4735,7 +4878,7 @@
"runtime"
],
"support": {
- "source": "https://github.com/symfony/runtime/tree/v7.3.0"
+ "source": "https://github.com/symfony/runtime/tree/v7.3.1"
},
"funding": [
{
@@ -4751,20 +4894,20 @@
"type": "tidelift"
}
],
- "time": "2025-04-06T16:01:50+00:00"
+ "time": "2025-06-13T07:48:40+00:00"
},
{
"name": "symfony/serializer",
- "version": "v7.3.0",
+ "version": "v7.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/serializer.git",
- "reference": "2d86f81b1c506d7e1578789f93280dab4b8411bb"
+ "reference": "feaf837cedbbc8287986602223175d3fd639922d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/serializer/zipball/2d86f81b1c506d7e1578789f93280dab4b8411bb",
- "reference": "2d86f81b1c506d7e1578789f93280dab4b8411bb",
+ "url": "https://api.github.com/repos/symfony/serializer/zipball/feaf837cedbbc8287986602223175d3fd639922d",
+ "reference": "feaf837cedbbc8287986602223175d3fd639922d",
"shasum": ""
},
"require": {
@@ -4833,7 +4976,7 @@
"description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/serializer/tree/v7.3.0"
+ "source": "https://github.com/symfony/serializer/tree/v7.3.1"
},
"funding": [
{
@@ -4849,7 +4992,7 @@
"type": "tidelift"
}
],
- "time": "2025-05-12T14:48:23+00:00"
+ "time": "2025-06-27T19:55:54+00:00"
},
{
"name": "symfony/service-contracts",
@@ -4936,16 +5079,16 @@
},
{
"name": "symfony/stimulus-bundle",
- "version": "v2.26.1",
+ "version": "v2.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/stimulus-bundle.git",
- "reference": "82c174ebe564e6ecc1412974b6380b86d450675f"
+ "reference": "defaeb91bd366f9f43dbe54dbdfd9bc3c4138814"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/82c174ebe564e6ecc1412974b6380b86d450675f",
- "reference": "82c174ebe564e6ecc1412974b6380b86d450675f",
+ "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/defaeb91bd366f9f43dbe54dbdfd9bc3c4138814",
+ "reference": "defaeb91bd366f9f43dbe54dbdfd9bc3c4138814",
"shasum": ""
},
"require": {
@@ -4985,7 +5128,7 @@
"symfony-ux"
],
"support": {
- "source": "https://github.com/symfony/stimulus-bundle/tree/v2.26.1"
+ "source": "https://github.com/symfony/stimulus-bundle/tree/v2.27.0"
},
"funding": [
{
@@ -5001,7 +5144,7 @@
"type": "tidelift"
}
],
- "time": "2025-06-05T17:25:17+00:00"
+ "time": "2025-06-22T19:07:55+00:00"
},
{
"name": "symfony/string",
@@ -5281,16 +5424,16 @@
},
{
"name": "symfony/twig-bundle",
- "version": "v7.3.0",
+ "version": "v7.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bundle.git",
- "reference": "0ace7d92b92437a5ad59fad457af7dc2475db89b"
+ "reference": "bc23c11d9716fc2261ee26a32e654b0e8b1b1896"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/0ace7d92b92437a5ad59fad457af7dc2475db89b",
- "reference": "0ace7d92b92437a5ad59fad457af7dc2475db89b",
+ "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/bc23c11d9716fc2261ee26a32e654b0e8b1b1896",
+ "reference": "bc23c11d9716fc2261ee26a32e654b0e8b1b1896",
"shasum": ""
},
"require": {
@@ -5345,7 +5488,7 @@
"description": "Provides a tight integration of Twig into the Symfony full-stack framework",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/twig-bundle/tree/v7.3.0"
+ "source": "https://github.com/symfony/twig-bundle/tree/v7.3.1"
},
"funding": [
{
@@ -5361,20 +5504,20 @@
"type": "tidelift"
}
],
- "time": "2025-05-14T11:51:37+00:00"
+ "time": "2025-06-24T04:04:43+00:00"
},
{
"name": "symfony/type-info",
- "version": "v7.3.0",
+ "version": "v7.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/type-info.git",
- "reference": "bc9af22e25796d98078f69c0749ab3a9d3454786"
+ "reference": "5fa6e25e4195e73ce9e457b521ac5e61ec271150"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/type-info/zipball/bc9af22e25796d98078f69c0749ab3a9d3454786",
- "reference": "bc9af22e25796d98078f69c0749ab3a9d3454786",
+ "url": "https://api.github.com/repos/symfony/type-info/zipball/5fa6e25e4195e73ce9e457b521ac5e61ec271150",
+ "reference": "5fa6e25e4195e73ce9e457b521ac5e61ec271150",
"shasum": ""
},
"require": {
@@ -5424,7 +5567,7 @@
"type"
],
"support": {
- "source": "https://github.com/symfony/type-info/tree/v7.3.0"
+ "source": "https://github.com/symfony/type-info/tree/v7.3.1"
},
"funding": [
{
@@ -5440,20 +5583,20 @@
"type": "tidelift"
}
],
- "time": "2025-03-30T12:17:06+00:00"
+ "time": "2025-06-27T19:55:54+00:00"
},
{
"name": "symfony/uid",
- "version": "v7.3.0",
+ "version": "v7.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/uid.git",
- "reference": "7beeb2b885cd584cd01e126c5777206ae4c3c6a3"
+ "reference": "a69f69f3159b852651a6bf45a9fdd149520525bb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/uid/zipball/7beeb2b885cd584cd01e126c5777206ae4c3c6a3",
- "reference": "7beeb2b885cd584cd01e126c5777206ae4c3c6a3",
+ "url": "https://api.github.com/repos/symfony/uid/zipball/a69f69f3159b852651a6bf45a9fdd149520525bb",
+ "reference": "a69f69f3159b852651a6bf45a9fdd149520525bb",
"shasum": ""
},
"require": {
@@ -5498,7 +5641,7 @@
"uuid"
],
"support": {
- "source": "https://github.com/symfony/uid/tree/v7.3.0"
+ "source": "https://github.com/symfony/uid/tree/v7.3.1"
},
"funding": [
{
@@ -5514,20 +5657,20 @@
"type": "tidelift"
}
],
- "time": "2025-05-24T14:28:13+00:00"
+ "time": "2025-06-27T19:55:54+00:00"
},
{
"name": "symfony/ux-icons",
- "version": "v2.26.0",
+ "version": "v2.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/ux-icons.git",
- "reference": "e5c1e5b5093ae26dba45d0f3390a1e21f305c47a"
+ "reference": "af6d09779e786717c6e3b5a8a004e8c18ce3ef00"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/ux-icons/zipball/e5c1e5b5093ae26dba45d0f3390a1e21f305c47a",
- "reference": "e5c1e5b5093ae26dba45d0f3390a1e21f305c47a",
+ "url": "https://api.github.com/repos/symfony/ux-icons/zipball/af6d09779e786717c6e3b5a8a004e8c18ce3ef00",
+ "reference": "af6d09779e786717c6e3b5a8a004e8c18ce3ef00",
"shasum": ""
},
"require": {
@@ -5587,7 +5730,7 @@
"twig"
],
"support": {
- "source": "https://github.com/symfony/ux-icons/tree/v2.26.0"
+ "source": "https://github.com/symfony/ux-icons/tree/v2.27.0"
},
"funding": [
{
@@ -5603,20 +5746,20 @@
"type": "tidelift"
}
],
- "time": "2025-05-30T02:07:34+00:00"
+ "time": "2025-06-17T06:15:15+00:00"
},
{
"name": "symfony/ux-live-component",
- "version": "v2.26.1",
+ "version": "v2.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/ux-live-component.git",
- "reference": "92b300bb90d87f14aeae47b0f5c9e058b15f5c2f"
+ "reference": "05def4e467d378810f46f826dc67506180df8bd2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/ux-live-component/zipball/92b300bb90d87f14aeae47b0f5c9e058b15f5c2f",
- "reference": "92b300bb90d87f14aeae47b0f5c9e058b15f5c2f",
+ "url": "https://api.github.com/repos/symfony/ux-live-component/zipball/05def4e467d378810f46f826dc67506180df8bd2",
+ "reference": "05def4e467d378810f46f826dc67506180df8bd2",
"shasum": ""
},
"require": {
@@ -5684,7 +5827,7 @@
"twig"
],
"support": {
- "source": "https://github.com/symfony/ux-live-component/tree/v2.26.1"
+ "source": "https://github.com/symfony/ux-live-component/tree/v2.27.0"
},
"funding": [
{
@@ -5700,20 +5843,20 @@
"type": "tidelift"
}
],
- "time": "2025-06-06T19:57:53+00:00"
+ "time": "2025-06-22T19:07:55+00:00"
},
{
"name": "symfony/ux-turbo",
- "version": "v2.26.1",
+ "version": "v2.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/ux-turbo.git",
- "reference": "3754ac2b41220127e58c62f7599eaf7834b69a55"
+ "reference": "b9ce9b30a9cf9bbd090c7ad290bdaf84a0e100b2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/ux-turbo/zipball/3754ac2b41220127e58c62f7599eaf7834b69a55",
- "reference": "3754ac2b41220127e58c62f7599eaf7834b69a55",
+ "url": "https://api.github.com/repos/symfony/ux-turbo/zipball/b9ce9b30a9cf9bbd090c7ad290bdaf84a0e100b2",
+ "reference": "b9ce9b30a9cf9bbd090c7ad290bdaf84a0e100b2",
"shasum": ""
},
"require": {
@@ -5783,7 +5926,7 @@
"turbo-stream"
],
"support": {
- "source": "https://github.com/symfony/ux-turbo/tree/v2.26.1"
+ "source": "https://github.com/symfony/ux-turbo/tree/v2.27.0"
},
"funding": [
{
@@ -5799,20 +5942,20 @@
"type": "tidelift"
}
],
- "time": "2025-06-05T17:25:17+00:00"
+ "time": "2025-06-06T20:27:21+00:00"
},
{
"name": "symfony/ux-twig-component",
- "version": "v2.26.0",
+ "version": "v2.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/ux-twig-component.git",
- "reference": "825e653b34fb48ed2198913c603d80f7632fe9c1"
+ "reference": "0879cd53812b79e8b6a20e104b6e785a2ac2c013"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/ux-twig-component/zipball/825e653b34fb48ed2198913c603d80f7632fe9c1",
- "reference": "825e653b34fb48ed2198913c603d80f7632fe9c1",
+ "url": "https://api.github.com/repos/symfony/ux-twig-component/zipball/0879cd53812b79e8b6a20e104b6e785a2ac2c013",
+ "reference": "0879cd53812b79e8b6a20e104b6e785a2ac2c013",
"shasum": ""
},
"require": {
@@ -5866,7 +6009,7 @@
"twig"
],
"support": {
- "source": "https://github.com/symfony/ux-twig-component/tree/v2.26.0"
+ "source": "https://github.com/symfony/ux-twig-component/tree/v2.27.0"
},
"funding": [
{
@@ -5882,20 +6025,20 @@
"type": "tidelift"
}
],
- "time": "2025-05-26T06:21:54+00:00"
+ "time": "2025-06-21T16:41:28+00:00"
},
{
"name": "symfony/ux-typed",
- "version": "v2.26.1",
+ "version": "v2.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/ux-typed.git",
- "reference": "df0f3bec5c4e6016f2a777420a545a5bb50495ca"
+ "reference": "929f1e41c7f4898f9f509c96b798ed1bc241e33f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/ux-typed/zipball/df0f3bec5c4e6016f2a777420a545a5bb50495ca",
- "reference": "df0f3bec5c4e6016f2a777420a545a5bb50495ca",
+ "url": "https://api.github.com/repos/symfony/ux-typed/zipball/929f1e41c7f4898f9f509c96b798ed1bc241e33f",
+ "reference": "929f1e41c7f4898f9f509c96b798ed1bc241e33f",
"shasum": ""
},
"require": {
@@ -5937,7 +6080,7 @@
"symfony-ux"
],
"support": {
- "source": "https://github.com/symfony/ux-typed/tree/v2.26.1"
+ "source": "https://github.com/symfony/ux-typed/tree/v2.27.0"
},
"funding": [
{
@@ -5953,20 +6096,20 @@
"type": "tidelift"
}
],
- "time": "2025-06-05T20:47:06+00:00"
+ "time": "2025-06-06T20:27:21+00:00"
},
{
"name": "symfony/var-dumper",
- "version": "v7.3.0",
+ "version": "v7.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "548f6760c54197b1084e1e5c71f6d9d523f2f78e"
+ "reference": "6e209fbe5f5a7b6043baba46fe5735a4b85d0d42"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/548f6760c54197b1084e1e5c71f6d9d523f2f78e",
- "reference": "548f6760c54197b1084e1e5c71f6d9d523f2f78e",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6e209fbe5f5a7b6043baba46fe5735a4b85d0d42",
+ "reference": "6e209fbe5f5a7b6043baba46fe5735a4b85d0d42",
"shasum": ""
},
"require": {
@@ -6021,7 +6164,7 @@
"dump"
],
"support": {
- "source": "https://github.com/symfony/var-dumper/tree/v7.3.0"
+ "source": "https://github.com/symfony/var-dumper/tree/v7.3.1"
},
"funding": [
{
@@ -6037,7 +6180,7 @@
"type": "tidelift"
}
],
- "time": "2025-04-27T18:39:23+00:00"
+ "time": "2025-06-27T19:55:54+00:00"
},
{
"name": "symfony/var-exporter",
@@ -6118,16 +6261,16 @@
},
{
"name": "symfony/yaml",
- "version": "v7.3.0",
+ "version": "v7.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "cea40a48279d58dc3efee8112634cb90141156c2"
+ "reference": "0c3555045a46ab3cd4cc5a69d161225195230edb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/cea40a48279d58dc3efee8112634cb90141156c2",
- "reference": "cea40a48279d58dc3efee8112634cb90141156c2",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/0c3555045a46ab3cd4cc5a69d161225195230edb",
+ "reference": "0c3555045a46ab3cd4cc5a69d161225195230edb",
"shasum": ""
},
"require": {
@@ -6170,7 +6313,7 @@
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/yaml/tree/v7.3.0"
+ "source": "https://github.com/symfony/yaml/tree/v7.3.1"
},
"funding": [
{
@@ -6186,7 +6329,7 @@
"type": "tidelift"
}
],
- "time": "2025-04-04T10:10:33+00:00"
+ "time": "2025-06-03T06:57:57+00:00"
},
{
"name": "twig/extra-bundle",
@@ -6475,16 +6618,16 @@
"packages-dev": [
{
"name": "myclabs/deep-copy",
- "version": "1.13.1",
+ "version": "1.13.3",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c"
+ "reference": "faed855a7b5f4d4637717c2b3863e277116beb36"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/1720ddd719e16cf0db4eb1c6eca108031636d46c",
- "reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/faed855a7b5f4d4637717c2b3863e277116beb36",
+ "reference": "faed855a7b5f4d4637717c2b3863e277116beb36",
"shasum": ""
},
"require": {
@@ -6523,7 +6666,7 @@
],
"support": {
"issues": "https://github.com/myclabs/DeepCopy/issues",
- "source": "https://github.com/myclabs/DeepCopy/tree/1.13.1"
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.13.3"
},
"funding": [
{
@@ -6531,7 +6674,7 @@
"type": "tidelift"
}
],
- "time": "2025-04-29T12:36:36+00:00"
+ "time": "2025-07-05T12:25:42+00:00"
},
{
"name": "nikic/php-parser",
@@ -6768,16 +6911,16 @@
},
{
"name": "php-cs-fixer/shim",
- "version": "v3.75.0",
+ "version": "v3.80.0",
"source": {
"type": "git",
"url": "https://github.com/PHP-CS-Fixer/shim.git",
- "reference": "eea219a577085bd13ff0cb644a422c20798316c7"
+ "reference": "050bfba7a3f1716522075118a60e934344053b34"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHP-CS-Fixer/shim/zipball/eea219a577085bd13ff0cb644a422c20798316c7",
- "reference": "eea219a577085bd13ff0cb644a422c20798316c7",
+ "url": "https://api.github.com/repos/PHP-CS-Fixer/shim/zipball/050bfba7a3f1716522075118a60e934344053b34",
+ "reference": "050bfba7a3f1716522075118a60e934344053b34",
"shasum": ""
},
"require": {
@@ -6814,9 +6957,9 @@
"description": "A tool to automatically fix PHP code style",
"support": {
"issues": "https://github.com/PHP-CS-Fixer/shim/issues",
- "source": "https://github.com/PHP-CS-Fixer/shim/tree/v3.75.0"
+ "source": "https://github.com/PHP-CS-Fixer/shim/tree/v3.80.0"
},
- "time": "2025-03-31T18:45:02+00:00"
+ "time": "2025-07-06T21:01:12+00:00"
},
{
"name": "phpstan/phpstan",
@@ -7213,16 +7356,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "11.5.24",
+ "version": "11.5.26",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "6b07ab1047155cf38f82dd691787a277782271dd"
+ "reference": "4ad8fe263a0b55b54a8028c38a18e3c5bef312e0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/6b07ab1047155cf38f82dd691787a277782271dd",
- "reference": "6b07ab1047155cf38f82dd691787a277782271dd",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4ad8fe263a0b55b54a8028c38a18e3c5bef312e0",
+ "reference": "4ad8fe263a0b55b54a8028c38a18e3c5bef312e0",
"shasum": ""
},
"require": {
@@ -7294,7 +7437,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.24"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.26"
},
"funding": [
{
@@ -7318,7 +7461,7 @@
"type": "tidelift"
}
],
- "time": "2025-06-20T11:31:02+00:00"
+ "time": "2025-07-04T05:58:21+00:00"
},
{
"name": "sebastian/cli-parser",
@@ -8513,16 +8656,16 @@
},
{
"name": "symfony/web-profiler-bundle",
- "version": "v7.3.0",
+ "version": "v7.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/web-profiler-bundle.git",
- "reference": "a22b7e4a744820a56f1bafa830f2c72a2ba0913c"
+ "reference": "47c994d8f08817122ffb48bf2ea4fb97b7e00d51"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/a22b7e4a744820a56f1bafa830f2c72a2ba0913c",
- "reference": "a22b7e4a744820a56f1bafa830f2c72a2ba0913c",
+ "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/47c994d8f08817122ffb48bf2ea4fb97b7e00d51",
+ "reference": "47c994d8f08817122ffb48bf2ea4fb97b7e00d51",
"shasum": ""
},
"require": {
@@ -8578,7 +8721,7 @@
"dev"
],
"support": {
- "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.3.0"
+ "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.3.1"
},
"funding": [
{
@@ -8594,7 +8737,7 @@
"type": "tidelift"
}
],
- "time": "2025-05-02T05:30:54+00:00"
+ "time": "2025-06-05T09:30:41+00:00"
},
{
"name": "theseer/tokenizer",
diff --git a/demo/config/packages/http_discovery.yaml b/demo/config/packages/http_discovery.yaml
new file mode 100644
index 0000000000..2a789e73c9
--- /dev/null
+++ b/demo/config/packages/http_discovery.yaml
@@ -0,0 +1,10 @@
+services:
+ Psr\Http\Message\RequestFactoryInterface: '@http_discovery.psr17_factory'
+ Psr\Http\Message\ResponseFactoryInterface: '@http_discovery.psr17_factory'
+ Psr\Http\Message\ServerRequestFactoryInterface: '@http_discovery.psr17_factory'
+ Psr\Http\Message\StreamFactoryInterface: '@http_discovery.psr17_factory'
+ Psr\Http\Message\UploadedFileFactoryInterface: '@http_discovery.psr17_factory'
+ Psr\Http\Message\UriFactoryInterface: '@http_discovery.psr17_factory'
+
+ http_discovery.psr17_factory:
+ class: Http\Discovery\Psr17Factory
diff --git a/demo/src/Audio/Chat.php b/demo/src/Audio/Chat.php
index 6e0eebb396..2e405ab54f 100644
--- a/demo/src/Audio/Chat.php
+++ b/demo/src/Audio/Chat.php
@@ -17,7 +17,6 @@
use Symfony\AI\Platform\Message\Message;
use Symfony\AI\Platform\Message\MessageBag;
use Symfony\AI\Platform\PlatformInterface;
-use Symfony\AI\Platform\Response\AsyncResponse;
use Symfony\AI\Platform\Response\TextResponse;
use Symfony\Component\DependencyInjection\Attribute\Autowire;
use Symfony\Component\HttpFoundation\RequestStack;
@@ -41,11 +40,8 @@ public function say(string $base64audio): void
file_put_contents($path, base64_decode($base64audio));
$response = $this->platform->request(new Whisper(), Audio::fromFile($path));
- \assert($response instanceof AsyncResponse);
- $response = $response->unwrap();
- \assert($response instanceof TextResponse);
- $this->submitMessage($response->getContent());
+ $this->submitMessage($response->asText());
}
public function loadMessages(): MessageBag
diff --git a/demo/src/Blog/Command/QueryCommand.php b/demo/src/Blog/Command/QueryCommand.php
index cb7272a20c..db3d59dc03 100644
--- a/demo/src/Blog/Command/QueryCommand.php
+++ b/demo/src/Blog/Command/QueryCommand.php
@@ -14,8 +14,6 @@
use Codewithkyrian\ChromaDB\Client;
use Symfony\AI\Platform\Bridge\OpenAI\Embeddings;
use Symfony\AI\Platform\PlatformInterface;
-use Symfony\AI\Platform\Response\AsyncResponse;
-use Symfony\AI\Platform\Response\VectorResponse;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
@@ -51,11 +49,8 @@ protected function execute(InputInterface $input, OutputInterface $output): int
$io->comment('Results are limited to 4 most similar documents.');
$platformResponse = $this->platform->request(new Embeddings(), $search);
- \assert($platformResponse instanceof AsyncResponse);
- $platformResponse = $platformResponse->unwrap();
- \assert($platformResponse instanceof VectorResponse);
$queryResponse = $collection->query(
- queryEmbeddings: [$platformResponse->getContent()[0]->getData()],
+ queryEmbeddings: [$platformResponse->asVectors()[0]->getData()],
nResults: 4,
);
diff --git a/demo/src/Video/TwigComponent.php b/demo/src/Video/TwigComponent.php
index 9ba1a18db8..30ca7341bc 100644
--- a/demo/src/Video/TwigComponent.php
+++ b/demo/src/Video/TwigComponent.php
@@ -16,8 +16,6 @@
use Symfony\AI\Platform\Message\Message;
use Symfony\AI\Platform\Message\MessageBag;
use Symfony\AI\Platform\PlatformInterface;
-use Symfony\AI\Platform\Response\AsyncResponse;
-use Symfony\AI\Platform\Response\TextResponse;
use Symfony\UX\LiveComponent\Attribute\AsLiveComponent;
use Symfony\UX\LiveComponent\Attribute\LiveAction;
use Symfony\UX\LiveComponent\Attribute\LiveArg;
@@ -53,10 +51,6 @@ public function submit(#[LiveArg] string $instruction, #[LiveArg] string $image)
'max_tokens' => 100,
]);
- \assert($response instanceof AsyncResponse);
- $response = $response->unwrap();
- \assert($response instanceof TextResponse);
-
- $this->caption = $response->getContent();
+ $this->caption = $response->asText();
}
}
diff --git a/demo/src/YouTube/TranscriptFetcher.php b/demo/src/YouTube/TranscriptFetcher.php
index 568ee01d68..716b6afa2f 100644
--- a/demo/src/YouTube/TranscriptFetcher.php
+++ b/demo/src/YouTube/TranscriptFetcher.php
@@ -11,7 +11,8 @@
namespace App\YouTube;
-use Symfony\Component\DomCrawler\Crawler;
+use MrMySQL\YoutubeTranscript\TranscriptListFetcher;
+use Symfony\Component\HttpClient\Psr18Client;
use Symfony\Contracts\HttpClient\HttpClientInterface;
final class TranscriptFetcher
@@ -23,41 +24,14 @@ public function __construct(
public function fetchTranscript(string $videoId): string
{
- // Fetch the HTML content of the YouTube video page
- $htmlResponse = $this->client->request('GET', 'https://youtube.com/watch?v='.$videoId);
- $html = $htmlResponse->getContent();
+ $psr18Client = new Psr18Client($this->client);
+ $fetcher = new TranscriptListFetcher($psr18Client, $psr18Client, $psr18Client);
- // Use DomCrawler to parse the HTML
- $crawler = new Crawler($html);
+ $list = $fetcher->fetch($videoId);
+ $transcript = $list->findTranscript($list->getAvailableLanguageCodes());
- // Extract the script containing the ytInitialPlayerResponse
- $scriptContent = $crawler->filter('script')->reduce(function (Crawler $node) {
- return str_contains($node->text(), 'var ytInitialPlayerResponse = {');
- })->text();
-
- // Extract and parse the JSON data from the script
- $start = strpos($scriptContent, 'var ytInitialPlayerResponse = ') + \strlen('var ytInitialPlayerResponse = ');
- $dataString = substr($scriptContent, $start);
- $dataString = substr($dataString, 0, strrpos($dataString, ';') ?: null);
- $data = json_decode(trim($dataString), true);
-
- // Extract the URL for the captions
- if (!isset($data['captions']['playerCaptionsTracklistRenderer']['captionTracks'][0]['baseUrl'])) {
- throw new \Exception('Captions are not available for this video.');
- }
- $captionsUrl = $data['captions']['playerCaptionsTracklistRenderer']['captionTracks'][0]['baseUrl'];
-
- // Fetch and parse the captions XML
- $xmlResponse = $this->client->request('GET', $captionsUrl);
- $xmlContent = $xmlResponse->getContent();
- $xmlCrawler = new Crawler($xmlContent);
-
- // Collect all text elements from the captions
- $transcript = $xmlCrawler->filter('text')->each(function (Crawler $node) {
- return $node->text().' TranscriptFetcher.php';
- });
-
- // Combine all the text elements into one string
- return implode(\PHP_EOL, $transcript);
+ return array_reduce($transcript->fetch(), function (string $carry, array $item): string {
+ return $carry.\PHP_EOL.$item['text'];
+ }, '');
}
}
diff --git a/demo/symfony.lock b/demo/symfony.lock
index 4255e4cfe0..beeeda4b72 100644
--- a/demo/symfony.lock
+++ b/demo/symfony.lock
@@ -20,6 +20,18 @@
".php-cs-fixer.dist.php"
]
},
+ "php-http/discovery": {
+ "version": "1.20",
+ "recipe": {
+ "repo": "github.com/symfony/recipes",
+ "branch": "main",
+ "version": "1.18",
+ "ref": "f45b5dd173a27873ab19f5e3180b2f661c21de02"
+ },
+ "files": [
+ "config/packages/http_discovery.yaml"
+ ]
+ },
"php-llm/llm-chain-bundle": {
"version": "dev-main"
},
diff --git a/demo/tests/YouTube/TranscriptFetcherTest.php b/demo/tests/YouTube/TranscriptFetcherTest.php
deleted file mode 100644
index 2d4ac1e8b7..0000000000
--- a/demo/tests/YouTube/TranscriptFetcherTest.php
+++ /dev/null
@@ -1,36 +0,0 @@
-
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace App\Tests\YouTube;
-
-use App\YouTube\TranscriptFetcher;
-use PHPUnit\Framework\Attributes\CoversClass;
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpClient\MockHttpClient;
-use Symfony\Component\HttpClient\Response\MockResponse;
-
-#[CoversClass(TranscriptFetcher::class), ]
-final class TranscriptFetcherTest extends TestCase
-{
- public function testFetchTranscript(): void
- {
- $videoResponse = MockResponse::fromFile(__DIR__.'/fixtures/video.html');
- $transcriptResponse = MockResponse::fromFile(__DIR__.'/fixtures/transcript.xml');
- $mockClient = new MockHttpClient([$videoResponse, $transcriptResponse]);
-
- $fetcher = new TranscriptFetcher($mockClient);
- $transcript = $fetcher->fetchTranscript('6uXW-ulpj0s');
-
- self::assertStringContainsString('symphony is a PHP framework', $transcript);
- }
-}
diff --git a/demo/tests/YouTube/fixtures/transcript.xml b/demo/tests/YouTube/fixtures/transcript.xml
deleted file mode 100644
index f93f51bb2f..0000000000
--- a/demo/tests/YouTube/fixtures/transcript.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-
-