public Optional<String> maybeVisit(JsonNode schema, String baseName, String name) {
            var typeText = getTypeText(schema);

            if (typeText != null && typeText.equals("string")
                    && (schema.has("minLength") || schema.has("maxLength"))) {
                String charRule = addPrimitive("char", PRIMITIVE_RULES.get("char"));
                var minLen = schema.has("minLength") ? schema.get("minLength").asInt() : 0;
                var maxLen = schema.has("maxLength") ? schema.get("maxLength").asInt() : null;
                var conent = "\"\\\"\" " + generateRepetition(charRule, minLen, maxLen, null) + " \"\\\"\" space";
                var rule = addRule(name, conent);
                return Optional.of(rule);
            }

            return Optional.empty();
        }
Converts a JSON Schema to a GBNF grammar to be used for structured output with llama.cpp.
It is a port of Python implementation from llama.cpp repository.
Current implementation doesn't support regex patterns, resolving $ref or fetching schemas from URLs.
The plan is to replace this with C++ implementation from llama.cpp though JNI.
model-integration/src/main/java/ai/vespa/llm/clients/JsonSchemaToGrammar.java