refactor(runner): use string-only params and return type for BuiltinActionRegistry builtin actions

This commit is contained in:
2026-03-17 22:12:22 +08:00
parent fd20af3e1c
commit ef2eb909b7

View File

@@ -1,6 +1,5 @@
package work.slhaf.partner.module.modules.action.builtin; package work.slhaf.partner.module.modules.action.builtin;
import com.alibaba.fastjson2.JSONObject;
import lombok.Getter; import lombok.Getter;
import lombok.NonNull; import lombok.NonNull;
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability; import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
@@ -38,27 +37,21 @@ public class BuiltinActionRegistry extends AbstractAgentModule.Standalone {
return List.of(); return List.of();
} }
public void defineBuiltinAction(String name, MetaActionInfo metaActionInfo, Function<Map<String, Object>, Object> invoker) { public void defineBuiltinAction(String name, MetaActionInfo metaActionInfo, Function<Map<String, String>, 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, Object> params) { public String call(@NonNull String actionKey, @NonNull Map<String, String> 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);
} }
Object result = definition.invoker().apply(params); String result = definition.invoker().apply(params);
if (result == null) { if (result == null) {
return "null"; return "null";
} }
if (result instanceof String string) { return result;
return string;
}
if (result instanceof Number || result instanceof Boolean || result instanceof Map || result instanceof Iterable) {
return JSONObject.toJSONString(result);
}
return String.valueOf(result);
} }
private Map<String, MetaActionInfo> exportMetaActionInfos() { private Map<String, MetaActionInfo> exportMetaActionInfos() {
@@ -70,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, Object>, Object> invoker Function<Map<String, String>, String> invoker
) { ) {
} }
} }