Skip to content

Commit 02b5a55

Browse files
committed
refactor: remove resolver interface for now (#375)
1 parent 9c82746 commit 02b5a55

File tree

3 files changed

+9
-8
lines changed

3 files changed

+9
-8
lines changed

src/Toolbox/ToolCallArgumentResolver.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,17 @@
2121
/**
2222
* @author Valtteri R <[email protected]>
2323
*/
24-
final readonly class ToolCallArgumentResolver implements ToolCallArgumentResolverInterface
24+
final readonly class ToolCallArgumentResolver
2525
{
2626
public function __construct(
2727
private DenormalizerInterface $denormalizer = new Serializer([new DateTimeNormalizer(), new ObjectNormalizer()]),
2828
) {
2929
}
3030

31-
public function resolveArguments(object $tool, Tool $metadata, ToolCall $toolCall): array
31+
/**
32+
* @return array<string, mixed>
33+
*/
34+
public function resolveArguments(Tool $metadata, ToolCall $toolCall): array
3235
{
3336
$method = new \ReflectionMethod($metadata->reference->class, $metadata->reference->method);
3437

src/Toolbox/Toolbox.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ final class Toolbox implements ToolboxInterface
4646
public function __construct(
4747
private readonly ToolFactoryInterface $toolFactory,
4848
iterable $tools,
49+
private readonly ToolCallArgumentResolver $argumentResolver = new ToolCallArgumentResolver(),
4950
private readonly LoggerInterface $logger = new NullLogger(),
50-
private readonly ToolCallArgumentResolverInterface $argumentResolver = new ToolCallArgumentResolver(),
5151
private readonly ?EventDispatcherInterface $eventDispatcher = null,
5252
) {
5353
$this->tools = $tools instanceof \Traversable ? iterator_to_array($tools) : $tools;
@@ -82,7 +82,7 @@ public function execute(ToolCall $toolCall): mixed
8282
try {
8383
$this->logger->debug(\sprintf('Executing tool "%s".', $toolCall->name), $toolCall->arguments);
8484

85-
$arguments = $this->argumentResolver->resolveArguments($tool, $metadata, $toolCall);
85+
$arguments = $this->argumentResolver->resolveArguments($metadata, $toolCall);
8686
$this->eventDispatcher?->dispatch(new ToolCallArgumentsResolved($tool, $metadata, $arguments));
8787

8888
$result = $tool->{$metadata->reference->method}(...$arguments);

tests/Toolbox/ToolCallArgumentResolverTest.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,17 @@ public function resolveArguments(): void
3333
{
3434
$resolver = new ToolCallArgumentResolver();
3535

36-
$tool = new ToolDate();
3736
$metadata = new Tool(new ExecutionReference(ToolDate::class, '__invoke'), 'tool_date', 'test');
3837
$toolCall = new ToolCall('invocation', 'tool_date', ['date' => '2025-06-29']);
3938

40-
self::assertEquals(['date' => new \DateTimeImmutable('2025-06-29')], $resolver->resolveArguments($tool, $metadata, $toolCall));
39+
self::assertEquals(['date' => new \DateTimeImmutable('2025-06-29')], $resolver->resolveArguments($metadata, $toolCall));
4140
}
4241

4342
#[Test]
4443
public function resolveScalarArrayArguments(): void
4544
{
4645
$resolver = new ToolCallArgumentResolver();
4746

48-
$tool = new ToolArray();
4947
$metadata = new Tool(new ExecutionReference(ToolArray::class, '__invoke'), 'tool_array', 'A tool with array parameters');
5048
$toolCall = new ToolCall('tool_id_1234', 'tool_array', [
5149
'urls' => ['https://symfony.com', 'https://php.net'],
@@ -57,6 +55,6 @@ public function resolveScalarArrayArguments(): void
5755
'ids' => [1, 2, 3],
5856
];
5957

60-
self::assertSame($expected, $resolver->resolveArguments($tool, $metadata, $toolCall));
58+
self::assertSame($expected, $resolver->resolveArguments($metadata, $toolCall));
6159
}
6260
}

0 commit comments

Comments
 (0)