refactor(runner): allow object-typed params in BuiltinActionRegistry builtin actions

This commit is contained in:
2026-03-17 22:51:00 +08:00
parent 4439e5c04b
commit 6474eb8dc6
2 changed files with 7 additions and 7 deletions

View File

@@ -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
) { ) {
} }
} }

View File

@@ -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")));