Skip to content

Commit 4958e1a

Browse files
Mark-Htheboxer
authored andcommitted
fix(tools): enforce strict array typing for runTool method arguments
1 parent f0efe4b commit 4958e1a

File tree

14 files changed

+28
-21
lines changed

14 files changed

+28
-21
lines changed

core/components/modai/src/API/Tools/Run.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace modAI\API\Tools;
44

5+
use JsonException;
56
use modAI\API\API;
67
use modAI\Exceptions\APIException;
78
use modAI\Exceptions\LexiconException;
@@ -50,10 +51,16 @@ public function post(ServerRequestInterface $request): void
5051
if (isset($tools[$toolCall['name']])) {
5152
$tool = $tools[$toolCall['name']]->getToolInstance();
5253

54+
try {
55+
$arguments = (array) json_decode($toolCall['arguments'], true, 512, JSON_THROW_ON_ERROR);
56+
} catch (JsonException) {
57+
$arguments = [];
58+
}
59+
5360
$content[] = [
5461
'id' => $toolCall['id'],
5562
'name' => $toolCall['name'],
56-
'content' => $tool->runTool(json_decode($toolCall['arguments'], true)),
63+
'content' => $tool->runTool($arguments),
5764
];
5865
}
5966
}

core/components/modai/src/Tools/CreateCategory.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public function __construct(modX $modx, array $config)
6868
* @param array $arguments
6969
* @return string
7070
*/
71-
public function runTool($arguments): string
71+
public function runTool(array $arguments): string
7272
{
7373
if (!self::checkPermissions($this->modx)) {
7474
return json_encode(['success' => false, "message" => "You do not have permission to use this tool."]);

core/components/modai/src/Tools/CreateChunk.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public function __construct(modX $modx, array $config)
6969
* @param array $arguments
7070
* @return string
7171
*/
72-
public function runTool($arguments): string
72+
public function runTool(array $arguments): string
7373
{
7474
if (!self::checkPermissions($this->modx)) {
7575
return json_encode(['success' => false, "message" => "You do not have permission to use this tool."]);

core/components/modai/src/Tools/CreateResource.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public function __construct(modX $modx, array $config)
6969
* @param array $arguments
7070
* @return string
7171
*/
72-
public function runTool($arguments): string
72+
public function runTool(array $arguments): string
7373
{
7474
if (!self::checkPermissions($this->modx)) {
7575
return json_encode(['success' => false, "message" => "You do not have permission to use this tool."]);

core/components/modai/src/Tools/CreateTemplate.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public function __construct(modX $modx, array $config)
6969
* @param array $arguments
7070
* @return string
7171
*/
72-
public function runTool($arguments): string
72+
public function runTool(array $arguments): string
7373
{
7474
if (!self::checkPermissions($this->modx)) {
7575
return json_encode(['success' => false, "message" => "You do not have permission to use this tool."]);

core/components/modai/src/Tools/EditChunk.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public function __construct(modX $modx, array $config)
6262
* @param array $arguments
6363
* @return string
6464
*/
65-
public function runTool($arguments): string
65+
public function runTool(array $arguments): string
6666
{
6767
if (!self::checkPermissions($this->modx)) {
6868
return json_encode(['success' => false, "message" => "You do not have permission to use this tool."]);

core/components/modai/src/Tools/EditTemplate.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public function __construct(modX $modx, array $config)
6262
* @param array $arguments
6363
* @return string
6464
*/
65-
public function runTool($arguments): string
65+
public function runTool(array $arguments): string
6666
{
6767
if (!self::checkPermissions($this->modx)) {
6868
return json_encode(['success' => false, "message" => "You do not have permission to use this tool."]);

core/components/modai/src/Tools/GetCategories.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ public function __construct(modX $modx, array $config)
3535
}
3636

3737
/**
38-
* @param array | null $arguments
38+
* @param array $arguments
3939
* @return string
4040
*/
41-
public function runTool($arguments): string
41+
public function runTool(array $arguments): string
4242
{
4343
if (!self::checkPermissions($this->modx)) {
4444
return json_encode(['success' => false, "message" => "You do not have permission to use this tool."]);

core/components/modai/src/Tools/GetChunks.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,10 @@ public function __construct(modX $modx, array $config)
6363
}
6464

6565
/**
66-
* @param array | null $arguments
66+
* @param array $arguments
6767
* @return string
6868
*/
69-
public function runTool($arguments): string
69+
public function runTool(array $arguments): string
7070
{
7171
if (!self::checkPermissions($this->modx)) {
7272
return json_encode(['success' => false, "message" => "You do not have permission to use this tool."]);

core/components/modai/src/Tools/GetResourceDetail.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ public function __construct(modX $modx, array $config)
4949
}
5050

5151
/**
52-
* @param array | null $arguments
52+
* @param array $arguments
5353
* @return string
5454
*/
55-
public function runTool($arguments): string
55+
public function runTool(array $arguments): string
5656
{
5757
if (!self::checkPermissions($this->modx)) {
5858
return json_encode(['success' => false, "message" => "You do not have permission to use this tool."]);

0 commit comments

Comments
 (0)