diff --git a/.agents/skills/mcp-development/SKILL.md b/.agents/skills/mcp-development/SKILL.md index d148145..bca2611 100644 --- a/.agents/skills/mcp-development/SKILL.md +++ b/.agents/skills/mcp-development/SKILL.md @@ -24,12 +24,12 @@ search-docs(['mcp tools', 'mcp resources', 'mcp validation']) ### Artisan Commands - +Create MCP Primitives" ```bash -{{ $assist->artisanCommand('make:mcp-tool ToolName') }} -{{ $assist->artisanCommand('make:mcp-resource ResourceName') }} -{{ $assist->artisanCommand('make:mcp-prompt PromptName') }} -{{ $assist->artisanCommand('make:mcp-server ServerName') }} +php artisan make:mcp-tool ToolName +php artisan make:mcp-resource ResourceName +php artisan make:mcp-prompt PromptName +php artisan make:mcp-server ServerName ``` ### Basic Tool Implementation @@ -114,11 +114,11 @@ $response->assertSentNotification('event/type', ['data' => 'value']); Test interactively using the inspector: - + ```bash -{{ $assist->artisanCommand('mcp:inspector mcp/my-server') }} # Web server +php artisan mcp:inspector mcp/my-server # Web server -{{ $assist->artisanCommand('mcp:inspector my-server') }} # Local server +php artisan mcp:inspector my-server # Local server ``` diff --git a/.phpstorm.meta.php b/.phpstorm.meta.php index afe4795..e1faf88 100644 --- a/.phpstorm.meta.php +++ b/.phpstorm.meta.php @@ -2210,21 +2210,29 @@ namespace PHPSTORM_META { registerArgumentsSet('middleware', 'web','api',); registerArgumentsSet('routes', -'boost.browser-logs','storage.local','storage.local.upload',); +'boost.browser-logs','fivem','docs.index', +'docs.quickstart','docs.documentation','storage.local','storage.local.upload',); registerArgumentsSet('views', -'welcome','laravel-exceptions-renderer::components.badge','laravel-exceptions-renderer::components.empty-state','laravel-exceptions-renderer::components.file-with-line','laravel-exceptions-renderer::components.formatted-source', -'laravel-exceptions-renderer::components.frame','laravel-exceptions-renderer::components.frame-code','laravel-exceptions-renderer::components.header','laravel-exceptions-renderer::components.http-method','laravel-exceptions-renderer::components.icons.alert', -'laravel-exceptions-renderer::components.icons.check','laravel-exceptions-renderer::components.icons.chevron-left','laravel-exceptions-renderer::components.icons.chevron-right','laravel-exceptions-renderer::components.icons.chevrons-down-up','laravel-exceptions-renderer::components.icons.chevrons-left', -'laravel-exceptions-renderer::components.icons.chevrons-right','laravel-exceptions-renderer::components.icons.chevrons-up-down','laravel-exceptions-renderer::components.icons.copy','laravel-exceptions-renderer::components.icons.database','laravel-exceptions-renderer::components.icons.folder', -'laravel-exceptions-renderer::components.icons.folder-open','laravel-exceptions-renderer::components.icons.globe','laravel-exceptions-renderer::components.icons.info','laravel-exceptions-renderer::components.icons.laravel-ascii','laravel-exceptions-renderer::components.laravel-ascii-spotlight', -'laravel-exceptions-renderer::components.layout','laravel-exceptions-renderer::components.query','laravel-exceptions-renderer::components.request-body','laravel-exceptions-renderer::components.request-header','laravel-exceptions-renderer::components.request-url', -'laravel-exceptions-renderer::components.routing','laravel-exceptions-renderer::components.routing-parameter','laravel-exceptions-renderer::components.section-container','laravel-exceptions-renderer::components.separator','laravel-exceptions-renderer::components.syntax-highlight', -'laravel-exceptions-renderer::components.topbar','laravel-exceptions-renderer::components.trace','laravel-exceptions-renderer::components.vendor-frame','laravel-exceptions-renderer::components.vendor-frames','laravel-exceptions-renderer::markdown', -'laravel-exceptions-renderer::show','laravel-exceptions::401','laravel-exceptions::402','laravel-exceptions::403','laravel-exceptions::404', -'laravel-exceptions::419','laravel-exceptions::429','laravel-exceptions::500','laravel-exceptions::503','laravel-exceptions::layout', -'laravel-exceptions::minimal','notifications::email','pagination::bootstrap-4','pagination::bootstrap-5','pagination::default', -'pagination::semantic-ui','pagination::simple-bootstrap-4','pagination::simple-bootstrap-5','pagination::simple-default','pagination::simple-tailwind', -'pagination::tailwind',); +'docs.documentation','docs.index','docs.quickstart','layouts.app','layouts.partials.footer', +'layouts.partials.navigation','mcp.cox.cox-event-list','mcp.cox.cox-event-reference','mcp.cox.cox-function','mcp.fivem.event-list', +'mcp.fivem.event-reference','mcp.fivem.native-function','mcp.qbcore.qbcore-config','mcp.qbcore.qbcore-event-list','mcp.qbcore.qbcore-event-reference', +'mcp.qbcore.qbcore-function','mcp.qbcore.qbcore-players','mcp.qbcore.qbcore-resource-list','mcp.qbcore.qbcore-resource-reference','mcp.qbcore.qbcore-shared-data', +'mcp.resources.best-practices','mcp.resources.code-snippets','mcp.resources.database-queries','mcp.resources.framework-comparison','mcp.shared.resource-boilerplate', +'mcp.shared.search-results','mcp.templates.client-js','mcp.templates.client-lua','mcp.templates.config-js','mcp.templates.config-lua', +'mcp.templates.fxmanifest','mcp.templates.nui-css','mcp.templates.nui-html','mcp.templates.nui-script-js','mcp.templates.nui-script-lua', +'mcp.templates.server-js','mcp.templates.server-lua','laravel-exceptions-renderer::components.badge','laravel-exceptions-renderer::components.empty-state','laravel-exceptions-renderer::components.file-with-line', +'laravel-exceptions-renderer::components.formatted-source','laravel-exceptions-renderer::components.frame','laravel-exceptions-renderer::components.frame-code','laravel-exceptions-renderer::components.header','laravel-exceptions-renderer::components.http-method', +'laravel-exceptions-renderer::components.icons.alert','laravel-exceptions-renderer::components.icons.check','laravel-exceptions-renderer::components.icons.chevron-left','laravel-exceptions-renderer::components.icons.chevron-right','laravel-exceptions-renderer::components.icons.chevrons-down-up', +'laravel-exceptions-renderer::components.icons.chevrons-left','laravel-exceptions-renderer::components.icons.chevrons-right','laravel-exceptions-renderer::components.icons.chevrons-up-down','laravel-exceptions-renderer::components.icons.copy','laravel-exceptions-renderer::components.icons.database', +'laravel-exceptions-renderer::components.icons.folder','laravel-exceptions-renderer::components.icons.folder-open','laravel-exceptions-renderer::components.icons.globe','laravel-exceptions-renderer::components.icons.info','laravel-exceptions-renderer::components.icons.laravel-ascii', +'laravel-exceptions-renderer::components.laravel-ascii-spotlight','laravel-exceptions-renderer::components.layout','laravel-exceptions-renderer::components.query','laravel-exceptions-renderer::components.request-body','laravel-exceptions-renderer::components.request-header', +'laravel-exceptions-renderer::components.request-url','laravel-exceptions-renderer::components.routing','laravel-exceptions-renderer::components.routing-parameter','laravel-exceptions-renderer::components.section-container','laravel-exceptions-renderer::components.separator', +'laravel-exceptions-renderer::components.syntax-highlight','laravel-exceptions-renderer::components.topbar','laravel-exceptions-renderer::components.trace','laravel-exceptions-renderer::components.vendor-frame','laravel-exceptions-renderer::components.vendor-frames', +'laravel-exceptions-renderer::markdown','laravel-exceptions-renderer::show','laravel-exceptions::401','laravel-exceptions::402','laravel-exceptions::403', +'laravel-exceptions::404','laravel-exceptions::419','laravel-exceptions::429','laravel-exceptions::500','laravel-exceptions::503', +'laravel-exceptions::layout','laravel-exceptions::minimal','notifications::email','pagination::bootstrap-4','pagination::bootstrap-5', +'pagination::default','pagination::semantic-ui','pagination::simple-bootstrap-4','pagination::simple-bootstrap-5','pagination::simple-default', +'pagination::simple-tailwind','pagination::tailwind',); registerArgumentsSet('translations', 'auth.failed','auth.password','auth.throttle','pagination.previous','pagination.next', 'passwords.reset','passwords.sent','passwords.throttled','passwords.token','passwords.user', diff --git a/CLAUDE.md b/CLAUDE.md index 4bc591a..ae7e985 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -133,6 +133,13 @@ protected function isAccessible(User $user, ?string $path = null): bool - Add useful array shape type definitions when appropriate. +=== tests rules === + +# Test Enforcement + +- Every change must be programmatically tested. Write a new test or update an existing test, then run the affected tests to make sure they pass. +- Run the minimum number of tests needed to ensure code quality and speed. Use `php artisan test --compact` with a specific filename or filter. + === laravel/core rules === # Do Things the Laravel Way diff --git a/GEMINI.md b/GEMINI.md index 4bc591a..ae7e985 100644 --- a/GEMINI.md +++ b/GEMINI.md @@ -133,6 +133,13 @@ protected function isAccessible(User $user, ?string $path = null): bool - Add useful array shape type definitions when appropriate. +=== tests rules === + +# Test Enforcement + +- Every change must be programmatically tested. Write a new test or update an existing test, then run the affected tests to make sure they pass. +- Run the minimum number of tests needed to ensure code quality and speed. Use `php artisan test --compact` with a specific filename or filter. + === laravel/core rules === # Do Things the Laravel Way diff --git a/_ide_helper.php b/_ide_helper.php index 82b4370..379d060 100644 --- a/_ide_helper.php +++ b/_ide_helper.php @@ -353,7 +353,7 @@ namespace Illuminate\Support\Facades { /** * Get the path to the views directory. - * + * * This method returns the first configured path in the array of view paths. * * @param string $path @@ -1229,9 +1229,9 @@ namespace Illuminate\Support\Facades { /** * Returns true if the container can return an entry for the given identifier. - * + * * Returns false otherwise. - * + * * `has($id)` returning true does not mean that `get($id)` will not throw an exception. * It does however mean that `get($id)` will not throw a `NotFoundExceptionInterface`. * @@ -2607,7 +2607,7 @@ namespace Illuminate\Support\Facades { /** * Log the user out of the application on their current device only. - * + * * This method does not cycle the "remember" token. * * @return void @@ -2621,7 +2621,7 @@ namespace Illuminate\Support\Facades { /** * Invalidate other sessions for the current user. - * + * * The application must be using the AuthenticateSession middleware. * * @param string $password @@ -3585,7 +3585,7 @@ namespace Illuminate\Support\Facades { /** * Register the routes for handling broadcast authentication and sockets. - * + * * Alias of "routes" method. * * @param array|null $attributes @@ -3832,7 +3832,7 @@ namespace Illuminate\Support\Facades { /** * Dispatch a command to its appropriate handler in the current process. - * + * * Queueable jobs will be dispatched to the "sync" queue. * * @param mixed $command @@ -4632,7 +4632,7 @@ namespace Illuminate\Support\Facades { /** * Retrieve multiple items from the cache by key. - * + * * Items not found in the cache will have a null value. * * @param array $keys @@ -6264,7 +6264,7 @@ namespace Illuminate\Support\Facades { /** * @template TReturn of mixed - * + * * Run the callback function with the given context values and restore the original context state when complete. * @param (callable(): TReturn) $callback * @param array $data @@ -8382,7 +8382,7 @@ namespace Illuminate\Support\Facades { /** * @template TReturn of mixed - * + * * Execute a Closure within a transaction. * @param (\Closure(static): TReturn) $callback * @param int $attempts @@ -9521,7 +9521,7 @@ namespace Illuminate\Support\Facades { /** * Recursively delete a directory. - * + * * The directory itself may be optionally preserved. * * @param string $directory @@ -11298,7 +11298,7 @@ namespace Illuminate\Support\Facades { /** * Action must be taken immediately. - * + * * Example: Entire website down, database unavailable, etc. This should * trigger the SMS alerts and wake you up. * @@ -11315,7 +11315,7 @@ namespace Illuminate\Support\Facades { /** * Critical conditions. - * + * * Example: Application component unavailable, unexpected exception. * * @param string|\Stringable $message @@ -11346,7 +11346,7 @@ namespace Illuminate\Support\Facades { /** * Exceptional occurrences that are not errors. - * + * * Example: Use of deprecated APIs, poor use of an API, undesirable things * that are not necessarily wrong. * @@ -11377,7 +11377,7 @@ namespace Illuminate\Support\Facades { /** * Interesting events. - * + * * Example: User logs in, SQL logs. * * @param string|\Stringable $message @@ -12897,7 +12897,7 @@ namespace Illuminate\Support\Facades { /** * Indicate that queue workers should not poll for restart or pause signals. - * + * * This prevents the workers from hitting the application cache to determine if they need to pause or restart. * * @return void @@ -14508,7 +14508,7 @@ namespace Illuminate\Support\Facades { /** * This method belongs to Symfony HttpFoundation and is not usually needed when using Laravel. - * + * * Instead, you may use the "input" method. * * @param string $key @@ -14582,7 +14582,7 @@ namespace Illuminate\Support\Facades { /** * Whether the request contains a Session object. - * + * * This method does not give any information about the state of the session object, * like whether the session is started or not. It is just a way to check if this Request * is associated with a Session instance. @@ -14831,7 +14831,7 @@ namespace Illuminate\Support\Facades { /** * Sets the parameters for this request. - * + * * This method also re-initializes all properties. * * @param array $query The GET parameters @@ -14863,7 +14863,7 @@ namespace Illuminate\Support\Facades { /** * Creates a Request based on a given URI and configuration. - * + * * The information contained in the URI always take precedence * over the other information (server and parameters). * @@ -14885,7 +14885,7 @@ namespace Illuminate\Support\Facades { /** * Sets a callable able to create a Request instance. - * + * * This is mainly useful when you need to override the Request class * to keep BC with an existing system. It should not be used for any * other purpose. @@ -14900,7 +14900,7 @@ namespace Illuminate\Support\Facades { /** * Overrides the PHP global variables according to this request instance. - * + * * It overrides $_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE. * $_FILES is never overridden, see rfc1867 * @@ -14915,7 +14915,7 @@ namespace Illuminate\Support\Facades { /** * Sets a list of trusted proxies. - * + * * You should only list the reverse proxies that you manage directly. * * @param array $proxies A list of trusted proxies, the string 'REMOTE_ADDR' will be replaced with $_SERVER['REMOTE_ADDR'] and 'PRIVATE_SUBNETS' by IpUtils::PRIVATE_SUBNETS @@ -14954,7 +14954,7 @@ namespace Illuminate\Support\Facades { /** * Sets a list of trusted host patterns. - * + * * You should only list the hosts you manage using regexs. * * @param array $hostPatterns A list of trusted host patterns @@ -14980,7 +14980,7 @@ namespace Illuminate\Support\Facades { /** * Normalizes a query string. - * + * * It builds a normalized query string, where keys/value pairs are alphabetized, * have consistent escaping and unneeded delimiters are removed. * @@ -14994,13 +14994,13 @@ namespace Illuminate\Support\Facades { /** * Enables support for the _method request parameter to determine the intended HTTP method. - * + * * Be warned that enabling this feature might lead to CSRF issues in your code. * Check that you are using CSRF tokens when required. * If the HTTP method parameter override is enabled, an html-form with method "POST" can be altered * and used to send a "PUT" or "DELETE" request via the _method request parameter. * If these methods are not protected against CSRF, this presents a possible vulnerability. - * + * * The HTTP method can only be overridden when the real HTTP method is POST. * * @static @@ -15024,7 +15024,7 @@ namespace Illuminate\Support\Facades { /** * Sets the list of HTTP methods that can be overridden. - * + * * Set to null to allow all methods to be overridden (default). Set to an * empty array to disallow overrides entirely. Otherwise, provide the list * of uppercased method names that are allowed. @@ -15087,11 +15087,11 @@ namespace Illuminate\Support\Facades { /** * Returns the client IP addresses. - * + * * In the returned array the most trusted IP address is first, and the * least trusted one last. The "real" client IP address is the last one, * but this is also the least trusted one. Trusted proxies are stripped. - * + * * Use this method carefully; you should use getClientIp() instead. * * @see getClientIp() @@ -15106,13 +15106,13 @@ namespace Illuminate\Support\Facades { /** * Returns the client IP address. - * + * * This method can read the client IP address from the "X-Forwarded-For" header * when trusted proxies were set via "setTrustedProxies()". The "X-Forwarded-For" * header value is a comma+space separated list of IP addresses, the left-most * being the original client, and each successive proxy that passed the request * adding the IP address where it received the request from. - * + * * If your reverse proxy uses a different header name than "X-Forwarded-For", * ("Client-Ip" for instance), configure it via the $trustedHeaderSet * argument of the Request::setTrustedProxies() method instead. @@ -15142,11 +15142,11 @@ namespace Illuminate\Support\Facades { /** * Returns the path being requested relative to the executed script. - * + * * The path info always starts with a /. - * + * * Suppose this request is instantiated from /mysite on localhost: - * + * * * http://localhost/mysite returns '/' * * http://localhost/mysite/about returns '/about' * * http://localhost/mysite/enco%20ded returns '/enco%20ded' @@ -15164,9 +15164,9 @@ namespace Illuminate\Support\Facades { /** * Returns the root path from which this request is executed. - * + * * Suppose that an index.php file instantiates this request object: - * + * * * http://localhost/index.php returns an empty string * * http://localhost/index.php/page returns an empty string * * http://localhost/web/index.php returns '/web' @@ -15184,9 +15184,9 @@ namespace Illuminate\Support\Facades { /** * Returns the root URL from which this request is executed. - * + * * The base URL never ends with a /. - * + * * This is similar to getBasePath(), except that it also includes the * script filename (e.g. index.php) if one exists. * @@ -15214,10 +15214,10 @@ namespace Illuminate\Support\Facades { /** * Returns the port on which the request is made. - * + * * This method can read the client port from the "X-Forwarded-Port" header * when trusted proxies were set via "setTrustedProxies()". - * + * * The "X-Forwarded-Port" header must contain the client port. * * @return int|string|null Can be a string if fetched from the server bag @@ -15269,7 +15269,7 @@ namespace Illuminate\Support\Facades { /** * Returns the HTTP host being requested. - * + * * The port name will be appended to the host if it's non-standard. * * @static @@ -15296,7 +15296,7 @@ namespace Illuminate\Support\Facades { /** * Gets the scheme and HTTP host. - * + * * If the URL was called with basic authentication, the user * and the password are not added to the generated string. * @@ -15337,12 +15337,12 @@ namespace Illuminate\Support\Facades { /** * Returns the path as relative reference from the current Request path. - * + * * Only the URIs path component (no schema, host etc.) is relevant and must be given. * Both paths must be absolute and not contain relative parts. * Relative URLs from one resource to another are useful when generating self-contained downloadable document archives. * Furthermore, they can be used to reduce the link size in documents. - * + * * Example target paths, given a base path of "/a/b/c/d": * - "/a/b/c/d" -> "" * - "/a/b/c/" -> "./" @@ -15361,7 +15361,7 @@ namespace Illuminate\Support\Facades { /** * Generates the normalized query string for the Request. - * + * * It builds a normalized query string, where keys/value pairs are alphabetized * and have consistent escaping. * @@ -15376,10 +15376,10 @@ namespace Illuminate\Support\Facades { /** * Checks whether the request is secure or not. - * + * * This method can read the client protocol from the "X-Forwarded-Proto" header * when trusted proxies were set via "setTrustedProxies()". - * + * * The "X-Forwarded-Proto" header must contain the protocol: "https" or "http". * * @static @@ -15393,10 +15393,10 @@ namespace Illuminate\Support\Facades { /** * Returns the host name. - * + * * This method can read the client host name from the "X-Forwarded-Host" header * when trusted proxies were set via "setTrustedProxies()". - * + * * The "X-Forwarded-Host" header must contain the client host name. * * @throws SuspiciousOperationException when the host name is invalid or not trusted @@ -15423,13 +15423,13 @@ namespace Illuminate\Support\Facades { /** * Gets the request "intended" method. - * + * * If the X-HTTP-Method-Override header is set, and if the method is a POST, * then it is used to determine the "real" intended HTTP method. - * + * * The _method request parameter can also be used to determine the HTTP method, * but only if enableHttpMethodParameterOverride() has been called. - * + * * The method is always an uppercased string. * * @see getRealMethod() @@ -15481,7 +15481,7 @@ namespace Illuminate\Support\Facades { /** * Gets the format associated with the mime type. - * + * * Resolution order: * 1) Exact match on the full MIME type (e.g. "application/json"). * 2) Match on the canonical MIME type (i.e. before the first ";" parameter). @@ -15518,9 +15518,9 @@ namespace Illuminate\Support\Facades { /** * Gets the request format. - * + * * Here is the process to determine the format: - * + * * * format defined by the user (with setRequestFormat()) * * _format request attribute * * $default @@ -15661,7 +15661,7 @@ namespace Illuminate\Support\Facades { /** * Returns the protocol version. - * + * * If the application is behind a proxy, the protocol version used in the * requests between the client and the proxy and between the proxy and the * server might be different. This returns the former (from the "Via" header) @@ -15731,7 +15731,7 @@ namespace Illuminate\Support\Facades { * Gets the preferred format for the response by inspecting, in the following order: * * the request format set using setRequestFormat; * * the values of the Accept HTTP header. - * + * * Note that if you use this method, you should send the "Vary: Accept" header * in the response to prevent any issues with intermediary HTTP caches. * @@ -15798,7 +15798,7 @@ namespace Illuminate\Support\Facades { /** * Returns true if the request is an XMLHttpRequest. - * + * * It works if your JavaScript library sets an X-Requested-With HTTP header. * It is known to work with common JavaScript frameworks: * @@ -15827,7 +15827,7 @@ namespace Illuminate\Support\Facades { /** * Indicates whether this request originated from a trusted proxy. - * + * * This can be useful to determine whether or not to trust the * contents of a proxy-specific header. * @@ -16457,7 +16457,7 @@ namespace Illuminate\Support\Facades { /** * Retrieve data as a boolean value. - * + * * Returns true when value is "1", "true", "on", and "yes". Otherwise, returns false. * * @param string|null $key @@ -17683,7 +17683,7 @@ namespace Illuminate\Support\Facades { /** * Add a middleware to the beginning of a middleware group. - * + * * If the middleware is already in the group, it will not be added again. * * @param string $group @@ -17699,7 +17699,7 @@ namespace Illuminate\Support\Facades { /** * Add a middleware to the end of a middleware group. - * + * * If the middleware is already in the group, it will not be added again. * * @param string $group @@ -24309,7 +24309,7 @@ namespace { /** * Specify attributes that should be added to any new models created by this builder. - * + * * The given key / value pairs will also be added as where conditions to the query. * * @param \Illuminate\Contracts\Database\Query\Expression|array|string $attributes @@ -24890,7 +24890,7 @@ namespace { /** * Add a relationship count / exists condition to the query with where clauses. - * + * * Also load the relationship with the same condition. * * @param string $relation diff --git a/artisan b/artisan old mode 100755 new mode 100644 diff --git a/composer.lock b/composer.lock index 4f8f871..a83b099 100644 --- a/composer.lock +++ b/composer.lock @@ -1535,16 +1535,16 @@ }, { "name": "league/commonmark", - "version": "2.8.0", + "version": "2.8.1", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb" + "reference": "84b1ca48347efdbe775426f108622a42735a6579" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/4efa10c1e56488e658d10adf7b7b7dcd19940bfb", - "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/84b1ca48347efdbe775426f108622a42735a6579", + "reference": "84b1ca48347efdbe775426f108622a42735a6579", "shasum": "" }, "require": { @@ -1569,9 +1569,9 @@ "phpstan/phpstan": "^1.8.2", "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3 | ^6.0 | ^7.0", - "symfony/process": "^5.4 | ^6.0 | ^7.0", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 | ^7.0", + "symfony/finder": "^5.3 | ^6.0 | ^7.0 || ^8.0", + "symfony/process": "^5.4 | ^6.0 | ^7.0 || ^8.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 | ^7.0 || ^8.0", "unleashedtech/php-coding-standard": "^3.1.1", "vimeo/psalm": "^4.24.0 || ^5.0.0 || ^6.0.0" }, @@ -1638,7 +1638,7 @@ "type": "tidelift" } ], - "time": "2025-11-26T21:48:24+00:00" + "time": "2026-03-05T21:37:03+00:00" }, { "name": "league/config", @@ -3092,16 +3092,16 @@ }, { "name": "psy/psysh", - "version": "v0.12.20", + "version": "v0.12.21", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "19678eb6b952a03b8a1d96ecee9edba518bb0373" + "reference": "4821fab5b7cd8c49a673a9fd5754dc9162bb9e97" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/19678eb6b952a03b8a1d96ecee9edba518bb0373", - "reference": "19678eb6b952a03b8a1d96ecee9edba518bb0373", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/4821fab5b7cd8c49a673a9fd5754dc9162bb9e97", + "reference": "4821fab5b7cd8c49a673a9fd5754dc9162bb9e97", "shasum": "" }, "require": { @@ -3165,9 +3165,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.12.20" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.21" }, - "time": "2026-02-11T15:05:28+00:00" + "time": "2026-03-06T21:21:28+00:00" }, { "name": "ralouphie/getallheaders", @@ -3446,16 +3446,16 @@ }, { "name": "symfony/console", - "version": "v7.4.6", + "version": "v7.4.7", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "6d643a93b47398599124022eb24d97c153c12f27" + "reference": "e1e6770440fb9c9b0cf725f81d1361ad1835329d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/6d643a93b47398599124022eb24d97c153c12f27", - "reference": "6d643a93b47398599124022eb24d97c153c12f27", + "url": "https://api.github.com/repos/symfony/console/zipball/e1e6770440fb9c9b0cf725f81d1361ad1835329d", + "reference": "e1e6770440fb9c9b0cf725f81d1361ad1835329d", "shasum": "" }, "require": { @@ -3520,7 +3520,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.4.6" + "source": "https://github.com/symfony/console/tree/v7.4.7" }, "funding": [ { @@ -3540,7 +3540,7 @@ "type": "tidelift" } ], - "time": "2026-02-25T17:02:47+00:00" + "time": "2026-03-06T14:06:20+00:00" }, { "name": "symfony/css-selector", @@ -3991,16 +3991,16 @@ }, { "name": "symfony/http-foundation", - "version": "v7.4.6", + "version": "v7.4.7", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "fd97d5e926e988a363cef56fbbf88c5c528e9065" + "reference": "f94b3e7b7dafd40e666f0c9ff2084133bae41e81" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/fd97d5e926e988a363cef56fbbf88c5c528e9065", - "reference": "fd97d5e926e988a363cef56fbbf88c5c528e9065", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f94b3e7b7dafd40e666f0c9ff2084133bae41e81", + "reference": "f94b3e7b7dafd40e666f0c9ff2084133bae41e81", "shasum": "" }, "require": { @@ -4049,7 +4049,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.4.6" + "source": "https://github.com/symfony/http-foundation/tree/v7.4.7" }, "funding": [ { @@ -4069,20 +4069,20 @@ "type": "tidelift" } ], - "time": "2026-02-21T16:25:55+00:00" + "time": "2026-03-06T13:15:18+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.4.6", + "version": "v7.4.7", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "002ac0cf4cd972a7fd0912dcd513a95e8a81ce83" + "reference": "3b3fcf386c809be990c922e10e4c620d6367cab1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/002ac0cf4cd972a7fd0912dcd513a95e8a81ce83", - "reference": "002ac0cf4cd972a7fd0912dcd513a95e8a81ce83", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/3b3fcf386c809be990c922e10e4c620d6367cab1", + "reference": "3b3fcf386c809be990c922e10e4c620d6367cab1", "shasum": "" }, "require": { @@ -4168,7 +4168,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.4.6" + "source": "https://github.com/symfony/http-kernel/tree/v7.4.7" }, "funding": [ { @@ -4188,7 +4188,7 @@ "type": "tidelift" } ], - "time": "2026-02-26T08:30:57+00:00" + "time": "2026-03-06T16:33:18+00:00" }, { "name": "symfony/mailer", @@ -4276,16 +4276,16 @@ }, { "name": "symfony/mime", - "version": "v7.4.6", + "version": "v7.4.7", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "9fc881d95feae4c6c48678cb6372bd8a7ba04f5f" + "reference": "da5ab4fde3f6c88ab06e96185b9922f48b677cd1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/9fc881d95feae4c6c48678cb6372bd8a7ba04f5f", - "reference": "9fc881d95feae4c6c48678cb6372bd8a7ba04f5f", + "url": "https://api.github.com/repos/symfony/mime/zipball/da5ab4fde3f6c88ab06e96185b9922f48b677cd1", + "reference": "da5ab4fde3f6c88ab06e96185b9922f48b677cd1", "shasum": "" }, "require": { @@ -4341,7 +4341,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.4.6" + "source": "https://github.com/symfony/mime/tree/v7.4.7" }, "funding": [ { @@ -4361,7 +4361,7 @@ "type": "tidelift" } ], - "time": "2026-02-05T15:57:06+00:00" + "time": "2026-03-05T15:24:09+00:00" }, { "name": "symfony/polyfill-ctype", @@ -6170,16 +6170,16 @@ }, { "name": "barryvdh/reflection-docblock", - "version": "v2.4.0", + "version": "v2.4.1", "source": { "type": "git", "url": "https://github.com/barryvdh/ReflectionDocBlock.git", - "reference": "d103774cbe7e94ddee7e4870f97f727b43fe7201" + "reference": "4f5ba70c30c81f2ce03a16a9965832cfcc31ed3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/ReflectionDocBlock/zipball/d103774cbe7e94ddee7e4870f97f727b43fe7201", - "reference": "d103774cbe7e94ddee7e4870f97f727b43fe7201", + "url": "https://api.github.com/repos/barryvdh/ReflectionDocBlock/zipball/4f5ba70c30c81f2ce03a16a9965832cfcc31ed3b", + "reference": "4f5ba70c30c81f2ce03a16a9965832cfcc31ed3b", "shasum": "" }, "require": { @@ -6216,9 +6216,9 @@ } ], "support": { - "source": "https://github.com/barryvdh/ReflectionDocBlock/tree/v2.4.0" + "source": "https://github.com/barryvdh/ReflectionDocBlock/tree/v2.4.1" }, - "time": "2025-07-17T06:07:30+00:00" + "time": "2026-03-05T20:09:01+00:00" }, { "name": "brianium/paratest", @@ -6817,25 +6817,25 @@ }, { "name": "laravel/boost", - "version": "v2.2.1", + "version": "v2.2.3", "source": { "type": "git", "url": "https://github.com/laravel/boost.git", - "reference": "e27f1616177377fef95296620530c44a7dda4df9" + "reference": "44ab65a5455c2d6fceb71d6145f8d5d89c02d889" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/boost/zipball/e27f1616177377fef95296620530c44a7dda4df9", - "reference": "e27f1616177377fef95296620530c44a7dda4df9", + "url": "https://api.github.com/repos/laravel/boost/zipball/44ab65a5455c2d6fceb71d6145f8d5d89c02d889", + "reference": "44ab65a5455c2d6fceb71d6145f8d5d89c02d889", "shasum": "" }, "require": { "guzzlehttp/guzzle": "^7.9", - "illuminate/console": "^11.45.3|^12.41.1", - "illuminate/contracts": "^11.45.3|^12.41.1", - "illuminate/routing": "^11.45.3|^12.41.1", - "illuminate/support": "^11.45.3|^12.41.1", - "laravel/mcp": "^0.5.1", + "illuminate/console": "^11.45.3|^12.41.1|^13.0", + "illuminate/contracts": "^11.45.3|^12.41.1|^13.0", + "illuminate/routing": "^11.45.3|^12.41.1|^13.0", + "illuminate/support": "^11.45.3|^12.41.1|^13.0", + "laravel/mcp": "^0.5.1|^0.6.0", "laravel/prompts": "^0.3.10", "laravel/roster": "^0.5.0", "php": "^8.2" @@ -6843,7 +6843,7 @@ "require-dev": { "laravel/pint": "^1.27.0", "mockery/mockery": "^1.6.12", - "orchestra/testbench": "^9.15.0|^10.6", + "orchestra/testbench": "^9.15.0|^10.6|^11.0", "pestphp/pest": "^2.36.0|^3.8.4|^4.1.5", "phpstan/phpstan": "^2.1.27", "rector/rector": "^2.1" @@ -6879,7 +6879,7 @@ "issues": "https://github.com/laravel/boost/issues", "source": "https://github.com/laravel/boost" }, - "time": "2026-02-25T16:07:36+00:00" + "time": "2026-03-06T20:20:28+00:00" }, { "name": "laravel/pail", @@ -7030,16 +7030,16 @@ }, { "name": "laravel/roster", - "version": "v0.5.0", + "version": "v0.5.1", "source": { "type": "git", "url": "https://github.com/laravel/roster.git", - "reference": "56904a78f4d7360c1c490ced7deeebf9aecb8c0e" + "reference": "5089de7615f72f78e831590ff9d0435fed0102bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/roster/zipball/56904a78f4d7360c1c490ced7deeebf9aecb8c0e", - "reference": "56904a78f4d7360c1c490ced7deeebf9aecb8c0e", + "url": "https://api.github.com/repos/laravel/roster/zipball/5089de7615f72f78e831590ff9d0435fed0102bb", + "reference": "5089de7615f72f78e831590ff9d0435fed0102bb", "shasum": "" }, "require": { @@ -7087,7 +7087,7 @@ "issues": "https://github.com/laravel/roster/issues", "source": "https://github.com/laravel/roster" }, - "time": "2026-02-17T17:33:35+00:00" + "time": "2026-03-05T07:58:43+00:00" }, { "name": "laravel/sail", @@ -8026,16 +8026,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "6.0.1", + "version": "6.0.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "2f5cbed597cb261d1ea458f3da3a9ad32e670b1e" + "reference": "897b5986ece6b4f9d8413fea345c7d49c757d6bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/2f5cbed597cb261d1ea458f3da3a9ad32e670b1e", - "reference": "2f5cbed597cb261d1ea458f3da3a9ad32e670b1e", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/897b5986ece6b4f9d8413fea345c7d49c757d6bf", + "reference": "897b5986ece6b4f9d8413fea345c7d49c757d6bf", "shasum": "" }, "require": { @@ -8085,9 +8085,9 @@ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/6.0.1" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/6.0.2" }, - "time": "2026-01-20T15:30:42+00:00" + "time": "2026-03-01T18:43:49+00:00" }, { "name": "phpdocumentor/type-resolver", diff --git a/package-lock.json b/package-lock.json index 7285c84..7d39bab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2039,9 +2039,9 @@ } }, "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", "dev": true, "funding": [ {