mirror of
https://github.com/slhaf/Partner.git
synced 2026-05-12 16:53:04 +08:00
refactor(runner): allow object-typed params in BuiltinActionRegistry builtin actions
This commit is contained in:
@@ -37,12 +37,12 @@ public class BuiltinActionRegistry extends AbstractAgentModule.Standalone {
|
|||||||
return List.of();
|
return List.of();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void defineBuiltinAction(String name, MetaActionInfo metaActionInfo, Function<Map<String, String>, String> invoker) {
|
public void defineBuiltinAction(String name, MetaActionInfo metaActionInfo, Function<Map<String, Object>, String> invoker) {
|
||||||
BuiltinActionDefinition definition = new BuiltinActionDefinition(BUILTIN_LOCATION + "::" + name, metaActionInfo, invoker);
|
BuiltinActionDefinition definition = new BuiltinActionDefinition(BUILTIN_LOCATION + "::" + name, metaActionInfo, invoker);
|
||||||
definitions.put(definition.actionKey(), definition);
|
definitions.put(definition.actionKey(), definition);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String call(@NonNull String actionKey, @NonNull Map<String, String> params) {
|
public String call(@NonNull String actionKey, @NonNull Map<String, Object> params) {
|
||||||
BuiltinActionDefinition definition = definitions.get(actionKey);
|
BuiltinActionDefinition definition = definitions.get(actionKey);
|
||||||
if (definition == null) {
|
if (definition == null) {
|
||||||
throw new MetaActionNotFoundException("未找到对应的内置行动程序: " + actionKey);
|
throw new MetaActionNotFoundException("未找到对应的内置行动程序: " + actionKey);
|
||||||
@@ -63,7 +63,7 @@ public class BuiltinActionRegistry extends AbstractAgentModule.Standalone {
|
|||||||
public record BuiltinActionDefinition(
|
public record BuiltinActionDefinition(
|
||||||
String actionKey,
|
String actionKey,
|
||||||
MetaActionInfo metaActionInfo,
|
MetaActionInfo metaActionInfo,
|
||||||
Function<Map<String, String>, String> invoker
|
Function<Map<String, Object>, String> invoker
|
||||||
) {
|
) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -42,7 +42,7 @@ class BuiltinActionRegistryTest {
|
|||||||
private static BuiltinActionRegistry.BuiltinActionDefinition buildDefinition(
|
private static BuiltinActionRegistry.BuiltinActionDefinition buildDefinition(
|
||||||
String name,
|
String name,
|
||||||
MetaActionInfo metaActionInfo,
|
MetaActionInfo metaActionInfo,
|
||||||
java.util.function.Function<Map<String, Object>, Object> invoker
|
java.util.function.Function<Map<String, Object>, String> invoker
|
||||||
) {
|
) {
|
||||||
return new BuiltinActionRegistry.BuiltinActionDefinition(
|
return new BuiltinActionRegistry.BuiltinActionDefinition(
|
||||||
BUILTIN_LOCATION + "::" + name,
|
BUILTIN_LOCATION + "::" + name,
|
||||||
@@ -59,7 +59,7 @@ class BuiltinActionRegistryTest {
|
|||||||
|
|
||||||
BuiltinActionRegistry registry = spy(new BuiltinActionRegistry());
|
BuiltinActionRegistry registry = spy(new BuiltinActionRegistry());
|
||||||
doReturn(List.of(
|
doReturn(List.of(
|
||||||
buildDefinition("echo", buildMetaActionInfo("echo"), params -> params.get("value"))
|
buildDefinition("echo", buildMetaActionInfo("echo"), params -> params.get("value").toString())
|
||||||
)).when(registry).buildDefaultActionDefinitions();
|
)).when(registry).buildDefaultActionDefinitions();
|
||||||
injectActionCapability(registry, actionCapability);
|
injectActionCapability(registry, actionCapability);
|
||||||
|
|
||||||
@@ -75,8 +75,8 @@ class BuiltinActionRegistryTest {
|
|||||||
@Test
|
@Test
|
||||||
void testCallReturnsStringifiedResults() {
|
void testCallReturnsStringifiedResults() {
|
||||||
BuiltinActionRegistry registry = new BuiltinActionRegistry();
|
BuiltinActionRegistry registry = new BuiltinActionRegistry();
|
||||||
registry.defineBuiltinAction("echo", buildMetaActionInfo("echo"), params -> params.get("value"));
|
registry.defineBuiltinAction("echo", buildMetaActionInfo("echo"), params -> params.get("value").toString());
|
||||||
registry.defineBuiltinAction("json", buildMetaActionInfo("json"), params -> Map.of("ok", true));
|
registry.defineBuiltinAction("json", buildMetaActionInfo("json"), params -> Map.of("ok", true).toString());
|
||||||
registry.defineBuiltinAction("nil", buildMetaActionInfo("nil"), params -> null);
|
registry.defineBuiltinAction("nil", buildMetaActionInfo("nil"), params -> null);
|
||||||
|
|
||||||
Assertions.assertEquals("hello", registry.call("builtin::echo", Map.of("value", "hello")));
|
Assertions.assertEquals("hello", registry.call("builtin::echo", Map.of("value", "hello")));
|
||||||
|
|||||||
Reference in New Issue
Block a user