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 =