diff --git a/Partner-Core/src/main/java/work/slhaf/partner/module/modules/action/builtin/BuiltinActionRegistry.java b/Partner-Core/src/main/java/work/slhaf/partner/module/modules/action/builtin/BuiltinActionRegistry.java index 35040ab2..49a1ccb3 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/module/modules/action/builtin/BuiltinActionRegistry.java +++ b/Partner-Core/src/main/java/work/slhaf/partner/module/modules/action/builtin/BuiltinActionRegistry.java @@ -65,5 +65,39 @@ public class BuiltinActionRegistry extends AbstractAgentModule.Standalone { MetaActionInfo metaActionInfo, Function, String> invoker ) { + + static String requireString(Map params, String key) { + Object value = params.get(key); + if (value == null) { + throw new IllegalArgumentException("缺少参数: " + key); + } + if (!(value instanceof String s)) { + throw new IllegalArgumentException("参数 " + key + " 必须为字符串"); + } + return s; + } + + static String optionalString(Map params, String key, String defaultValue) { + Object value = params.get(key); + if (value == null) { + return defaultValue; + } + if (!(value instanceof String s)) { + throw new IllegalArgumentException("参数 " + key + " 必须为字符串"); + } + return s; + } + + static Integer optionalInt(Map params, String key, Integer defaultValue) { + Object value = params.get(key); + if (value == null) { + return defaultValue; + } + if (value instanceof Number n) { + return n.intValue(); + } + throw new IllegalArgumentException("参数 " + key + " 必须为整数"); + } + } } \ No newline at end of file