diff --git a/src/main/java/com/google/genai/Caches.java b/src/main/java/com/google/genai/Caches.java index b14cc2d9c9f..bae3f3df715 100644 --- a/src/main/java/com/google/genai/Caches.java +++ b/src/main/java/com/google/genai/Caches.java @@ -795,6 +795,25 @@ ObjectNode listCachedContentsResponseFromVertex(JsonNode fromObject, ObjectNode return toObject; } + @ExcludeFromGeneratedCoverageReport + ObjectNode mcpServerToVertex(JsonNode fromObject, ObjectNode parentObject) { + ObjectNode toObject = JsonSerializable.objectMapper().createObjectNode(); + if (!Common.isZero(Common.getValueByPath(fromObject, new String[] {"name"}))) { + throw new IllegalArgumentException( + "name parameter is only supported in Gemini Developer API mode, not in Gemini Enterprise" + + " Agent Platform mode."); + } + + if (!Common.isZero( + Common.getValueByPath(fromObject, new String[] {"streamableHttpTransport"}))) { + throw new IllegalArgumentException( + "streamableHttpTransport parameter is only supported in Gemini Developer API mode, not in" + + " Gemini Enterprise Agent Platform mode."); + } + + return toObject; + } + @ExcludeFromGeneratedCoverageReport ObjectNode partToMldev(JsonNode fromObject, ObjectNode parentObject) { ObjectNode toObject = JsonSerializable.objectMapper().createObjectNode(); @@ -1245,10 +1264,16 @@ ObjectNode toolToVertex(JsonNode fromObject, ObjectNode parentObject) { Common.getValueByPath(fromObject, new String[] {"urlContext"})); } - if (!Common.isZero(Common.getValueByPath(fromObject, new String[] {"mcpServers"}))) { - throw new IllegalArgumentException( - "mcpServers parameter is only supported in Gemini Developer API mode, not in Gemini" - + " Enterprise Agent Platform mode."); + if (Common.getValueByPath(fromObject, new String[] {"mcpServers"}) != null) { + ArrayNode keyArray = + (ArrayNode) Common.getValueByPath(fromObject, new String[] {"mcpServers"}); + ObjectMapper objectMapper = new ObjectMapper(); + ArrayNode result = objectMapper.createArrayNode(); + + for (JsonNode item : keyArray) { + result.add(mcpServerToVertex(JsonSerializable.toJsonNode(item), toObject)); + } + Common.setValueByPath(toObject, new String[] {"mcpServers"}, result); } return toObject; diff --git a/src/main/java/com/google/genai/LiveConverters.java b/src/main/java/com/google/genai/LiveConverters.java index f9c891a07f6..4c07f09c3e0 100644 --- a/src/main/java/com/google/genai/LiveConverters.java +++ b/src/main/java/com/google/genai/LiveConverters.java @@ -1686,6 +1686,25 @@ ObjectNode liveServerMessageFromVertex(JsonNode fromObject, ObjectNode parentObj return toObject; } + @ExcludeFromGeneratedCoverageReport + ObjectNode mcpServerToVertex(JsonNode fromObject, ObjectNode parentObject) { + ObjectNode toObject = JsonSerializable.objectMapper().createObjectNode(); + if (!Common.isZero(Common.getValueByPath(fromObject, new String[] {"name"}))) { + throw new IllegalArgumentException( + "name parameter is only supported in Gemini Developer API mode, not in Gemini Enterprise" + + " Agent Platform mode."); + } + + if (!Common.isZero( + Common.getValueByPath(fromObject, new String[] {"streamableHttpTransport"}))) { + throw new IllegalArgumentException( + "streamableHttpTransport parameter is only supported in Gemini Developer API mode, not in" + + " Gemini Enterprise Agent Platform mode."); + } + + return toObject; + } + @ExcludeFromGeneratedCoverageReport ObjectNode partToMldev(JsonNode fromObject, ObjectNode parentObject) { ObjectNode toObject = JsonSerializable.objectMapper().createObjectNode(); @@ -2123,10 +2142,16 @@ ObjectNode toolToVertex(JsonNode fromObject, ObjectNode parentObject) { Common.getValueByPath(fromObject, new String[] {"urlContext"})); } - if (!Common.isZero(Common.getValueByPath(fromObject, new String[] {"mcpServers"}))) { - throw new IllegalArgumentException( - "mcpServers parameter is only supported in Gemini Developer API mode, not in Gemini" - + " Enterprise Agent Platform mode."); + if (Common.getValueByPath(fromObject, new String[] {"mcpServers"}) != null) { + ArrayNode keyArray = + (ArrayNode) Common.getValueByPath(fromObject, new String[] {"mcpServers"}); + ObjectMapper objectMapper = new ObjectMapper(); + ArrayNode result = objectMapper.createArrayNode(); + + for (JsonNode item : keyArray) { + result.add(mcpServerToVertex(JsonSerializable.toJsonNode(item), toObject)); + } + Common.setValueByPath(toObject, new String[] {"mcpServers"}, result); } return toObject; diff --git a/src/main/java/com/google/genai/Models.java b/src/main/java/com/google/genai/Models.java index 75299143d9e..cc3640cd1a2 100644 --- a/src/main/java/com/google/genai/Models.java +++ b/src/main/java/com/google/genai/Models.java @@ -4017,6 +4017,25 @@ ObjectNode maskReferenceConfigToVertex( return toObject; } + @ExcludeFromGeneratedCoverageReport + ObjectNode mcpServerToVertex(JsonNode fromObject, ObjectNode parentObject, JsonNode rootObject) { + ObjectNode toObject = JsonSerializable.objectMapper().createObjectNode(); + if (!Common.isZero(Common.getValueByPath(fromObject, new String[] {"name"}))) { + throw new IllegalArgumentException( + "name parameter is only supported in Gemini Developer API mode, not in Gemini Enterprise" + + " Agent Platform mode."); + } + + if (!Common.isZero( + Common.getValueByPath(fromObject, new String[] {"streamableHttpTransport"}))) { + throw new IllegalArgumentException( + "streamableHttpTransport parameter is only supported in Gemini Developer API mode, not in" + + " Gemini Enterprise Agent Platform mode."); + } + + return toObject; + } + @ExcludeFromGeneratedCoverageReport ObjectNode modelFromMldev(JsonNode fromObject, ObjectNode parentObject, JsonNode rootObject) { ObjectNode toObject = JsonSerializable.objectMapper().createObjectNode(); @@ -5153,10 +5172,16 @@ ObjectNode toolToVertex(JsonNode fromObject, ObjectNode parentObject, JsonNode r Common.getValueByPath(fromObject, new String[] {"urlContext"})); } - if (!Common.isZero(Common.getValueByPath(fromObject, new String[] {"mcpServers"}))) { - throw new IllegalArgumentException( - "mcpServers parameter is only supported in Gemini Developer API mode, not in Gemini" - + " Enterprise Agent Platform mode."); + if (Common.getValueByPath(fromObject, new String[] {"mcpServers"}) != null) { + ArrayNode keyArray = + (ArrayNode) Common.getValueByPath(fromObject, new String[] {"mcpServers"}); + ObjectMapper objectMapper = new ObjectMapper(); + ArrayNode result = objectMapper.createArrayNode(); + + for (JsonNode item : keyArray) { + result.add(mcpServerToVertex(JsonSerializable.toJsonNode(item), toObject, rootObject)); + } + Common.setValueByPath(toObject, new String[] {"mcpServers"}, result); } return toObject;