Skip to content

Commit 9428d8b

Browse files
authored
refactor: remove resolver interface for now (#375)
1 parent 694ee2d commit 9428d8b

File tree

4 files changed

+9
-25
lines changed

4 files changed

+9
-25
lines changed

src/Chain/Toolbox/ToolCallArgumentResolver.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,17 @@
1212
/**
1313
* @author Valtteri R <[email protected]>
1414
*/
15-
final readonly class ToolCallArgumentResolver implements ToolCallArgumentResolverInterface
15+
final readonly class ToolCallArgumentResolver
1616
{
1717
public function __construct(
1818
private DenormalizerInterface $denormalizer = new Serializer([new DateTimeNormalizer(), new ObjectNormalizer()]),
1919
) {
2020
}
2121

22-
public function resolveArguments(object $tool, Tool $metadata, ToolCall $toolCall): array
22+
/**
23+
* @return array<string, mixed>
24+
*/
25+
public function resolveArguments(Tool $metadata, ToolCall $toolCall): array
2326
{
2427
$method = new \ReflectionMethod($metadata->reference->class, $metadata->reference->method);
2528

src/Chain/Toolbox/ToolCallArgumentResolverInterface.php

Lines changed: 0 additions & 17 deletions
This file was deleted.

src/Chain/Toolbox/Toolbox.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ final class Toolbox implements ToolboxInterface
3939
public function __construct(
4040
private readonly ToolFactoryInterface $toolFactory,
4141
iterable $tools,
42+
private readonly ToolCallArgumentResolver $argumentResolver = new ToolCallArgumentResolver(),
4243
private readonly LoggerInterface $logger = new NullLogger(),
43-
private readonly ToolCallArgumentResolverInterface $argumentResolver = new ToolCallArgumentResolver(),
4444
private readonly ?EventDispatcherInterface $eventDispatcher = null,
4545
) {
4646
$this->tools = $tools instanceof \Traversable ? iterator_to_array($tools) : $tools;
@@ -75,7 +75,7 @@ public function execute(ToolCall $toolCall): mixed
7575
try {
7676
$this->logger->debug(\sprintf('Executing tool "%s".', $toolCall->name), $toolCall->arguments);
7777

78-
$arguments = $this->argumentResolver->resolveArguments($tool, $metadata, $toolCall);
78+
$arguments = $this->argumentResolver->resolveArguments($metadata, $toolCall);
7979
$this->eventDispatcher?->dispatch(new ToolCallArgumentsResolved($tool, $metadata, $arguments));
8080

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

tests/Chain/Toolbox/ToolCallArgumentResolverTest.php

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

27-
$tool = new ToolDate();
2827
$metadata = new Tool(new ExecutionReference(ToolDate::class, '__invoke'), 'tool_date', 'test');
2928
$toolCall = new ToolCall('invocation', 'tool_date', ['date' => '2025-06-29']);
3029

31-
self::assertEquals(['date' => new \DateTimeImmutable('2025-06-29')], $resolver->resolveArguments($tool, $metadata, $toolCall));
30+
self::assertEquals(['date' => new \DateTimeImmutable('2025-06-29')], $resolver->resolveArguments($metadata, $toolCall));
3231
}
3332

3433
#[Test]
3534
public function resolveScalarArrayArguments(): void
3635
{
3736
$resolver = new ToolCallArgumentResolver();
3837

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

51-
self::assertSame($expected, $resolver->resolveArguments($tool, $metadata, $toolCall));
49+
self::assertSame($expected, $resolver->resolveArguments($metadata, $toolCall));
5250
}
5351
}

0 commit comments

Comments
 (0)