Skip to content

Commit 5c3631b

Browse files
committed
feat: accept json encoded list of provider/tool classes
1 parent 26ab011 commit 5c3631b

File tree

3 files changed

+32
-16
lines changed

3 files changed

+32
-16
lines changed

core/components/modai/src/Elements/Events/modAIOnToolRegister.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ class modAIOnToolRegister extends Event
66
{
77
public function run()
88
{
9-
$this->modx->event->output([
9+
$this->modx->event->output(json_encode([
1010
\modAI\Tools\GetWeather::class,
1111

1212
\modAI\Tools\GetCategories::class,
@@ -21,6 +21,6 @@ public function run()
2121
\modAI\Tools\CreateResource::class,
2222
\modAI\Tools\GetResources::class,
2323
\modAI\Tools\GetResourceDetail::class,
24-
]);
24+
]));
2525
}
2626
}

core/components/modai/src/Processors/Combos/ContextProviderClass.php

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,25 @@ public function process()
1818

1919
$registeredContextProviders = $this->modx->invokeEvent('modAIOnContextProviderRegister');
2020
foreach ($registeredContextProviders as $registeredContextProvider) {
21-
if (is_array($registeredContextProvider)) {
22-
foreach ($registeredContextProvider as $contextProvider) {
23-
if ($this->validateClassName($contextProvider, $query)) {
24-
$classes[] = $contextProvider;
25-
}
21+
$contextProviders = $registeredContextProvider;
22+
23+
if (!is_array($contextProviders)) {
24+
$maybeJSON = json_decode($registeredContextProvider, true);
25+
if (is_array($maybeJSON)) {
26+
$contextProviders = $maybeJSON;
27+
} else {
28+
$contextProviders = [$registeredContextProvider];
2629
}
30+
}
31+
32+
if (!is_array($contextProviders)) {
2733
continue;
2834
}
2935

30-
if ($this->validateClassName($registeredContextProvider, $query)) {
31-
$classes[] = $registeredContextProvider;
36+
foreach ($contextProviders as $contextProvider) {
37+
if ($this->validateClassName($contextProvider, $query)) {
38+
$classes[] = $contextProvider;
39+
}
3240
}
3341
}
3442

core/components/modai/src/Processors/Combos/ToolClass.php

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,25 @@ public function process()
1818

1919
$registeredTools = $this->modx->invokeEvent('modAIOnToolRegister');
2020
foreach ($registeredTools as $registeredTool) {
21-
if (is_array($registeredTool)) {
22-
foreach ($registeredTool as $tool) {
23-
if ($this->validateClassName($tool, $query)) {
24-
$classes[] = $tool;
25-
}
21+
$tools = $registeredTool;
22+
23+
if (!is_array($tools)) {
24+
$maybeJSON = json_decode($registeredTool, true);
25+
if (is_array($maybeJSON)) {
26+
$tools = $maybeJSON;
27+
} else {
28+
$tools = [$registeredTool];
2629
}
30+
}
31+
32+
if (!is_array($tools)) {
2733
continue;
2834
}
2935

30-
if ($this->validateClassName($registeredTool, $query)) {
31-
$classes[] = $registeredTool;
36+
foreach ($tools as $tool) {
37+
if ($this->validateClassName($tool, $query)) {
38+
$classes[] = $tool;
39+
}
3240
}
3341
}
3442

0 commit comments

Comments
 (0)