diff --git a/autoload.php b/autoload.php
index cd2e749..0396fab 100644
--- a/autoload.php
+++ b/autoload.php
@@ -1,21 +1,27 @@
=7.2",
- "psr/http-factory": "^1.0",
- "psr/http-message": "^1.1 || ^2.0"
- },
- "provide": {
- "php-http/message-factory-implementation": "1.0",
- "psr/http-factory-implementation": "1.0",
- "psr/http-message-implementation": "1.0"
- },
- "require-dev": {
- "http-interop/http-factory-tests": "^0.9",
- "php-http/message-factory": "^1.0",
- "php-http/psr7-integration-tests": "^1.0",
- "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4",
- "symfony/error-handler": "^4.4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.8-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Nyholm\\Psr7\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Tobias Nyholm",
- "email": "tobias.nyholm@gmail.com"
- },
- {
- "name": "Martijn van der Ven",
- "email": "martijn@vanderven.se"
- }
- ],
- "description": "A fast PHP7 implementation of PSR-7",
- "homepage": "https://tnyholm.se",
- "keywords": [
- "psr-17",
- "psr-7"
- ],
- "support": {
- "issues": "https://github.com/Nyholm/psr7/issues",
- "source": "https://github.com/Nyholm/psr7/tree/1.8.2"
- },
- "funding": [
- {
- "url": "https://github.com/Zegnat",
- "type": "github"
- },
- {
- "url": "https://github.com/nyholm",
- "type": "github"
- }
- ],
- "time": "2024-09-09T07:06:30+00:00"
- },
- {
- "name": "openai-php/client",
- "version": "v0.17.1",
- "source": {
- "type": "git",
- "url": "https://github.com/openai-php/client.git",
- "reference": "f7d3150159a7b840fe144568bede1c072f768343"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/openai-php/client/zipball/f7d3150159a7b840fe144568bede1c072f768343",
- "reference": "f7d3150159a7b840fe144568bede1c072f768343",
- "shasum": ""
- },
- "require": {
- "php": "^8.2.0",
- "php-http/discovery": "^1.20.0",
- "php-http/multipart-stream-builder": "^1.4.2",
- "psr/http-client": "^1.0.3",
- "psr/http-client-implementation": "^1.0.1",
- "psr/http-factory-implementation": "*",
- "psr/http-message": "^1.1.0|^2.0.0"
- },
- "require-dev": {
- "guzzlehttp/guzzle": "^7.9.3",
- "guzzlehttp/psr7": "^2.7.1",
- "laravel/pint": "^1.24.0",
- "mockery/mockery": "^1.6.12",
- "nunomaduro/collision": "^8.8.0",
- "pestphp/pest": "^3.8.2|^4.0.0",
- "pestphp/pest-plugin-arch": "^3.1.1|^4.0.0",
- "pestphp/pest-plugin-type-coverage": "^3.5.1|^4.0.0",
- "phpstan/phpstan": "^1.12.25",
- "symfony/var-dumper": "^7.2.6"
- },
- "type": "library",
- "autoload": {
- "files": [
- "src/OpenAI.php"
- ],
- "psr-4": {
- "OpenAI\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nuno Maduro",
- "email": "enunomaduro@gmail.com"
- },
- {
- "name": "Sandro Gehri"
- }
- ],
- "description": "OpenAI PHP is a supercharged PHP API client that allows you to interact with the Open AI API",
- "keywords": [
- "GPT-3",
- "api",
- "client",
- "codex",
- "dall-e",
- "language",
- "natural",
- "openai",
- "php",
- "processing",
- "sdk"
- ],
- "support": {
- "issues": "https://github.com/openai-php/client/issues",
- "source": "https://github.com/openai-php/client/tree/v0.17.1"
- },
- "funding": [
- {
- "url": "https://www.paypal.com/paypalme/enunomaduro",
- "type": "custom"
- },
- {
- "url": "https://github.com/gehrisandro",
- "type": "github"
- },
- {
- "url": "https://github.com/nunomaduro",
- "type": "github"
- }
- ],
- "time": "2025-10-09T10:35:54+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-http/multipart-stream-builder",
- "version": "1.4.2",
- "source": {
- "type": "git",
- "url": "https://github.com/php-http/multipart-stream-builder.git",
- "reference": "10086e6de6f53489cca5ecc45b6f468604d3460e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-http/multipart-stream-builder/zipball/10086e6de6f53489cca5ecc45b6f468604d3460e",
- "reference": "10086e6de6f53489cca5ecc45b6f468604d3460e",
- "shasum": ""
- },
- "require": {
- "php": "^7.1 || ^8.0",
- "php-http/discovery": "^1.15",
- "psr/http-factory-implementation": "^1.0"
- },
- "require-dev": {
- "nyholm/psr7": "^1.0",
- "php-http/message": "^1.5",
- "php-http/message-factory": "^1.0.2",
- "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.3"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Http\\Message\\MultipartStream\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Tobias Nyholm",
- "email": "tobias.nyholm@gmail.com"
- }
- ],
- "description": "A builder class that help you create a multipart stream",
- "homepage": "http://php-http.org",
- "keywords": [
- "factory",
- "http",
- "message",
- "multipart stream",
- "stream"
- ],
- "support": {
- "issues": "https://github.com/php-http/multipart-stream-builder/issues",
- "source": "https://github.com/php-http/multipart-stream-builder/tree/1.4.2"
- },
- "time": "2024-09-04T13:22:54+00:00"
- },
- {
- "name": "psr/container",
- "version": "2.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/container.git",
- "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
- "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
- "shasum": ""
- },
- "require": {
- "php": ">=7.4.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Container\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
- }
- ],
- "description": "Common Container Interface (PHP FIG PSR-11)",
- "homepage": "https://github.com/php-fig/container",
- "keywords": [
- "PSR-11",
- "container",
- "container-interface",
- "container-interop",
- "psr"
- ],
- "support": {
- "issues": "https://github.com/php-fig/container/issues",
- "source": "https://github.com/php-fig/container/tree/2.0.2"
- },
- "time": "2021-11-05T16:47:00+00:00"
- },
- {
- "name": "psr/http-client",
- "version": "1.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/http-client.git",
- "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90",
- "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90",
- "shasum": ""
- },
- "require": {
- "php": "^7.0 || ^8.0",
- "psr/http-message": "^1.0 || ^2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Http\\Client\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
- }
- ],
- "description": "Common interface for HTTP clients",
- "homepage": "https://github.com/php-fig/http-client",
- "keywords": [
- "http",
- "http-client",
- "psr",
- "psr-18"
- ],
- "support": {
- "source": "https://github.com/php-fig/http-client"
- },
- "time": "2023-09-23T14:17:50+00:00"
- },
- {
- "name": "psr/http-factory",
- "version": "1.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/http-factory.git",
- "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
- "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1",
- "psr/http-message": "^1.0 || ^2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Http\\Message\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
- }
- ],
- "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories",
- "keywords": [
- "factory",
- "http",
- "message",
- "psr",
- "psr-17",
- "psr-7",
- "request",
- "response"
- ],
- "support": {
- "source": "https://github.com/php-fig/http-factory"
- },
- "time": "2024-04-15T12:06:14+00:00"
- },
- {
- "name": "psr/http-message",
- "version": "2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/http-message.git",
- "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71",
- "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71",
- "shasum": ""
- },
- "require": {
- "php": "^7.2 || ^8.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Http\\Message\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
- }
- ],
- "description": "Common interface for HTTP messages",
- "homepage": "https://github.com/php-fig/http-message",
- "keywords": [
- "http",
- "http-message",
- "psr",
- "psr-7",
- "request",
- "response"
- ],
- "support": {
- "source": "https://github.com/php-fig/http-message/tree/2.0"
- },
- "time": "2023-04-04T09:54:51+00:00"
- },
- {
- "name": "psr/log",
- "version": "3.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/log.git",
- "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
- "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
- "shasum": ""
- },
- "require": {
- "php": ">=8.0.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Log\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
- }
- ],
- "description": "Common interface for logging libraries",
- "homepage": "https://github.com/php-fig/log",
- "keywords": [
- "log",
- "psr",
- "psr-3"
- ],
- "support": {
- "source": "https://github.com/php-fig/log/tree/3.0.2"
- },
- "time": "2024-09-11T13:17:53+00:00"
- },
- {
- "name": "symfony/deprecation-contracts",
- "version": "v3.6.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62",
- "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1"
- },
- "type": "library",
- "extra": {
- "thanks": {
- "url": "https://github.com/symfony/contracts",
- "name": "symfony/contracts"
- },
- "branch-alias": {
- "dev-main": "3.6-dev"
- }
- },
- "autoload": {
- "files": [
- "function.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "A generic function and convention to trigger deprecation notices",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2024-09-25T14:21:43+00:00"
- },
- {
- "name": "symfony/http-client",
- "version": "v7.3.4",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/http-client.git",
- "reference": "4b62871a01c49457cf2a8e560af7ee8a94b87a62"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/http-client/zipball/4b62871a01c49457cf2a8e560af7ee8a94b87a62",
- "reference": "4b62871a01c49457cf2a8e560af7ee8a94b87a62",
- "shasum": ""
- },
- "require": {
- "php": ">=8.2",
- "psr/log": "^1|^2|^3",
- "symfony/deprecation-contracts": "^2.5|^3",
- "symfony/http-client-contracts": "~3.4.4|^3.5.2",
- "symfony/polyfill-php83": "^1.29",
- "symfony/service-contracts": "^2.5|^3"
- },
- "conflict": {
- "amphp/amp": "<2.5",
- "amphp/socket": "<1.1",
- "php-http/discovery": "<1.15",
- "symfony/http-foundation": "<6.4"
- },
- "provide": {
- "php-http/async-client-implementation": "*",
- "php-http/client-implementation": "*",
- "psr/http-client-implementation": "1.0",
- "symfony/http-client-implementation": "3.0"
- },
- "require-dev": {
- "amphp/http-client": "^4.2.1|^5.0",
- "amphp/http-tunnel": "^1.0|^2.0",
- "guzzlehttp/promises": "^1.4|^2.0",
- "nyholm/psr7": "^1.0",
- "php-http/httplug": "^1.0|^2.0",
- "psr/http-client": "^1.0",
- "symfony/amphp-http-client-meta": "^1.0|^2.0",
- "symfony/dependency-injection": "^6.4|^7.0",
- "symfony/http-kernel": "^6.4|^7.0",
- "symfony/messenger": "^6.4|^7.0",
- "symfony/process": "^6.4|^7.0",
- "symfony/rate-limiter": "^6.4|^7.0",
- "symfony/stopwatch": "^6.4|^7.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\HttpClient\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously",
- "homepage": "https://symfony.com",
- "keywords": [
- "http"
- ],
- "support": {
- "source": "https://github.com/symfony/http-client/tree/v7.3.4"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://github.com/nicolas-grekas",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2025-09-11T10:12:26+00:00"
- },
- {
- "name": "symfony/http-client-contracts",
- "version": "v3.6.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/http-client-contracts.git",
- "reference": "75d7043853a42837e68111812f4d964b01e5101c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/75d7043853a42837e68111812f4d964b01e5101c",
- "reference": "75d7043853a42837e68111812f4d964b01e5101c",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1"
- },
- "type": "library",
- "extra": {
- "thanks": {
- "url": "https://github.com/symfony/contracts",
- "name": "symfony/contracts"
- },
- "branch-alias": {
- "dev-main": "3.6-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Contracts\\HttpClient\\": ""
- },
- "exclude-from-classmap": [
- "/Test/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Generic abstractions related to HTTP clients",
- "homepage": "https://symfony.com",
- "keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
- ],
- "support": {
- "source": "https://github.com/symfony/http-client-contracts/tree/v3.6.0"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2025-04-29T11:18:49+00:00"
- },
- {
- "name": "symfony/polyfill-php83",
- "version": "v1.33.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php83.git",
- "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/17f6f9a6b1735c0f163024d959f700cfbc5155e5",
- "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2"
- },
- "type": "library",
- "extra": {
- "thanks": {
- "url": "https://github.com/symfony/polyfill",
- "name": "symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Php83\\": ""
- },
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-php83/tree/v1.33.0"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://github.com/nicolas-grekas",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2025-07-08T02:45:35+00:00"
- },
- {
- "name": "symfony/service-contracts",
- "version": "v3.6.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/service-contracts.git",
- "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4",
- "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1",
- "psr/container": "^1.1|^2.0",
- "symfony/deprecation-contracts": "^2.5|^3"
- },
- "conflict": {
- "ext-psr": "<1.1|>=2"
- },
- "type": "library",
- "extra": {
- "thanks": {
- "url": "https://github.com/symfony/contracts",
- "name": "symfony/contracts"
- },
- "branch-alias": {
- "dev-main": "3.6-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Contracts\\Service\\": ""
- },
- "exclude-from-classmap": [
- "/Test/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Generic abstractions related to writing services",
- "homepage": "https://symfony.com",
- "keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
- ],
- "support": {
- "source": "https://github.com/symfony/service-contracts/tree/v3.6.0"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2025-04-25T09:37:31+00:00"
- }
- ],
+ "content-hash": "687b3e6b748b881211f844a30bd83281",
+ "packages": [],
"packages-dev": [
{
"name": "brianium/paratest",
@@ -1649,32 +673,113 @@
"symfony/console": "^7.3.4"
},
"require-dev": {
- "illuminate/console": "^11.46.1",
- "laravel/pint": "^1.25.1",
- "mockery/mockery": "^1.6.12",
- "pestphp/pest": "^2.36.0 || ^3.8.4",
- "phpstan/phpstan": "^1.12.32",
- "phpstan/phpstan-strict-rules": "^1.6.2",
- "symfony/var-dumper": "^7.3.4",
- "thecodingmachine/phpstan-strict-rules": "^1.0.0"
+ "illuminate/console": "^11.46.1",
+ "laravel/pint": "^1.25.1",
+ "mockery/mockery": "^1.6.12",
+ "pestphp/pest": "^2.36.0 || ^3.8.4",
+ "phpstan/phpstan": "^1.12.32",
+ "phpstan/phpstan-strict-rules": "^1.6.2",
+ "symfony/var-dumper": "^7.3.4",
+ "thecodingmachine/phpstan-strict-rules": "^1.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Termwind\\Laravel\\TermwindServiceProvider"
+ ]
+ },
+ "branch-alias": {
+ "dev-2.x": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/Functions.php"
+ ],
+ "psr-4": {
+ "Termwind\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nuno Maduro",
+ "email": "enunomaduro@gmail.com"
+ }
+ ],
+ "description": "Its like Tailwind CSS, but for the console.",
+ "keywords": [
+ "cli",
+ "console",
+ "css",
+ "package",
+ "php",
+ "style"
+ ],
+ "support": {
+ "issues": "https://github.com/nunomaduro/termwind/issues",
+ "source": "https://github.com/nunomaduro/termwind/tree/v2.3.2"
+ },
+ "funding": [
+ {
+ "url": "https://www.paypal.com/paypalme/enunomaduro",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/nunomaduro",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/xiCO2k",
+ "type": "github"
+ }
+ ],
+ "time": "2025-10-18T11:10:27+00:00"
+ },
+ {
+ "name": "nyholm/psr7",
+ "version": "1.8.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Nyholm/psr7.git",
+ "reference": "a71f2b11690f4b24d099d6b16690a90ae14fc6f3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Nyholm/psr7/zipball/a71f2b11690f4b24d099d6b16690a90ae14fc6f3",
+ "reference": "a71f2b11690f4b24d099d6b16690a90ae14fc6f3",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2",
+ "psr/http-factory": "^1.0",
+ "psr/http-message": "^1.1 || ^2.0"
+ },
+ "provide": {
+ "php-http/message-factory-implementation": "1.0",
+ "psr/http-factory-implementation": "1.0",
+ "psr/http-message-implementation": "1.0"
+ },
+ "require-dev": {
+ "http-interop/http-factory-tests": "^0.9",
+ "php-http/message-factory": "^1.0",
+ "php-http/psr7-integration-tests": "^1.0",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4",
+ "symfony/error-handler": "^4.4"
},
"type": "library",
"extra": {
- "laravel": {
- "providers": [
- "Termwind\\Laravel\\TermwindServiceProvider"
- ]
- },
"branch-alias": {
- "dev-2.x": "2.x-dev"
+ "dev-master": "1.8-dev"
}
},
"autoload": {
- "files": [
- "src/Functions.php"
- ],
"psr-4": {
- "Termwind\\": "src/"
+ "Nyholm\\Psr7\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1683,38 +788,35 @@
],
"authors": [
{
- "name": "Nuno Maduro",
- "email": "enunomaduro@gmail.com"
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com"
+ },
+ {
+ "name": "Martijn van der Ven",
+ "email": "martijn@vanderven.se"
}
],
- "description": "Its like Tailwind CSS, but for the console.",
+ "description": "A fast PHP7 implementation of PSR-7",
+ "homepage": "https://tnyholm.se",
"keywords": [
- "cli",
- "console",
- "css",
- "package",
- "php",
- "style"
+ "psr-17",
+ "psr-7"
],
"support": {
- "issues": "https://github.com/nunomaduro/termwind/issues",
- "source": "https://github.com/nunomaduro/termwind/tree/v2.3.2"
+ "issues": "https://github.com/Nyholm/psr7/issues",
+ "source": "https://github.com/Nyholm/psr7/tree/1.8.2"
},
"funding": [
{
- "url": "https://www.paypal.com/paypalme/enunomaduro",
- "type": "custom"
- },
- {
- "url": "https://github.com/nunomaduro",
+ "url": "https://github.com/Zegnat",
"type": "github"
},
{
- "url": "https://github.com/xiCO2k",
+ "url": "https://github.com/nyholm",
"type": "github"
}
],
- "time": "2025-10-18T11:10:27+00:00"
+ "time": "2024-09-09T07:06:30+00:00"
},
{
"name": "pestphp/pest",
@@ -3265,11 +2367,222 @@
"type": "thanks_dev"
},
{
- "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
- "type": "tidelift"
+ "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-10-03T04:28:03+00:00"
+ },
+ {
+ "name": "psr/container",
+ "version": "2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/container/issues",
+ "source": "https://github.com/php-fig/container/tree/2.0.2"
+ },
+ "time": "2021-11-05T16:47:00+00:00"
+ },
+ {
+ "name": "psr/http-factory",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-factory.git",
+ "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
+ "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1",
+ "psr/http-message": "^1.0 || ^2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories",
+ "keywords": [
+ "factory",
+ "http",
+ "message",
+ "psr",
+ "psr-17",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-factory"
+ },
+ "time": "2024-04-15T12:06:14+00:00"
+ },
+ {
+ "name": "psr/http-message",
+ "version": "2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-message.git",
+ "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71",
+ "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP messages",
+ "homepage": "https://github.com/php-fig/http-message",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-message/tree/2.0"
+ },
+ "time": "2023-04-04T09:54:51+00:00"
+ },
+ {
+ "name": "psr/log",
+ "version": "3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
+ "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
}
],
- "time": "2025-10-03T04:28:03+00:00"
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/log/tree/3.0.2"
+ },
+ "time": "2024-09-11T13:17:53+00:00"
},
{
"name": "psr/simple-cache",
@@ -4384,25 +3697,263 @@
"symfony/process": "<6.4"
},
"provide": {
- "psr/log-implementation": "1.0|2.0|3.0"
+ "psr/log-implementation": "1.0|2.0|3.0"
+ },
+ "require-dev": {
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/event-dispatcher": "^6.4|^7.0",
+ "symfony/http-foundation": "^6.4|^7.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/lock": "^6.4|^7.0",
+ "symfony/messenger": "^6.4|^7.0",
+ "symfony/process": "^6.4|^7.0",
+ "symfony/stopwatch": "^6.4|^7.0",
+ "symfony/var-dumper": "^6.4|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Eases the creation of beautiful and testable command line interfaces",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "cli",
+ "command-line",
+ "console",
+ "terminal"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/console/tree/v7.3.4"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-09-22T15:31:00+00:00"
+ },
+ {
+ "name": "symfony/deprecation-contracts",
+ "version": "v3.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62",
+ "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/contracts",
+ "name": "symfony/contracts"
+ },
+ "branch-alias": {
+ "dev-main": "3.6-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "function.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A generic function and convention to trigger deprecation notices",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-09-25T14:21:43+00:00"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "v7.3.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/2a6614966ba1074fa93dae0bc804227422df4dfe",
+ "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2"
+ },
+ "require-dev": {
+ "symfony/filesystem": "^6.4|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Finder\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Finds files and directories via an intuitive fluent interface",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/finder/tree/v7.3.2"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-07-15T13:41:35+00:00"
+ },
+ {
+ "name": "symfony/http-client",
+ "version": "v7.3.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-client.git",
+ "reference": "4b62871a01c49457cf2a8e560af7ee8a94b87a62"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-client/zipball/4b62871a01c49457cf2a8e560af7ee8a94b87a62",
+ "reference": "4b62871a01c49457cf2a8e560af7ee8a94b87a62",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "psr/log": "^1|^2|^3",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/http-client-contracts": "~3.4.4|^3.5.2",
+ "symfony/polyfill-php83": "^1.29",
+ "symfony/service-contracts": "^2.5|^3"
+ },
+ "conflict": {
+ "amphp/amp": "<2.5",
+ "amphp/socket": "<1.1",
+ "php-http/discovery": "<1.15",
+ "symfony/http-foundation": "<6.4"
+ },
+ "provide": {
+ "php-http/async-client-implementation": "*",
+ "php-http/client-implementation": "*",
+ "psr/http-client-implementation": "1.0",
+ "symfony/http-client-implementation": "3.0"
},
"require-dev": {
- "psr/log": "^1|^2|^3",
- "symfony/config": "^6.4|^7.0",
+ "amphp/http-client": "^4.2.1|^5.0",
+ "amphp/http-tunnel": "^1.0|^2.0",
+ "guzzlehttp/promises": "^1.4|^2.0",
+ "nyholm/psr7": "^1.0",
+ "php-http/httplug": "^1.0|^2.0",
+ "psr/http-client": "^1.0",
+ "symfony/amphp-http-client-meta": "^1.0|^2.0",
"symfony/dependency-injection": "^6.4|^7.0",
- "symfony/event-dispatcher": "^6.4|^7.0",
- "symfony/http-foundation": "^6.4|^7.0",
"symfony/http-kernel": "^6.4|^7.0",
- "symfony/lock": "^6.4|^7.0",
"symfony/messenger": "^6.4|^7.0",
"symfony/process": "^6.4|^7.0",
- "symfony/stopwatch": "^6.4|^7.0",
- "symfony/var-dumper": "^6.4|^7.0"
+ "symfony/rate-limiter": "^6.4|^7.0",
+ "symfony/stopwatch": "^6.4|^7.0"
},
"type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Component\\Console\\": ""
+ "Symfony\\Component\\HttpClient\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -4414,24 +3965,21 @@
],
"authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Eases the creation of beautiful and testable command line interfaces",
+ "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously",
"homepage": "https://symfony.com",
"keywords": [
- "cli",
- "command-line",
- "console",
- "terminal"
+ "http"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v7.3.4"
+ "source": "https://github.com/symfony/http-client/tree/v7.3.4"
},
"funding": [
{
@@ -4451,35 +3999,41 @@
"type": "tidelift"
}
],
- "time": "2025-09-22T15:31:00+00:00"
+ "time": "2025-09-11T10:12:26+00:00"
},
{
- "name": "symfony/finder",
- "version": "v7.3.2",
+ "name": "symfony/http-client-contracts",
+ "version": "v3.6.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/finder.git",
- "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe"
+ "url": "https://github.com/symfony/http-client-contracts.git",
+ "reference": "75d7043853a42837e68111812f4d964b01e5101c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/2a6614966ba1074fa93dae0bc804227422df4dfe",
- "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe",
+ "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/75d7043853a42837e68111812f4d964b01e5101c",
+ "reference": "75d7043853a42837e68111812f4d964b01e5101c",
"shasum": ""
},
"require": {
- "php": ">=8.2"
- },
- "require-dev": {
- "symfony/filesystem": "^6.4|^7.0"
+ "php": ">=8.1"
},
"type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/contracts",
+ "name": "symfony/contracts"
+ },
+ "branch-alias": {
+ "dev-main": "3.6-dev"
+ }
+ },
"autoload": {
"psr-4": {
- "Symfony\\Component\\Finder\\": ""
+ "Symfony\\Contracts\\HttpClient\\": ""
},
"exclude-from-classmap": [
- "/Tests/"
+ "/Test/"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -4488,18 +4042,26 @@
],
"authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Finds files and directories via an intuitive fluent interface",
+ "description": "Generic abstractions related to HTTP clients",
"homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
"support": {
- "source": "https://github.com/symfony/finder/tree/v7.3.2"
+ "source": "https://github.com/symfony/http-client-contracts/tree/v3.6.0"
},
"funding": [
{
@@ -4510,16 +4072,12 @@
"url": "https://github.com/fabpot",
"type": "github"
},
- {
- "url": "https://github.com/nicolas-grekas",
- "type": "github"
- },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2025-07-15T13:41:35+00:00"
+ "time": "2025-04-29T11:18:49+00:00"
},
{
"name": "symfony/polyfill-ctype",
@@ -4856,6 +4414,86 @@
],
"time": "2024-12-23T08:48:59+00:00"
},
+ {
+ "name": "symfony/polyfill-php83",
+ "version": "v1.33.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php83.git",
+ "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/17f6f9a6b1735c0f163024d959f700cfbc5155e5",
+ "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php83\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php83/tree/v1.33.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-07-08T02:45:35+00:00"
+ },
{
"name": "symfony/process",
"version": "v7.3.4",
@@ -4921,6 +4559,89 @@
],
"time": "2025-09-11T10:12:26+00:00"
},
+ {
+ "name": "symfony/service-contracts",
+ "version": "v3.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/service-contracts.git",
+ "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4",
+ "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
+ "psr/container": "^1.1|^2.0",
+ "symfony/deprecation-contracts": "^2.5|^3"
+ },
+ "conflict": {
+ "ext-psr": "<1.1|>=2"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/contracts",
+ "name": "symfony/contracts"
+ },
+ "branch-alias": {
+ "dev-main": "3.6-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Service\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Test/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to writing services",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/service-contracts/tree/v3.6.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-04-25T09:37:31+00:00"
+ },
{
"name": "symfony/string",
"version": "v7.3.4",
@@ -5250,9 +4971,9 @@
"stability-flags": {},
"prefer-stable": true,
"prefer-lowest": false,
- "platform": {
+ "platform": {},
+ "platform-dev": {
"php": "^8.4"
},
- "platform-dev": {},
"plugin-api-version": "2.6.0"
}
diff --git a/inc/providers.php b/inc/providers.php
index 811d97d..a93a5c0 100644
--- a/inc/providers.php
+++ b/inc/providers.php
@@ -1,14 +1,14 @@
filters;
}
- public function prompt( mixed $input ): Agent_Runner {
- return new Agent_Runner(
+ public function prompt( mixed $input ): Wp_Agents_System_Agent_Runner {
+ return new Wp_Agents_System_Agent_Runner(
$input,
$this
);
@@ -60,7 +55,7 @@ public function tools(): array {
return $this->tools;
}
- public function get_memory( string $session_id ): ?Abstract_Memory {
+ public function get_memory( string $session_id ): ?Wp_Agents_Memory_Abstract {
if ( $this->memory ) {
$memory_class = $this->memory;
diff --git a/lib/memory/class-abstract-memory.php b/lib/memory/class-abstract-memory.php
deleted file mode 100644
index 28c8aa0..0000000
--- a/lib/memory/class-abstract-memory.php
+++ /dev/null
@@ -1,24 +0,0 @@
-agent = $agent;
- $this->session_id = $session_id;
- }
-
- abstract public function remember( Message $message ): void;
-
- abstract public function load( ?int $limit = null ): Message_Stack;
-
- abstract public function forget_all(): void;
-}
diff --git a/lib/memory/class-abstract.php b/lib/memory/class-abstract.php
new file mode 100644
index 0000000..5305fbf
--- /dev/null
+++ b/lib/memory/class-abstract.php
@@ -0,0 +1,19 @@
+agent = $agent;
+ $this->session_id = $session_id;
+ }
+
+ abstract public function remember( Wp_Agents_System_Message $message ): void;
+
+ abstract public function load( ?int $limit = null ): Wp_Agents_System_Message_Stack;
+
+ abstract public function forget_all(): void;
+}
diff --git a/lib/memory/class-database-memory.php b/lib/memory/class-database.php
similarity index 78%
rename from lib/memory/class-database-memory.php
rename to lib/memory/class-database.php
index 5a03fec..773bc75 100644
--- a/lib/memory/class-database-memory.php
+++ b/lib/memory/class-database.php
@@ -1,12 +1,6 @@
table = $wpdb->prefix . 'agents_memory_messages';
}
- public function remember( Message $message ): void {
+ public function remember( Wp_Agents_System_Message $message ): void {
$this->db->insert(
$this->table,
array(
@@ -34,7 +28,7 @@ public function remember( Message $message ): void {
);
}
- public function load( ?int $limit = null ): Message_Stack {
+ public function load( ?int $limit = null ): Wp_Agents_System_Message_Stack {
$sql = "SELECT author, message, metadata
FROM {$this->table}
WHERE agent = %s AND session_id = %s
@@ -54,7 +48,7 @@ public function load( ?int $limit = null ): Message_Stack {
$messages = array_map(
function ( $row ) {
- return new Memorized_Message(
+ return new Wp_Agents_System_Memorized_Message(
$row['author'],
$row['message'],
json_decode( $row['metadata'] ?? '[]', true )
@@ -63,7 +57,7 @@ function ( $row ) {
$results
);
- return new Message_Stack( $messages );
+ return new Wp_Agents_System_Message_Stack( $messages );
}
public function forget_all(): void {
diff --git a/lib/providers/class-interface.php b/lib/providers/class-interface.php
new file mode 100644
index 0000000..c7583be
--- /dev/null
+++ b/lib/providers/class-interface.php
@@ -0,0 +1,8 @@
+api_key = $api_key;
- }
-
- public function chat( Message_Stack $message_stack, Abstract_Llm_Agent $agent ): void {
- $client = \OpenAI::client( $this->api_key );
- $tools = $agent->tools();
-
- $message_stack->unshift( new Message( 'system', $agent->instructions() ) );
-
- $flatten = function ( Message $message ) {
- return array(
- 'role' => $message->get_author(),
- 'content' => $message->get_message(),
- ) + $message->get_metadata();
- };
-
- $parameters = array(
- 'model' => $agent->get_model(),
- 'messages' => $message_stack->map( $flatten ),
- 'response_format' => array( 'type' => $agent->json() ? 'json_object' : 'text' ),
- );
-
- if ( count( $tools ) ) {
- $tool_registry = new Tool_Registry( $tools );
- $parameters['tools'] = $tool_registry->definitions();
- }
-
- $response = $client->chat()->create( $parameters );
- $openai_message = $response->choices[0]->message;
-
- // phpcs:ignore WordPress.NamingConventions.ValidVariableName
- if ( ! empty( $openai_message->toolCalls ) ) {
- $tool_calls = array();
- $tool_messages = array();
-
- // phpcs:ignore WordPress.NamingConventions.ValidVariableName
- foreach ( $openai_message->toolCalls as $call ) {
- $function = $call->function;
- $args = json_decode( $function->arguments ?? '{}', true );
-
- if ( ! is_array( $args ) ) {
- $args = array();
- }
- $result = $tool_registry->execute( $function->name, $args );
-
- $tool_calls[] = array(
- 'id' => $call->id,
- 'type' => $call->type ?? 'function',
- 'function' => array(
- 'name' => $call->function->name,
- 'arguments' => $call->function->arguments,
- ),
- );
-
- $tool_messages[] = new Message(
- 'tool',
- wp_json_encode( $result ),
- array(
- 'tool_call_id' => $call->id,
- )
- );
- }
-
- $message_stack->add(
- new Message(
- $openai_message->role,
- $openai_message->content,
- array(
- 'tool_calls' => $tool_calls,
- )
- )
- );
- $message_stack->add( $tool_messages );
-
- $follow = $client->chat()->create(
- array(
- 'model' => $agent->get_model(),
- 'messages' => $message_stack->map( $flatten ),
- 'response_format' => array( 'type' => $agent->json() ? 'json_object' : 'text' ),
- )
- );
-
- $openai_message = $follow->choices[0]->message;
- $message_stack->add(
- new Message(
- $openai_message->role,
- $openai_message->content
- )
- );
- } else {
- $message_stack->add(
- new Message(
- $openai_message->role,
- $openai_message->content,
- )
- );
- }
- }
-}
diff --git a/lib/providers/class-open-ai.php b/lib/providers/class-open-ai.php
new file mode 100644
index 0000000..afdb1c7
--- /dev/null
+++ b/lib/providers/class-open-ai.php
@@ -0,0 +1,148 @@
+api_key = $api_key;
+ }
+
+ public function chat( Wp_Agents_System_Message_Stack $message_stack, Wp_Agents_Llm_Abstract $agent ): void {
+ $tools = $agent->tools();
+
+ $message_stack->unshift( new Wp_Agents_System_Message( 'developer', $agent->instructions() ) );
+
+ $body = array(
+ 'model' => $agent->get_model(),
+ 'messages' => $message_stack->map( array( $this, 'flatten' ) ),
+ 'response_format' => array( 'type' => $agent->json() ? 'json_object' : 'text' ),
+ );
+
+ $tool_registry = new Wp_Agents_Tools_Registry();
+ if ( count( $tools ) ) {
+ $tool_registry->add( $tools );
+ $body['tools'] = $tool_registry->definitions();
+ }
+
+ $response = $this->post( 'https://api.openai.com/v1/chat/completions', $body );
+ if ( is_wp_error( $response ) ) {
+ $message_stack->add( new Wp_Agents_System_Message( 'assistant', 'Error: request failed' ) );
+
+ return;
+ }
+
+ $openai_message = $response['choices'][0]['message'];
+
+ // phpcs:ignore WordPress.NamingConventions.ValidVariableName
+ if ( ! empty( $openai_message['tool_calls'] ) ) {
+ $tool_calls = array();
+ $tool_messages = array();
+
+ // phpcs:ignore WordPress.NamingConventions.ValidVariableName
+ foreach ( $openai_message['tool_calls'] as $call ) {
+ $args = json_decode( $call['function']['arguments'] ?? '{}', true );
+ if ( ! is_array( $args ) ) {
+ $args = array();
+ }
+
+ if ( ! is_array( $args ) ) {
+ $args = array();
+ }
+ $result = $tool_registry->execute( $call['function']['name'], $args );
+
+ $tool_calls[] = array(
+ 'id' => $call['id'],
+ 'type' => $call['type'] ?? 'function',
+ 'function' => array(
+ 'name' => $call['function']['name'],
+ 'arguments' => $call['function']['arguments'],
+ ),
+ );
+
+ $tool_messages[] = new Wp_Agents_System_Message(
+ 'tool',
+ wp_json_encode( $result ),
+ array(
+ 'tool_call_id' => $call['id'],
+ )
+ );
+ }
+
+ $message_stack->add(
+ new Wp_Agents_System_Message(
+ $openai_message['role'],
+ $openai_message['content'],
+ array(
+ 'tool_calls' => $tool_calls,
+ )
+ )
+ );
+ $message_stack->add( $tool_messages );
+
+ $follow = $this->post(
+ 'https://api.openai.com/v1/chat/completions',
+ array(
+ 'model' => $agent->get_model(),
+ 'messages' => $message_stack->map( array( $this, 'flatten' ) ),
+ 'response_format' => array( 'type' => $agent->json() ? 'json_object' : 'text' ),
+ )
+ );
+ if ( is_wp_error( $response ) ) {
+ $message_stack->add( new Wp_Agents_System_Message( 'assistant', 'Error: request failed' ) );
+
+ return;
+ }
+
+ $openai_message = $follow['choices'][0]['message'];
+ $message_stack->add(
+ new Wp_Agents_System_Message(
+ $openai_message['role'],
+ $openai_message['content']
+ )
+ );
+ } else {
+ $message_stack->add(
+ new Wp_Agents_System_Message(
+ $openai_message['role'],
+ $openai_message['content'],
+ )
+ );
+ }
+ }
+
+ public function memorizable( Wp_Agents_System_Message $message ): bool {
+ return ! in_array( $message->get_author(), array( 'system', 'developer' ), true );
+ }
+
+ public function flatten( Wp_Agents_System_Message $message ): array {
+ return array(
+ 'role' => $message->get_author(),
+ 'content' => $message->get_message(),
+ ) + $message->get_metadata();
+ }
+
+ protected function post( string $url, array $body = array() ): array|WP_Error {
+ $args = array(
+ 'headers' => array(
+ 'Authorization' => 'Bearer ' . $this->api_key,
+ 'Content-Type' => 'application/json',
+ ),
+ 'timeout' => 30,
+ );
+
+ if ( ! empty( $body ) ) {
+ $args['body'] = wp_json_encode( $body );
+ }
+
+ $response = wp_remote_post( $url, $args );
+ if ( is_wp_error( $response ) ) {
+ return new WP_Error(
+ 'wp_agents_openai_invalid_response',
+ 'Invalid response returned by the OpenAI API.'
+ );
+ }
+
+ return json_decode( wp_remote_retrieve_body( $response ), true );
+ }
+}
diff --git a/lib/providers/class-provider-interface.php b/lib/providers/class-provider-interface.php
deleted file mode 100644
index 11033d5..0000000
--- a/lib/providers/class-provider-interface.php
+++ /dev/null
@@ -1,11 +0,0 @@
-file = "{$dir}/wp-agents.log";
- }
-
- public function log( $level, $message, array $context = array() ): void {
- global $wp_filesystem;
- $date = gmdate( 'Y-m-d H:i:s' );
- $msg = $this->interpolate( $message, $context );
-
- $line = "[{$date}] {$level}: {$msg}\n";
- $wp_filesystem->put_contents( $this->file, $line, FILE_APPEND | LOCK_EX );
- }
-
- protected function interpolate( string $message, array $context ): string {
- $replace = array();
- foreach ( $context as $key => $val ) {
- if ( is_array( $val ) || is_object( $val ) ) {
- $val = wp_json_encode( $val, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT );
- }
- $replace[ '{' . $key . '}' ] = $val;
- }
-
- return strtr( $message, $replace );
- }
-}
diff --git a/lib/services/class-provider-manager.php b/lib/services/class-provider-manager.php
index c8b6ff3..9199193 100644
--- a/lib/services/class-provider-manager.php
+++ b/lib/services/class-provider-manager.php
@@ -1,21 +1,22 @@
input = $input;
$this->agent = $agent;
- $this->provider = Provider_Manager::get( $agent->get_provider() );
+ $this->provider = Wp_Agents_Services_Provider_Manager::get( $agent->get_provider() );
}
public function with_session( ?string $session_id ): static {
@@ -28,15 +22,15 @@ public function with_session( ?string $session_id ): static {
return $this;
}
- public function chat(): Message {
+ public function chat(): Wp_Agents_System_Message {
$memory = $this->session_id ? $this->agent->get_memory( $this->session_id ) : null;
- $message_stack = $memory ? $memory->load() : new Message_Stack();
- $message_stack->add( new Message( 'user', $this->input ) );
+ $message_stack = $memory ? $memory->load() : new Wp_Agents_System_Message_Stack();
+ $message_stack->add( new Wp_Agents_System_Message( 'user', $this->input ) );
$this->provider->chat( $message_stack, $this->agent );
foreach ( $message_stack->all() as $message ) {
- if ( ! $message->memorized() && 'system' !== $message->get_author() ) {
+ if ( ! $message->memorized() && $this->provider->memorizable( $message ) ) {
$memory?->remember( $message );
}
}
diff --git a/lib/system/class-memorized-message.php b/lib/system/class-memorized-message.php
index e3f60a2..31fa95d 100644
--- a/lib/system/class-memorized-message.php
+++ b/lib/system/class-memorized-message.php
@@ -1,8 +1,6 @@
messages );
}
- public function first(): ?Message {
+ public function first(): ?Wp_Agents_System_Message {
return $this->messages[0] ?? null;
}
- public function last(): ?Message {
+ public function last(): ?Wp_Agents_System_Message {
$count = count( $this->messages );
return $count ? $this->messages[ $count - 1 ] : null;
}
- public function unshift( Message $message ) {
+ public function unshift( Wp_Agents_System_Message $message ) {
array_unshift( $this->messages, $message );
}
- public function add( array|Message $messages ) {
- $messages = $messages instanceof Message ? array( $messages ) : $messages;
+ public function add( array|Wp_Agents_System_Message $messages ) {
+ $messages = $messages instanceof Wp_Agents_System_Message ? array( $messages ) : $messages;
foreach ( $messages as $message ) {
- if ( $message instanceof Message ) {
+ if ( $message instanceof Wp_Agents_System_Message ) {
$this->messages[] = $message;
}
}
diff --git a/lib/system/class-message.php b/lib/system/class-message.php
index 82afcfb..95db680 100644
--- a/lib/system/class-message.php
+++ b/lib/system/class-message.php
@@ -1,8 +1,6 @@
message;
+ return $this->message ?? '';
}
public function memorized(): bool {
diff --git a/lib/system/class-rest.php b/lib/system/class-rest.php
index 7b9b395..9866264 100644
--- a/lib/system/class-rest.php
+++ b/lib/system/class-rest.php
@@ -1,10 +1,6 @@
get_param( 'agent' ) );
+ $agent = Wp_Agents_Services_Agent_Manager::get( $request->get_param( 'agent' ) );
$message = $request->get_param( 'message' );
$response = $agent
diff --git a/lib/system/class-schema.php b/lib/system/class-schema.php
index 661c68f..50e3914 100644
--- a/lib/system/class-schema.php
+++ b/lib/system/class-schema.php
@@ -1,8 +1,6 @@
add( $tool_classes );
+ }
+
+ public function add( array|string $tool_classes ): void {
+ $tool_classes = is_string( $tool_classes ) ? array( $tool_classes ) : $tool_classes;
+
foreach ( $tool_classes as $tool_class ) {
if ( ! class_exists( $tool_class ) ) {
continue;
@@ -36,7 +38,10 @@ public function definitions(): array {
public function execute( string $name, array $arguments = array() ): mixed {
if ( ! isset( $this->tools[ $name ] ) ) {
- throw new Tool_Not_Found_Exception();
+ return new WP_Error(
+ 'wp_agents_tool_not_found',
+ "The tool with the name {$name} was not found."
+ );
}
return $this->tools[ $name ]->execute( $arguments );
diff --git a/logs/.gitkeep b/logs/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/phpcs.xml b/phpcs.xml
new file mode 100644
index 0000000..da5e2a3
--- /dev/null
+++ b/phpcs.xml
@@ -0,0 +1,16 @@
+
+
+ WordPress coding standards for wp-agents
+ lib
+ wp-agents.php
+
+
+
+
+
+
+
+
+
+ vendor/*
+
diff --git a/phpcs.xml.dist b/phpcs.xml.dist
deleted file mode 100644
index 9068663..0000000
--- a/phpcs.xml.dist
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
- WordPress coding standards for wp-agents
- lib
- wp-agents.php
-
-
-
-
-
-
-
- vendor/*
-
diff --git a/wp-agents.php b/wp-agents.php
index 1255361..0c34038 100644
--- a/wp-agents.php
+++ b/wp-agents.php
@@ -13,67 +13,50 @@
* Domain Path: /languages
*/
-if ( file_exists( __DIR__ . '/vendor/autoload.php' ) ) {
- require_once __DIR__ . '/vendor/autoload.php';
+require_once 'autoload.php';
- if ( ! function_exists( 'wp_agents_install' ) ) {
-
- function wp_agents_install() {
- $schema = new \Wp_Agents\System\Schema();
- $schema->install();
- }
-
- register_activation_hook( __FILE__, 'wp_agents_install' );
+if ( ! function_exists( 'wp_agents_install' ) ) {
+ function wp_agents_install(): void {
+ $schema = new Wp_Agents_System_Schema();
+ $schema->install();
}
- add_action(
- 'plugins_loaded',
- function () {
- if ( ! function_exists( 'wp_agents_logger' ) ) {
-
- function wp_agents_logger() {
- static $logger;
-
- if ( ! isset( $logger ) ) {
- $logger = new \Wp_Agents\Services\Logger( __DIR__ );
- }
+ register_activation_hook( __FILE__, 'wp_agents_install' );
- return $logger;
- }
-
- }
-
- if ( ! function_exists( 'wp_agents_register' ) ) {
-
- function wp_agents_register( string $name, string $agent_class ) {
- \Wp_Agents\Services\Agent_Manager::register( $name, $agent_class );
- }
+}
- }
+if ( ! function_exists( 'wp_agents_register' ) ) {
- if ( ! function_exists( 'wp_agents_register_provider' ) ) {
+ function wp_agents_register( string $name, string $agent_class ): void {
+ Wp_Agents_Services_Agent_Manager::register( $name, $agent_class );
+ }
- function wp_agents_register_provider( string $name, callable $callback ) {
- \Wp_Agents\Services\Provider_Manager::register( $name, $callback );
- }
+}
- require_once __DIR__ . '/inc/providers.php';
+if ( ! function_exists( 'wp_agents_register_provider' ) ) {
- }
+ function wp_agents_register_provider( string $name, callable $callback ): void {
+ Wp_Agents_Services_Provider_Manager::register( $name, $callback );
+ }
- if ( ! function_exists( 'wp_agents_get' ) ) {
+ require_once __DIR__ . '/inc/providers.php';
- function wp_agents_get( string $name ) {
- return \Wp_Agents\Services\Agent_Manager::get( $name );
- }
+}
- }
+if ( ! function_exists( 'wp_agents_get' ) ) {
- add_action( 'init', array( \Wp_Agents\Services\Provider_Manager::class, 'boot' ) );
- add_action( 'init', array( \Wp_Agents\Services\Agent_Manager::class, 'boot' ) );
- add_action( 'rest_api_init', array( \Wp_Agents\System\Rest::class, 'register' ) );
- }
- );
+ function wp_agents_get( string $name ): Wp_Agents_Llm_Abstract|WP_Error {
+ return Wp_Agents_Services_Agent_Manager::get( $name );
+ }
}
+
+add_action(
+ 'plugins_loaded',
+ function () {
+ add_action( 'init', array( Wp_Agents_Services_Provider_Manager::class, 'boot' ) );
+ add_action( 'init', array( Wp_Agents_Services_Agent_Manager::class, 'boot' ) );
+ add_action( 'rest_api_init', array( Wp_Agents_System_Rest::class, 'register' ) );
+ }
+);