package com.gzzm.lobster.tool;

/**
 * LLM tool/function name policy shared by tool providers.
 */
public final class ToolNamePolicy {

    public static final int MAX_LLM_TOOL_NAME_LENGTH = 64;

    private ToolNamePolicy() {}

    public static boolean isValidLlmToolName(String name) {
        if (name == null || name.isEmpty()) return false;
        if (name.length() > MAX_LLM_TOOL_NAME_LENGTH) return false;
        for (int i = 0; i < name.length(); i++) {
            if (!isAllowedLlmToolNameChar(name.charAt(i))) return false;
        }
        return true;
    }

    public static boolean isAllowedLlmToolNameChar(char c) {
        return (c >= 'a' && c <= 'z')
                || (c >= 'A' && c <= 'Z')
                || (c >= '0' && c <= '9')
                || c == '_' || c == '-';
    }
}
