diff --git a/composer.json b/composer.json
index 6826f64..9e883c9 100644
--- a/composer.json
+++ b/composer.json
@@ -9,7 +9,9 @@
"ext-iconv": "*",
"codewithkyrian/chromadb-php": "^0.4.0",
"league/commonmark": "^2.7",
- "php-llm/llm-chain-bundle": "^0.22",
+ "mrmysql/youtube-transcript": "^0.0.5",
+ "php-http/discovery": "^1.20",
+ "php-llm/llm-chain-bundle": "^0.24",
"runtime/frankenphp-symfony": "^0.2.0",
"symfony/asset": "7.3.*",
"symfony/asset-mapper": "7.3.*",
diff --git a/composer.lock b/composer.lock
index 9aaf5da..b76eeef 100644
--- a/composer.lock
+++ b/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": "77581522a522ad0ebf6540fa79d0e10a",
+ "content-hash": "db90222ee206dd7758bfacbeb779b3b8",
"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",
@@ -1015,16 +1068,16 @@
},
{
"name": "nette/utils",
- "version": "v4.0.6",
+ "version": "v4.0.7",
"source": {
"type": "git",
"url": "https://github.com/nette/utils.git",
- "reference": "ce708655043c7050eb050df361c5e313cf708309"
+ "reference": "e67c4061eb40b9c113b218214e42cb5a0dda28f2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nette/utils/zipball/ce708655043c7050eb050df361c5e313cf708309",
- "reference": "ce708655043c7050eb050df361c5e313cf708309",
+ "url": "https://api.github.com/repos/nette/utils/zipball/e67c4061eb40b9c113b218214e42cb5a0dda28f2",
+ "reference": "e67c4061eb40b9c113b218214e42cb5a0dda28f2",
"shasum": ""
},
"require": {
@@ -1095,9 +1148,9 @@
],
"support": {
"issues": "https://github.com/nette/utils/issues",
- "source": "https://github.com/nette/utils/tree/v4.0.6"
+ "source": "https://github.com/nette/utils/tree/v4.0.7"
},
- "time": "2025-03-30T21:06:30+00:00"
+ "time": "2025-06-03T04:55:08+00:00"
},
{
"name": "oskarstark/enum-helper",
@@ -1150,18 +1203,97 @@
},
"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": "php-llm/llm-chain",
- "version": "0.22.0",
+ "version": "0.24.0",
"source": {
"type": "git",
"url": "https://github.com/php-llm/llm-chain.git",
- "reference": "c27618db1646b46ae9524b356bb5561b56f04027"
+ "reference": "cb6fc83aec7038646a4aa187436d53c8cf05865c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-llm/llm-chain/zipball/c27618db1646b46ae9524b356bb5561b56f04027",
- "reference": "c27618db1646b46ae9524b356bb5561b56f04027",
+ "url": "https://api.github.com/repos/php-llm/llm-chain/zipball/cb6fc83aec7038646a4aa187436d53c8cf05865c",
+ "reference": "cb6fc83aec7038646a4aa187436d53c8cf05865c",
"shasum": ""
},
"require": {
@@ -1170,7 +1302,6 @@
"php": ">=8.2",
"phpdocumentor/reflection-docblock": "^5.4",
"phpstan/phpdoc-parser": "^2.1",
- "psr/cache": "^3.0",
"psr/log": "^3.0",
"symfony/clock": "^6.4 || ^7.1",
"symfony/http-client": "^6.4 || ^7.1",
@@ -1188,20 +1319,27 @@
"async-aws/bedrock-runtime": "^0.1.0",
"codewithkyrian/chromadb-php": "^0.2.1 || ^0.3 || ^0.4",
"codewithkyrian/transformers": "^0.5.3",
- "mongodb/mongodb": "^1.21",
+ "doctrine/dbal": "^3.0 || ^4.0",
+ "ext-pdo": "*",
+ "mongodb/mongodb": "^1.21 || ^2.0",
+ "mrmysql/youtube-transcript": "^v0.0.5",
"php-cs-fixer/shim": "^3.70",
+ "php-http/discovery": "^1.20",
"phpstan/phpstan": "^2.0",
"phpstan/phpstan-symfony": "^2.0",
"phpstan/phpstan-webmozart-assert": "^2.0",
- "phpunit/phpunit": "^11.5",
+ "phpunit/phpunit": "^11.5.13",
"probots-io/pinecone-php": "^1.0",
+ "psr/http-factory-implementation": "*",
"rector/rector": "^2.0",
+ "symfony/cache": "^6.4 || ^7.1",
"symfony/console": "^6.4 || ^7.1",
"symfony/css-selector": "^6.4 || ^7.1",
"symfony/dom-crawler": "^6.4 || ^7.1",
"symfony/dotenv": "^6.4 || ^7.1",
"symfony/event-dispatcher": "^6.4 || ^7.1",
"symfony/finder": "^6.4 || ^7.1",
+ "symfony/http-foundation": "^6.4 || ^7.1",
"symfony/process": "^6.4 || ^7.1",
"symfony/var-dumper": "^6.4 || ^7.1"
},
@@ -1209,10 +1347,14 @@
"async-aws/bedrock-runtime": "For using the Bedrock platform.",
"codewithkyrian/chromadb-php": "For using the ChromaDB as retrieval vector store.",
"codewithkyrian/transformers": "For using the TransformersPHP with FFI to run models in PHP.",
+ "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.",
+ "mrmysql/youtube-transcript": "For using the YouTube transcription tool.",
"probots-io/pinecone-php": "For using the Pinecone as retrieval vector store.",
- "symfony/css-selector": "For using the YouTube transcription tool.",
- "symfony/dom-crawler": "For using the YouTube transcription tool."
+ "psr/cache": "For using the CacheStore as message store.",
+ "symfony/dom-crawler": "For using the Crawler tool.",
+ "symfony/http-foundation": "For using the SessionStore as message store."
},
"type": "library",
"autoload": {
@@ -1243,34 +1385,34 @@
],
"support": {
"issues": "https://github.com/php-llm/llm-chain/issues",
- "source": "https://github.com/php-llm/llm-chain/tree/0.22.0"
+ "source": "https://github.com/php-llm/llm-chain/tree/0.24.0"
},
- "time": "2025-06-01T13:51:19+00:00"
+ "time": "2025-07-06T17:56:46+00:00"
},
{
"name": "php-llm/llm-chain-bundle",
- "version": "0.22.0",
+ "version": "0.24.0",
"source": {
"type": "git",
"url": "https://github.com/php-llm/llm-chain-bundle.git",
- "reference": "e83812e10daa443598c5e577963e8b010213446d"
+ "reference": "b3e83d078fe0bfab405b8ef24b52fd74d155bba1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-llm/llm-chain-bundle/zipball/e83812e10daa443598c5e577963e8b010213446d",
- "reference": "e83812e10daa443598c5e577963e8b010213446d",
+ "url": "https://api.github.com/repos/php-llm/llm-chain-bundle/zipball/b3e83d078fe0bfab405b8ef24b52fd74d155bba1",
+ "reference": "b3e83d078fe0bfab405b8ef24b52fd74d155bba1",
"shasum": ""
},
"require": {
"php": ">=8.2",
- "php-llm/llm-chain": "^0.22",
+ "php-llm/llm-chain": "^0.24",
"symfony/config": "^6.4 || ^7.0",
"symfony/dependency-injection": "^6.4 || ^7.0",
"symfony/framework-bundle": "^6.4 || ^7.0",
"symfony/string": "^6.4 || ^7.0"
},
"require-dev": {
- "php-cs-fixer/shim": "^3.69",
+ "php-cs-fixer/shim": "^3.78",
"phpstan/phpstan": "^2.1",
"phpunit/phpunit": "^11.5",
"rector/rector": "^2.0"
@@ -1298,9 +1440,9 @@
"description": "Symfony integration bundle for php-llm/llm-chain",
"support": {
"issues": "https://github.com/php-llm/llm-chain-bundle/issues",
- "source": "https://github.com/php-llm/llm-chain-bundle/tree/0.22.0"
+ "source": "https://github.com/php-llm/llm-chain-bundle/tree/0.24.0"
},
- "time": "2025-06-01T20:53:32+00:00"
+ "time": "2025-07-06T18:13:02+00:00"
},
{
"name": "phpdocumentor/reflection-common",
@@ -2181,16 +2323,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": {
@@ -2259,7 +2401,7 @@
"psr6"
],
"support": {
- "source": "https://github.com/symfony/cache/tree/v7.3.0"
+ "source": "https://github.com/symfony/cache/tree/v7.3.1"
},
"funding": [
{
@@ -2275,7 +2417,7 @@
"type": "tidelift"
}
],
- "time": "2025-05-06T19:00:13+00:00"
+ "time": "2025-06-27T19:55:54+00:00"
},
{
"name": "symfony/cache-contracts",
@@ -2504,16 +2646,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": {
@@ -2578,7 +2720,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v7.3.0"
+ "source": "https://github.com/symfony/console/tree/v7.3.1"
},
"funding": [
{
@@ -2594,7 +2736,7 @@
"type": "tidelift"
}
],
- "time": "2025-05-24T10:34:04+00:00"
+ "time": "2025-06-27T19:55:54+00:00"
},
{
"name": "symfony/css-selector",
@@ -2663,16 +2805,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": {
@@ -2723,7 +2865,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": [
{
@@ -2739,7 +2881,7 @@
"type": "tidelift"
}
],
- "time": "2025-05-19T13:28:56+00:00"
+ "time": "2025-06-24T04:04:43+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -2810,16 +2952,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": {
@@ -2857,7 +2999,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": [
{
@@ -2873,7 +3015,7 @@
"type": "tidelift"
}
],
- "time": "2025-03-05T10:15:41+00:00"
+ "time": "2025-06-15T10:07:06+00:00"
},
{
"name": "symfony/dotenv",
@@ -2951,16 +3093,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": {
@@ -3008,7 +3150,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": [
{
@@ -3024,7 +3166,7 @@
"type": "tidelift"
}
],
- "time": "2025-05-29T07:19:49+00:00"
+ "time": "2025-06-13T07:48:40+00:00"
},
{
"name": "symfony/event-dispatcher",
@@ -3314,16 +3456,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": {
@@ -3362,7 +3504,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": [
{
@@ -3378,20 +3520,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": {
@@ -3516,7 +3658,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": [
{
@@ -3532,20 +3674,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": {
@@ -3557,6 +3699,7 @@
},
"conflict": {
"amphp/amp": "<2.5",
+ "amphp/socket": "<1.1",
"php-http/discovery": "<1.15",
"symfony/http-foundation": "<6.4"
},
@@ -3569,7 +3712,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",
@@ -3611,7 +3753,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": [
{
@@ -3627,7 +3769,7 @@
"type": "tidelift"
}
],
- "time": "2025-05-02T08:23:16+00:00"
+ "time": "2025-06-28T07:58:39+00:00"
},
{
"name": "symfony/http-client-contracts",
@@ -3709,16 +3851,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": {
@@ -3768,7 +3910,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": [
{
@@ -3784,20 +3926,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": {
@@ -3882,7 +4024,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": [
{
@@ -3898,7 +4040,7 @@
"type": "tidelift"
}
],
- "time": "2025-05-29T07:47:32+00:00"
+ "time": "2025-06-28T08:24:55+00:00"
},
{
"name": "symfony/monolog-bridge",
@@ -4299,16 +4441,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": {
@@ -4355,7 +4497,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": [
{
@@ -4371,27 +4513,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",
@@ -4441,7 +4583,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": [
{
@@ -4457,7 +4599,7 @@
"type": "tidelift"
}
],
- "time": "2025-04-04T13:12:05+00:00"
+ "time": "2025-06-27T19:55:54+00:00"
},
{
"name": "symfony/routing",
@@ -4542,16 +4684,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": {
@@ -4601,7 +4743,7 @@
"runtime"
],
"support": {
- "source": "https://github.com/symfony/runtime/tree/v7.3.0"
+ "source": "https://github.com/symfony/runtime/tree/v7.3.1"
},
"funding": [
{
@@ -4617,20 +4759,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": {
@@ -4699,7 +4841,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": [
{
@@ -4715,7 +4857,7 @@
"type": "tidelift"
}
],
- "time": "2025-05-12T14:48:23+00:00"
+ "time": "2025-06-27T19:55:54+00:00"
},
{
"name": "symfony/service-contracts",
@@ -4802,16 +4944,16 @@
},
{
"name": "symfony/stimulus-bundle",
- "version": "v2.25.2",
+ "version": "v2.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/stimulus-bundle.git",
- "reference": "5a6aef0646119530da862d5afa1386ade3b9ed43"
+ "reference": "defaeb91bd366f9f43dbe54dbdfd9bc3c4138814"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/5a6aef0646119530da862d5afa1386ade3b9ed43",
- "reference": "5a6aef0646119530da862d5afa1386ade3b9ed43",
+ "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/defaeb91bd366f9f43dbe54dbdfd9bc3c4138814",
+ "reference": "defaeb91bd366f9f43dbe54dbdfd9bc3c4138814",
"shasum": ""
},
"require": {
@@ -4851,7 +4993,7 @@
"symfony-ux"
],
"support": {
- "source": "https://github.com/symfony/stimulus-bundle/tree/v2.25.2"
+ "source": "https://github.com/symfony/stimulus-bundle/tree/v2.27.0"
},
"funding": [
{
@@ -4867,7 +5009,7 @@
"type": "tidelift"
}
],
- "time": "2025-05-19T11:54:27+00:00"
+ "time": "2025-06-22T19:07:55+00:00"
},
{
"name": "symfony/string",
@@ -5147,16 +5289,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": {
@@ -5211,7 +5353,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": [
{
@@ -5227,20 +5369,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": {
@@ -5290,7 +5432,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": [
{
@@ -5306,20 +5448,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": {
@@ -5364,7 +5506,7 @@
"uuid"
],
"support": {
- "source": "https://github.com/symfony/uid/tree/v7.3.0"
+ "source": "https://github.com/symfony/uid/tree/v7.3.1"
},
"funding": [
{
@@ -5380,20 +5522,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.25.0",
+ "version": "v2.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/ux-icons.git",
- "reference": "430b2753aa55a46baa001055bf7976b62bc96942"
+ "reference": "af6d09779e786717c6e3b5a8a004e8c18ce3ef00"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/ux-icons/zipball/430b2753aa55a46baa001055bf7976b62bc96942",
- "reference": "430b2753aa55a46baa001055bf7976b62bc96942",
+ "url": "https://api.github.com/repos/symfony/ux-icons/zipball/af6d09779e786717c6e3b5a8a004e8c18ce3ef00",
+ "reference": "af6d09779e786717c6e3b5a8a004e8c18ce3ef00",
"shasum": ""
},
"require": {
@@ -5453,7 +5595,7 @@
"twig"
],
"support": {
- "source": "https://github.com/symfony/ux-icons/tree/v2.25.0"
+ "source": "https://github.com/symfony/ux-icons/tree/v2.27.0"
},
"funding": [
{
@@ -5469,20 +5611,20 @@
"type": "tidelift"
}
],
- "time": "2025-04-07T13:54:07+00:00"
+ "time": "2025-06-17T06:15:15+00:00"
},
{
"name": "symfony/ux-live-component",
- "version": "v2.25.2",
+ "version": "v2.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/ux-live-component.git",
- "reference": "79e8cc179eb21119547c492ae21e4bf529ac1a15"
+ "reference": "05def4e467d378810f46f826dc67506180df8bd2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/ux-live-component/zipball/79e8cc179eb21119547c492ae21e4bf529ac1a15",
- "reference": "79e8cc179eb21119547c492ae21e4bf529ac1a15",
+ "url": "https://api.github.com/repos/symfony/ux-live-component/zipball/05def4e467d378810f46f826dc67506180df8bd2",
+ "reference": "05def4e467d378810f46f826dc67506180df8bd2",
"shasum": ""
},
"require": {
@@ -5495,7 +5637,9 @@
"twig/twig": "^3.10.3"
},
"conflict": {
- "symfony/config": "<5.4.0"
+ "symfony/config": "<5.4.0",
+ "symfony/property-info": "~7.0.0",
+ "symfony/type-info": "<7.2"
},
"require-dev": {
"doctrine/annotations": "^1.0",
@@ -5548,7 +5692,7 @@
"twig"
],
"support": {
- "source": "https://github.com/symfony/ux-live-component/tree/v2.25.2"
+ "source": "https://github.com/symfony/ux-live-component/tree/v2.27.0"
},
"funding": [
{
@@ -5564,20 +5708,20 @@
"type": "tidelift"
}
],
- "time": "2025-05-19T11:54:27+00:00"
+ "time": "2025-06-22T19:07:55+00:00"
},
{
"name": "symfony/ux-turbo",
- "version": "v2.25.2",
+ "version": "v2.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/ux-turbo.git",
- "reference": "11ebca138005c7e25678c3f98a07ddf718a0480c"
+ "reference": "b9ce9b30a9cf9bbd090c7ad290bdaf84a0e100b2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/ux-turbo/zipball/11ebca138005c7e25678c3f98a07ddf718a0480c",
- "reference": "11ebca138005c7e25678c3f98a07ddf718a0480c",
+ "url": "https://api.github.com/repos/symfony/ux-turbo/zipball/b9ce9b30a9cf9bbd090c7ad290bdaf84a0e100b2",
+ "reference": "b9ce9b30a9cf9bbd090c7ad290bdaf84a0e100b2",
"shasum": ""
},
"require": {
@@ -5591,7 +5735,8 @@
"dbrekelmans/bdi": "dev-main",
"doctrine/doctrine-bundle": "^2.4.3",
"doctrine/orm": "^2.8 | 3.0",
- "phpstan/phpstan": "^1.10",
+ "php-webdriver/webdriver": "^1.15",
+ "phpstan/phpstan": "^2.1.17",
"symfony/asset-mapper": "^6.4|^7.0",
"symfony/debug-bundle": "^5.4|^6.0|^7.0",
"symfony/expression-language": "^5.4|^6.0|^7.0",
@@ -5599,7 +5744,7 @@
"symfony/framework-bundle": "^6.4|^7.0",
"symfony/mercure-bundle": "^0.3.7",
"symfony/messenger": "^5.4|^6.0|^7.0",
- "symfony/panther": "^2.1",
+ "symfony/panther": "^2.2",
"symfony/phpunit-bridge": "^5.4|^6.0|^7.0",
"symfony/process": "^5.4|6.3.*|^7.0",
"symfony/property-access": "^5.4|^6.0|^7.0",
@@ -5646,7 +5791,7 @@
"turbo-stream"
],
"support": {
- "source": "https://github.com/symfony/ux-turbo/tree/v2.25.2"
+ "source": "https://github.com/symfony/ux-turbo/tree/v2.27.0"
},
"funding": [
{
@@ -5662,20 +5807,20 @@
"type": "tidelift"
}
],
- "time": "2025-05-19T11:54:27+00:00"
+ "time": "2025-06-06T20:27:21+00:00"
},
{
"name": "symfony/ux-twig-component",
- "version": "v2.25.2",
+ "version": "v2.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/ux-twig-component.git",
- "reference": "d20da25517fc09d147897d02819a046f0a0f6735"
+ "reference": "0879cd53812b79e8b6a20e104b6e785a2ac2c013"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/ux-twig-component/zipball/d20da25517fc09d147897d02819a046f0a0f6735",
- "reference": "d20da25517fc09d147897d02819a046f0a0f6735",
+ "url": "https://api.github.com/repos/symfony/ux-twig-component/zipball/0879cd53812b79e8b6a20e104b6e785a2ac2c013",
+ "reference": "0879cd53812b79e8b6a20e104b6e785a2ac2c013",
"shasum": ""
},
"require": {
@@ -5729,7 +5874,7 @@
"twig"
],
"support": {
- "source": "https://github.com/symfony/ux-twig-component/tree/v2.25.2"
+ "source": "https://github.com/symfony/ux-twig-component/tree/v2.27.0"
},
"funding": [
{
@@ -5745,22 +5890,26 @@
"type": "tidelift"
}
],
- "time": "2025-05-20T13:06:01+00:00"
+ "time": "2025-06-21T16:41:28+00:00"
},
{
"name": "symfony/ux-typed",
- "version": "v2.25.2",
+ "version": "v2.27.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/ux-typed.git",
- "reference": "d6dd9f8a1cd3db7c109202391c59e0817aee8131"
+ "reference": "929f1e41c7f4898f9f509c96b798ed1bc241e33f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/ux-typed/zipball/d6dd9f8a1cd3db7c109202391c59e0817aee8131",
- "reference": "d6dd9f8a1cd3db7c109202391c59e0817aee8131",
+ "url": "https://api.github.com/repos/symfony/ux-typed/zipball/929f1e41c7f4898f9f509c96b798ed1bc241e33f",
+ "reference": "929f1e41c7f4898f9f509c96b798ed1bc241e33f",
"shasum": ""
},
+ "require": {
+ "php": ">=8.1",
+ "symfony/deprecation-contracts": "^2.5|^3"
+ },
"conflict": {
"symfony/flex": "<1.13"
},
@@ -5796,7 +5945,7 @@
"symfony-ux"
],
"support": {
- "source": "https://github.com/symfony/ux-typed/tree/v2.25.2"
+ "source": "https://github.com/symfony/ux-typed/tree/v2.27.0"
},
"funding": [
{
@@ -5812,20 +5961,20 @@
"type": "tidelift"
}
],
- "time": "2025-05-19T11:54:27+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": {
@@ -5880,7 +6029,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": [
{
@@ -5896,7 +6045,7 @@
"type": "tidelift"
}
],
- "time": "2025-04-27T18:39:23+00:00"
+ "time": "2025-06-27T19:55:54+00:00"
},
{
"name": "symfony/var-exporter",
@@ -5977,16 +6126,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": {
@@ -6029,7 +6178,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": [
{
@@ -6045,7 +6194,7 @@
"type": "tidelift"
}
],
- "time": "2025-04-04T10:10:33+00:00"
+ "time": "2025-06-03T06:57:57+00:00"
},
{
"name": "twig/extra-bundle",
@@ -6334,16 +6483,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": {
@@ -6382,7 +6531,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": [
{
@@ -6390,7 +6539,7 @@
"type": "tidelift"
}
],
- "time": "2025-04-29T12:36:36+00:00"
+ "time": "2025-07-05T12:25:42+00:00"
},
{
"name": "nikic/php-parser",
@@ -6627,16 +6776,16 @@
},
{
"name": "php-cs-fixer/shim",
- "version": "v3.75.0",
+ "version": "v3.78.1",
"source": {
"type": "git",
"url": "https://github.com/PHP-CS-Fixer/shim.git",
- "reference": "eea219a577085bd13ff0cb644a422c20798316c7"
+ "reference": "f6f362075a3e23540ef435e1071c5bb8641628e1"
},
"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/f6f362075a3e23540ef435e1071c5bb8641628e1",
+ "reference": "f6f362075a3e23540ef435e1071c5bb8641628e1",
"shasum": ""
},
"require": {
@@ -6673,9 +6822,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.78.1"
},
- "time": "2025-03-31T18:45:02+00:00"
+ "time": "2025-07-06T14:13:56+00:00"
},
{
"name": "phpstan/phpstan",
@@ -6737,16 +6886,16 @@
},
{
"name": "phpunit/php-code-coverage",
- "version": "11.0.9",
+ "version": "11.0.10",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "14d63fbcca18457e49c6f8bebaa91a87e8e188d7"
+ "reference": "1a800a7446add2d79cc6b3c01c45381810367d76"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/14d63fbcca18457e49c6f8bebaa91a87e8e188d7",
- "reference": "14d63fbcca18457e49c6f8bebaa91a87e8e188d7",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/1a800a7446add2d79cc6b3c01c45381810367d76",
+ "reference": "1a800a7446add2d79cc6b3c01c45381810367d76",
"shasum": ""
},
"require": {
@@ -6803,15 +6952,27 @@
"support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
"security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
- "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.9"
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/show"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpunit/php-code-coverage",
+ "type": "tidelift"
}
],
- "time": "2025-02-25T13:26:39+00:00"
+ "time": "2025-06-18T08:56:18+00:00"
},
{
"name": "phpunit/php-file-iterator",
@@ -7060,16 +7221,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "11.5.21",
+ "version": "11.5.26",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "d565e2cdc21a7db9dc6c399c1fc2083b8010f289"
+ "reference": "4ad8fe263a0b55b54a8028c38a18e3c5bef312e0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d565e2cdc21a7db9dc6c399c1fc2083b8010f289",
- "reference": "d565e2cdc21a7db9dc6c399c1fc2083b8010f289",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4ad8fe263a0b55b54a8028c38a18e3c5bef312e0",
+ "reference": "4ad8fe263a0b55b54a8028c38a18e3c5bef312e0",
"shasum": ""
},
"require": {
@@ -7083,7 +7244,7 @@
"phar-io/manifest": "^2.0.4",
"phar-io/version": "^3.2.1",
"php": ">=8.2",
- "phpunit/php-code-coverage": "^11.0.9",
+ "phpunit/php-code-coverage": "^11.0.10",
"phpunit/php-file-iterator": "^5.1.0",
"phpunit/php-invoker": "^5.0.1",
"phpunit/php-text-template": "^4.0.1",
@@ -7141,7 +7302,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.21"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.26"
},
"funding": [
{
@@ -7165,7 +7326,7 @@
"type": "tidelift"
}
],
- "time": "2025-05-21T12:35:00+00:00"
+ "time": "2025-07-04T05:58:21+00:00"
},
{
"name": "sebastian/cli-parser",
@@ -8360,16 +8521,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": {
@@ -8425,7 +8586,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": [
{
@@ -8441,7 +8602,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/config/packages/http_discovery.yaml b/config/packages/http_discovery.yaml
new file mode 100644
index 0000000..2a789e7
--- /dev/null
+++ b/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/config/packages/llm_chain.yaml b/config/packages/llm_chain.yaml
index e8ea8f8..2ded47d 100644
--- a/config/packages/llm_chain.yaml
+++ b/config/packages/llm_chain.yaml
@@ -44,7 +44,7 @@ llm_chain:
chroma_db:
symfonycon:
collection: 'symfony_blog'
- embedder:
+ indexer:
default:
model:
name: 'Embeddings'
@@ -61,5 +61,5 @@ services:
# $apiKey: '%env(SERP_API_KEY)%'
PhpLlm\LlmChain\Chain\Toolbox\Tool\Wikipedia: ~
PhpLlm\LlmChain\Chain\Toolbox\Tool\SimilaritySearch:
- $model: '@llm_chain.embedder.default.model'
+ $model: '@llm_chain.indexer.default.model'
diff --git a/src/Audio/Chat.php b/src/Audio/Chat.php
index f8ea7fc..e54fa16 100644
--- a/src/Audio/Chat.php
+++ b/src/Audio/Chat.php
@@ -10,7 +10,6 @@
use PhpLlm\LlmChain\Platform\Message\Message;
use PhpLlm\LlmChain\Platform\Message\MessageBag;
use PhpLlm\LlmChain\Platform\PlatformInterface;
-use PhpLlm\LlmChain\Platform\Response\AsyncResponse;
use PhpLlm\LlmChain\Platform\Response\TextResponse;
use Symfony\Component\DependencyInjection\Attribute\Autowire;
use Symfony\Component\HttpFoundation\RequestStack;
@@ -34,11 +33,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/src/Blog/Command/QueryCommand.php b/src/Blog/Command/QueryCommand.php
index 2a5d15c..af0f183 100644
--- a/src/Blog/Command/QueryCommand.php
+++ b/src/Blog/Command/QueryCommand.php
@@ -7,8 +7,6 @@
use Codewithkyrian\ChromaDB\Client;
use PhpLlm\LlmChain\Platform\Bridge\OpenAI\Embeddings;
use PhpLlm\LlmChain\Platform\PlatformInterface;
-use PhpLlm\LlmChain\Platform\Response\AsyncResponse;
-use PhpLlm\LlmChain\Platform\Response\VectorResponse;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
@@ -44,11 +42,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/src/Blog/Embedder.php b/src/Blog/Embedder.php
index 8185aae..bf2068a 100644
--- a/src/Blog/Embedder.php
+++ b/src/Blog/Embedder.php
@@ -6,13 +6,13 @@
use PhpLlm\LlmChain\Store\Document\Metadata;
use PhpLlm\LlmChain\Store\Document\TextDocument;
-use PhpLlm\LlmChain\Store\Embedder as LlmChainEmbedder;
+use PhpLlm\LlmChain\Store\Indexer;
final readonly class Embedder
{
public function __construct(
private FeedLoader $loader,
- private LlmChainEmbedder $embedder,
+ private Indexer $indexer,
) {
}
@@ -23,6 +23,6 @@ public function embedBlog(): void
$documents[] = new TextDocument($post->id, $post->toString(), new Metadata($post->toArray()));
}
- $this->embedder->embed($documents);
+ $this->indexer->index($documents);
}
}
diff --git a/src/Video/TwigComponent.php b/src/Video/TwigComponent.php
index 3b5cd05..56fe161 100644
--- a/src/Video/TwigComponent.php
+++ b/src/Video/TwigComponent.php
@@ -9,8 +9,6 @@
use PhpLlm\LlmChain\Platform\Message\Message;
use PhpLlm\LlmChain\Platform\Message\MessageBag;
use PhpLlm\LlmChain\Platform\PlatformInterface;
-use PhpLlm\LlmChain\Platform\Response\AsyncResponse;
-use PhpLlm\LlmChain\Platform\Response\TextResponse;
use Symfony\UX\LiveComponent\Attribute\AsLiveComponent;
use Symfony\UX\LiveComponent\Attribute\LiveAction;
use Symfony\UX\LiveComponent\Attribute\LiveArg;
@@ -46,10 +44,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/src/YouTube/TranscriptFetcher.php b/src/YouTube/TranscriptFetcher.php
index d99a7f7..d6c4a57 100644
--- a/src/YouTube/TranscriptFetcher.php
+++ b/src/YouTube/TranscriptFetcher.php
@@ -4,7 +4,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
@@ -16,41 +17,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().' ';
- });
-
- // 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/symfony.lock b/symfony.lock
index a5d7b7f..f06096c 100644
--- a/symfony.lock
+++ b/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/tests/YouTube/TranscriptFetcherTest.php b/tests/YouTube/TranscriptFetcherTest.php
deleted file mode 100644
index 5a65b4a..0000000
--- a/tests/YouTube/TranscriptFetcherTest.php
+++ /dev/null
@@ -1,27 +0,0 @@
-fetchTranscript('6uXW-ulpj0s');
-
- self::assertStringContainsString('symphony is a PHP framework', $transcript);
- }
-}
diff --git a/tests/YouTube/fixtures/transcript.xml b/tests/YouTube/fixtures/transcript.xml
deleted file mode 100644
index f93f51b..0000000
--- a/tests/YouTube/fixtures/transcript.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-
-