* refactor: Separate Registry concerns following SOLID principles [WIP]
- Extract ReferenceProvider and ReferenceRegistryInterface interfaces
- Create DefaultToolExecutor with ReferenceHandlerInterface
- Remove execution responsibility from Registry class
- Enable custom handler and executor implementations
* refactor: implement SOLID principles with separated execution concerns
* Create DefaultResourceReader, DefaultPromptGetter
* Refactor JsonRpc Handler and RequestHandlers to use dedicated executors
* Update ServerBuilder to support custom executors via dependency injection
* chore: remove extra comments
* feat: introduce DispatchableRegistry for enhanced tool and resource management
* refactor: use proper interfaces
* refactor: implement HandlerInterface for improved abstraction and flexibility
* test: add unit tests for DispatchableRegistry and Registry classes
* refactor: cover with unit tests Resource reader, Prompt getter and Tool executor
* cs fix
* phpstan fix
* test: add unit tests for CallToolHandler, GetPromptHandler, PingHandler, and ReadResourceHandler
* refactor: revert Handler
* chore: remove style guide for tests
* refactor: remove "Default" prefix from classes
* refactor: remove DispatchableRegistry
* refactor: use package specific exception classes
* refactor: remove DispatchableRegistry
* refactor: add logger support to PromptGetter and ResourceReader classes
* Update src/Capability/Prompt/PromptGetter.php
Co-authored-by: Christopher Hertel <mail@christopher-hertel.de>
* refactor: Use FQN for Resource class to avoid cs-fixer misinterpreting it as `resource`
* refactor: rename ToolExecutor to ToolCaller and related classes for clarity and consistency
* refactor: add missed docblock
* refactor: rename ToolExecutor references to ToolCaller
* refactor: rename ToolCallerTest property and variable references
* cs fix
* ignore some phpstan errors
---------
Co-authored-by: Christopher Hertel <mail@christopher-hertel.de>
* Change return type of abstract request methods
* Change return type of `fromParams` method to `static` in request classes
(cherry picked from commit 94799ab66ff60d4b2305aadb6b73aaa4c805221e)
* Make request classes final and update `getParams` return types for improved type safety
(cherry picked from commit d6be496f89cc0e6d30f519792d0dc902685c4178)
- Add ConfigurationException class in src/Exception/ConfigurationException.php
- Update ServerBuilder to use the new ConfigurationException
- Regenerate PHPStan baseline to account for the new exception class,
reducing errors from 160+ to 124
- Fix grammar in doc/index.rst: "There two types" → "There are two types"
- Fix grammar in doc/index.rst: "if non of" → "if none of"
- Fix grammar in phpstan.dist.neon: "This errors" → "These errors"
- Fix grammar in examples/09-standalone-cli/README.md: "test add" → "test by adding"
- Fix sentence structure in examples/README.md for better readability
Signed-off-by: Oskar Stark <oskarstark@googlemail.com>
Remove symfony/dependency-injection and symfony/event-dispatcher
from require-dev as they are not used in the codebase. The project
uses psr/event-dispatcher interface instead of symfony's implementation.