Skip to content

Commit 4bbaf25

Browse files
4754 - removing unused code and modifying tests
1 parent 4b0fc52 commit 4bbaf25

3 files changed

Lines changed: 29 additions & 62 deletions

File tree

server/libs/ai/ai-tool-api/src/main/java/com/bytechef/ai/tool/FromAi.java

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -117,31 +117,6 @@ public TypedValue execute(EvaluationContext context, Object target, Object... ar
117117
if (requiredArg instanceof Boolean requiredBool) {
118118
required = requiredBool;
119119
}
120-
} else {
121-
if (thirdArgument != null && !(thirdArgument instanceof String)) {
122-
throw new IllegalArgumentException("fromAi description argument must be a String or null.");
123-
}
124-
125-
description = (String) thirdArgument;
126-
127-
if (arguments.length > 3) {
128-
defaultValue = arguments[3];
129-
}
130-
131-
if (arguments.length > 4) {
132-
Object optionsArgument = arguments[4];
133-
134-
if (optionsArgument != null && !(optionsArgument instanceof List)) {
135-
throw new IllegalArgumentException("fromAi options argument must be a List or null.");
136-
}
137-
138-
if (optionsArgument != null) {
139-
@SuppressWarnings("unchecked")
140-
List<Object> castedOptions = (List<Object>) optionsArgument;
141-
142-
options = castedOptions;
143-
}
144-
}
145120
}
146121
}
147122

server/libs/ai/ai-tool-api/src/main/java/com/bytechef/ai/tool/FromAiResult.java

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -30,28 +30,11 @@
3030
* @param defaultValue fallback value when the AI model does not provide one (nullable)
3131
* @author Ivica Cardic
3232
*/
33-
public record FromAiResult(String name, String type, String description, Object defaultValue, List<Object> options, boolean required) {
34-
35-
private static final String DEFAULT_TYPE = "STRING";
33+
public record FromAiResult(String name, String type, String description, Object defaultValue, List<Object> options,
34+
boolean required) {
3635

3736
public FromAiResult {
3837
Objects.requireNonNull(name, "name must not be null");
3938
Objects.requireNonNull(type, "type must not be null");
4039
}
41-
42-
public FromAiResult(String name) {
43-
this(name, DEFAULT_TYPE, null, null, null, false);
44-
}
45-
46-
public FromAiResult(String name, String type) {
47-
this(name, type, null, null, null, false);
48-
}
49-
50-
public FromAiResult(String name, String type, String description) {
51-
this(name, type, description, null, null, false);
52-
}
53-
54-
public FromAiResult(String name, String type, String description, Object defaultValue) {
55-
this(name, type, description, defaultValue, null, false);
56-
}
5740
}

server/libs/ai/ai-tool-api/src/test/java/com/bytechef/ai/tool/facade/AbstractToolFacadeTest.java

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ private AbstractToolFacade createToolFacade() {
5050
@Test
5151
void testExtractFromAiResultsWithSingleFromAiExpression() {
5252
when(evaluator.evaluate(eq(Map.of("value", "=fromAi('subject')")), eq(Map.of())))
53-
.thenReturn(Map.of("value", new FromAiResult("subject", null, "STRING", null)));
53+
.thenReturn(Map.of("value", new FromAiResult("subject", "STRING", null, null, null, false)));
5454

5555
AbstractToolFacade toolFacade = createToolFacade();
5656

@@ -64,9 +64,9 @@ void testExtractFromAiResultsWithSingleFromAiExpression() {
6464
@Test
6565
void testExtractFromAiResultsWithMultipleFromAiCallsInOneExpression() {
6666
when(evaluator.evaluate(eq(Map.of("value", "=fromAi('subject')")), eq(Map.of())))
67-
.thenReturn(Map.of("value", new FromAiResult("subject", null, "STRING", null)));
67+
.thenReturn(Map.of("value", new FromAiResult("subject", "STRING", null, null, null, false)));
6868
when(evaluator.evaluate(eq(Map.of("value", "=fromAi('name')")), eq(Map.of())))
69-
.thenReturn(Map.of("value", new FromAiResult("name", null, "STRING", null)));
69+
.thenReturn(Map.of("value", new FromAiResult("name", "STRING", null, null, null, false)));
7070

7171
AbstractToolFacade toolFacade = createToolFacade();
7272

@@ -83,7 +83,7 @@ void testExtractFromAiResultsWithMultipleFromAiCallsInOneExpression() {
8383
@Test
8484
void testExtractFromAiResultsDeduplicatesByName() {
8585
when(evaluator.evaluate(eq(Map.of("value", "=fromAi('subject')")), eq(Map.of())))
86-
.thenReturn(Map.of("value", new FromAiResult("subject", null, "STRING", null)));
86+
.thenReturn(Map.of("value", new FromAiResult("subject", "STRING", null, null, null, false)));
8787

8888
AbstractToolFacade toolFacade = createToolFacade();
8989

@@ -103,7 +103,7 @@ void testExtractFromAiResultsDeduplicatesByName() {
103103
void testExtractFromAiResultsWithFromAiResultObjectValue() {
104104
AbstractToolFacade toolFacade = createToolFacade();
105105

106-
FromAiResult directResult = new FromAiResult("directParam", "A direct param", "STRING", null);
106+
FromAiResult directResult = new FromAiResult("directParam", "STRING", "A direct param", null, null, false);
107107

108108
List<FromAiResult> results = toolFacade.extractFromAiResults(Map.of("param", directResult));
109109

@@ -124,6 +124,7 @@ void testExtractFromAiResultsWithMapConvertibleToFromAiResult() {
124124
fromAiResultMap.put("description", "A map-based param");
125125
fromAiResultMap.put("type", "STRING");
126126
fromAiResultMap.put("defaultValue", null);
127+
fromAiResultMap.put("required", false);
127128

128129
List<FromAiResult> results = toolFacade.extractFromAiResults(Map.of("param", fromAiResultMap));
129130

@@ -138,7 +139,7 @@ void testExtractFromAiResultsWithMapConvertibleToFromAiResult() {
138139
void testExtractFromAiResultsWithMapConvertibleToFromAiResultDeduplicatesWithDirectResult() {
139140
AbstractToolFacade toolFacade = createToolFacade();
140141

141-
FromAiResult directResult = new FromAiResult("sharedName", "Direct", "STRING", null);
142+
FromAiResult directResult = new FromAiResult("sharedName", "STRING", "Direct", null, null, false);
142143

143144
Map<String, Object> fromAiResultMap = new LinkedHashMap<>();
144145

@@ -161,13 +162,17 @@ void testExtractFromAiResultsWithMapConvertibleToFromAiResultDeduplicatesWithDir
161162

162163
@Test
163164
void testExtractFromAiResultsWithListOfFromAiExpressions() {
164-
when(evaluator.evaluate(eq(Map.of("value", "=fromAi('Email__0', 'STRING', {'description': 'The attendee email address.'})")), eq(Map.of())))
165-
.thenReturn(Map.of("value", new FromAiResult("Email__0", "The attendee email address.", "STRING", null)));
165+
when(evaluator.evaluate(
166+
eq(Map.of("value", "=fromAi('Email__0', 'STRING', {'description': 'The attendee email address.'})")),
167+
eq(Map.of())))
168+
.thenReturn(Map.of("value",
169+
new FromAiResult("Email__0", "STRING", "The attendee email address.", null, null, false)));
166170

167171
AbstractToolFacade toolFacade = createToolFacade();
168172

169173
List<FromAiResult> results = toolFacade.extractFromAiResults(
170-
Map.of("attendees", List.of("=fromAi('Email__0', 'STRING', {'description': 'The attendee email address.'})")));
174+
Map.of("attendees",
175+
List.of("=fromAi('Email__0', 'STRING', {'description': 'The attendee email address.'})")));
171176

172177
assertEquals(1, results.size());
173178
assertEquals("Email__0", results.getFirst()
@@ -187,6 +192,7 @@ void testExtractFromAiResultsWithListOfPreEvaluatedFromAiResultMaps() {
187192
fromAiResultMap.put("type", "STRING");
188193
fromAiResultMap.put("defaultValue", null);
189194
fromAiResultMap.put("options", null);
195+
fromAiResultMap.put("required", false);
190196

191197
List<FromAiResult> results = toolFacade.extractFromAiResults(
192198
Map.of("attendees", List.of(fromAiResultMap)));
@@ -221,7 +227,7 @@ void testExtractFromAiResultsWithNullParameters() {
221227
void testResolveParameterValueWithFromAiResultObject() {
222228
AbstractToolFacade toolFacade = createToolFacade();
223229

224-
FromAiResult fromAiResult = new FromAiResult("subject", null, "STRING", null);
230+
FromAiResult fromAiResult = new FromAiResult("subject", "STRING", null, null, null, false);
225231

226232
Object result = toolFacade.resolveParameterValue(fromAiResult, Map.of("subject", "Hello World"));
227233

@@ -232,7 +238,7 @@ void testResolveParameterValueWithFromAiResultObject() {
232238
void testResolveParameterValueWithFromAiResultObjectFallsBackToDefault() {
233239
AbstractToolFacade toolFacade = createToolFacade();
234240

235-
FromAiResult fromAiResult = new FromAiResult("subject", null, "STRING", "default value");
241+
FromAiResult fromAiResult = new FromAiResult("subject", "STRING", null, "default value", null, false);
236242

237243
Object result = toolFacade.resolveParameterValue(fromAiResult, Map.of());
238244

@@ -243,7 +249,7 @@ void testResolveParameterValueWithFromAiResultObjectFallsBackToDefault() {
243249
void testResolveParameterValueWithFromAiResultObjectReturnsNullWhenNoDefaultAndNotInRequest() {
244250
AbstractToolFacade toolFacade = createToolFacade();
245251

246-
FromAiResult fromAiResult = new FromAiResult("subject", null, "STRING", null);
252+
FromAiResult fromAiResult = new FromAiResult("subject", "STRING", null, null, null, false);
247253

248254
Object result = toolFacade.resolveParameterValue(fromAiResult, Map.of());
249255

@@ -260,6 +266,7 @@ void testResolveParameterValueWithMapConvertibleToFromAiResult() {
260266
fromAiResultMap.put("description", null);
261267
fromAiResultMap.put("type", "STRING");
262268
fromAiResultMap.put("defaultValue", null);
269+
fromAiResultMap.put("required", false);
263270

264271
Object result = toolFacade.resolveParameterValue(fromAiResultMap, Map.of("subject", "Resolved Value"));
265272

@@ -276,6 +283,7 @@ void testResolveParameterValueWithMapConvertibleToFromAiResultFallsBackToDefault
276283
fromAiResultMap.put("description", null);
277284
fromAiResultMap.put("type", "STRING");
278285
fromAiResultMap.put("defaultValue", "fallback");
286+
fromAiResultMap.put("required", "false");
279287

280288
Object result = toolFacade.resolveParameterValue(fromAiResultMap, Map.of());
281289

@@ -292,6 +300,7 @@ void testResolveParameterValueWithMapConvertibleToFromAiResultReturnsNullWhenNoD
292300
fromAiResultMap.put("description", null);
293301
fromAiResultMap.put("type", "STRING");
294302
fromAiResultMap.put("defaultValue", null);
303+
fromAiResultMap.put("required", false);
295304

296305
Object result = toolFacade.resolveParameterValue(fromAiResultMap, Map.of());
297306

@@ -301,7 +310,7 @@ void testResolveParameterValueWithMapConvertibleToFromAiResultReturnsNullWhenNoD
301310
@Test
302311
void testResolveParameterValueWithPureFromAiExpression() {
303312
when(evaluator.evaluate(eq(Map.of("value", "=fromAi('subject')")), eq(Map.of())))
304-
.thenReturn(Map.of("value", new FromAiResult("subject", null, "STRING", null)));
313+
.thenReturn(Map.of("value", new FromAiResult("subject", "STRING", null, null, null, false)));
305314

306315
AbstractToolFacade toolFacade = createToolFacade();
307316

@@ -313,7 +322,7 @@ void testResolveParameterValueWithPureFromAiExpression() {
313322
@Test
314323
void testResolveParameterValueWithPureFromAiExpressionPreservesIntegerType() {
315324
when(evaluator.evaluate(eq(Map.of("value", "=fromAi('count', null, 'INTEGER')")), eq(Map.of())))
316-
.thenReturn(Map.of("value", new FromAiResult("count", null, "INTEGER", null)));
325+
.thenReturn(Map.of("value", new FromAiResult("count", "INTEGER", null, null, null, false)));
317326

318327
AbstractToolFacade toolFacade = createToolFacade();
319328

@@ -326,9 +335,9 @@ void testResolveParameterValueWithPureFromAiExpressionPreservesIntegerType() {
326335
@Test
327336
void testResolveParameterValueWithCompositeExpression() {
328337
when(evaluator.evaluate(eq(Map.of("value", "=fromAi('subject')")), eq(Map.of())))
329-
.thenReturn(Map.of("value", new FromAiResult("subject", null, "STRING", null)));
338+
.thenReturn(Map.of("value", new FromAiResult("subject", "STRING", null, null, null, false)));
330339
when(evaluator.evaluate(eq(Map.of("value", "=fromAi('name')")), eq(Map.of())))
331-
.thenReturn(Map.of("value", new FromAiResult("name", null, "STRING", null)));
340+
.thenReturn(Map.of("value", new FromAiResult("name", "STRING", null, null, null, false)));
332341
when(evaluator.evaluate(
333342
eq(Map.of("value", "='Generated by AI: ' + 'Hello World' + ' by ' + 'John'")), eq(Map.of())))
334343
.thenReturn(Map.of("value", "Generated by AI: Hello World by John"));
@@ -345,7 +354,7 @@ void testResolveParameterValueWithCompositeExpression() {
345354
@Test
346355
void testResolveParameterValueWithCompositeExpressionUsesDefaults() {
347356
when(evaluator.evaluate(eq(Map.of("value", "=fromAi('subject')")), eq(Map.of())))
348-
.thenReturn(Map.of("value", new FromAiResult("subject", null, "STRING", "Default Subject")));
357+
.thenReturn(Map.of("value", new FromAiResult("subject", "STRING", null, "Default Subject", null, false)));
349358
when(evaluator.evaluate(eq(Map.of("value", "='Title: ' + 'Default Subject'")), eq(Map.of())))
350359
.thenReturn(Map.of("value", "Title: Default Subject"));
351360

@@ -359,7 +368,7 @@ void testResolveParameterValueWithCompositeExpressionUsesDefaults() {
359368
@Test
360369
void testResolveParameterValueWithListOfFromAiExpressions() {
361370
when(evaluator.evaluate(eq(Map.of("value", "=fromAi('Email__0')")), eq(Map.of())))
362-
.thenReturn(Map.of("value", new FromAiResult("Email__0", null, "STRING", null)));
371+
.thenReturn(Map.of("value", new FromAiResult("Email__0", "STRING", null, null, null, false)));
363372

364373
AbstractToolFacade toolFacade = createToolFacade();
365374

0 commit comments

Comments
 (0)