@@ -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