This is an automated email from the ASF dual-hosted git repository.

wenjin272 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/flink-agents.git


The following commit(s) were added to refs/heads/main by this push:
     new 08666c84 [plan] Map long/float and other numeric tool parameters to 
proper JSON Schema types (#1027)
08666c84 is described below

commit 08666c84b5241b68158f423bf6f72bad017005f6
Author: Edson <[email protected]>
AuthorDate: Thu Aug 20 23:20:48 2026 -0400

    [plan] Map long/float and other numeric tool parameters to proper JSON 
Schema types (#1027)
---
 .../flink/agents/plan/tools/SchemaUtils.java       | 14 ++++++--
 .../flink/agents/plan/tools/SchemaUtilsTest.java   | 37 ++++++++++++++++++++++
 2 files changed, 49 insertions(+), 2 deletions(-)

diff --git 
a/plan/src/main/java/org/apache/flink/agents/plan/tools/SchemaUtils.java 
b/plan/src/main/java/org/apache/flink/agents/plan/tools/SchemaUtils.java
index 87ee67d3..b44760f8 100644
--- a/plan/src/main/java/org/apache/flink/agents/plan/tools/SchemaUtils.java
+++ b/plan/src/main/java/org/apache/flink/agents/plan/tools/SchemaUtils.java
@@ -102,9 +102,19 @@ public class SchemaUtils {
 
         if (paramType == String.class) {
             paramSchema.put("type", "string");
-        } else if (paramType == int.class || paramType == Integer.class) {
+        } else if (paramType == int.class
+                || paramType == Integer.class
+                || paramType == long.class
+                || paramType == Long.class
+                || paramType == short.class
+                || paramType == Short.class
+                || paramType == byte.class
+                || paramType == Byte.class) {
             paramSchema.put("type", "integer");
-        } else if (paramType == double.class || paramType == Double.class) {
+        } else if (paramType == double.class
+                || paramType == Double.class
+                || paramType == float.class
+                || paramType == Float.class) {
             paramSchema.put("type", "number");
         } else if (paramType == boolean.class || paramType == Boolean.class) {
             paramSchema.put("type", "boolean");
diff --git 
a/plan/src/test/java/org/apache/flink/agents/plan/tools/SchemaUtilsTest.java 
b/plan/src/test/java/org/apache/flink/agents/plan/tools/SchemaUtilsTest.java
index 1792a12d..a511e405 100644
--- a/plan/src/test/java/org/apache/flink/agents/plan/tools/SchemaUtilsTest.java
+++ b/plan/src/test/java/org/apache/flink/agents/plan/tools/SchemaUtilsTest.java
@@ -44,6 +44,15 @@ class SchemaUtilsTest {
 
         public void methodWithoutAnnotations(String param1, int param2) {}
 
+        public void methodWithWideNumericTypes(
+                @ToolParam(name = "longParam", description = "A long 
parameter") long longParam,
+                @ToolParam(name = "boxedLongParam", description = "A boxed 
long") Long boxedLong,
+                @ToolParam(name = "floatParam", description = "A float 
parameter") float floatParam,
+                @ToolParam(name = "boxedFloatParam", description = "A boxed 
float")
+                        Float boxedFloat,
+                @ToolParam(name = "shortParam", description = "A short 
parameter") short shortParam,
+                @ToolParam(name = "byteParam", description = "A byte 
parameter") byte byteParam) {}
+
         public void methodWithCustomObject(
                 @ToolParam(name = "objectParam", description = "A custom 
object parameter")
                         Object customObject) {}
@@ -55,6 +64,34 @@ class SchemaUtilsTest {
 
     private final ObjectMapper mapper = new ObjectMapper();
 
+    @Test
+    void testGenerateSchemaWithWideNumericTypes() throws Exception {
+        Method method =
+                TestClass.class.getMethod(
+                        "methodWithWideNumericTypes",
+                        long.class,
+                        Long.class,
+                        float.class,
+                        Float.class,
+                        short.class,
+                        byte.class);
+        String schema = SchemaUtils.generateSchema(method);
+        final JsonNode jsonNode = mapper.readTree(schema);
+        JsonNode properties = jsonNode.get("properties");
+
+        // Integral types map to "integer" (#1015): previously these all fell 
back to "object",
+        // which models either follow (producing object-shaped arguments) or 
treat as an
+        // uncallable tool.
+        assertEquals("integer", 
properties.get("longParam").get("type").asText());
+        assertEquals("integer", 
properties.get("boxedLongParam").get("type").asText());
+        assertEquals("integer", 
properties.get("shortParam").get("type").asText());
+        assertEquals("integer", 
properties.get("byteParam").get("type").asText());
+
+        // Floating-point types map to "number".
+        assertEquals("number", 
properties.get("floatParam").get("type").asText());
+        assertEquals("number", 
properties.get("boxedFloatParam").get("type").asText());
+    }
+
     @Test
     void testGenerateSchemaWithBasicTypes() throws Exception {
         Method method =

Reply via email to