@@ -88,64 +88,43 @@ public static Event createEscalateEvent(String id) {
8888
8989 public static ImmutableList <Object > simplifyEvents (List <Event > events ) {
9090 return events .stream ()
91+ .map (event -> event .author () + ": " + formatEventContent (event ))
92+ .collect (toImmutableList ());
93+ }
94+
95+ private static String formatEventContent (Event event ) {
96+ return event
97+ .content ()
98+ .flatMap (content -> content .parts ())
9199 .map (
92- event -> {
93- if (event .content ().isPresent () && event .content ().get ().parts ().isPresent ()) {
94- List <Part > parts = event .content ().get ().parts ().get ();
95- if (parts .size () == 1 ) {
96- Part part = parts .get (0 );
97- if (part .text ().isPresent ()) {
98- return event .author () + ": " + part .text ().get ();
99- } else if (part .functionCall ().isPresent ()) {
100- // Custom formatting for FunctionCall
101- FunctionCall fc = part .functionCall ().get ();
102- String argsString =
103- fc .args ().map (Object ::toString ).orElse ("{}" ); // Handle optional args
104- return String .format (
105- "%s: FunctionCall(name=%s, args=%s)" ,
106- event .author (), fc .name ().orElse ("" ), argsString );
107- } else if (part .functionResponse ().isPresent ()) {
108- // Custom formatting for FunctionResponse
109- FunctionResponse fr = part .functionResponse ().get ();
110- String responseString =
111- fr .response ()
112- .map (Object ::toString )
113- .orElse ("{}" ); // Handle optional response
114- return String .format (
115- "%s: FunctionResponse(name=%s, response=%s)" ,
116- event .author (), fr .name ().orElse ("" ), responseString );
117- }
118- } else { // Multiple parts, return the list of parts for simplicity
119- // Apply custom formatting to parts within the list if needed
120- String partsString =
121- parts .stream ()
122- .map (
123- part -> {
124- if (part .text ().isPresent ()) {
125- return part .text ().get ();
126- } else if (part .functionCall ().isPresent ()) {
127- FunctionCall fc = part .functionCall ().get ();
128- String argsString = fc .args ().map (Object ::toString ).orElse ("{}" );
129- return String .format (
130- "FunctionCall(name=%s, args=%s)" ,
131- fc .name ().orElse ("" ), argsString );
132- } else if (part .functionResponse ().isPresent ()) {
133- FunctionResponse fr = part .functionResponse ().get ();
134- String responseString =
135- fr .response ().map (Object ::toString ).orElse ("{}" );
136- return String .format (
137- "FunctionResponse(name=%s, response=%s)" ,
138- fr .name ().orElse ("" ), responseString );
139- }
140- return part .toString (); // Fallback
141- })
142- .collect (joining (", " ));
143- return event .author () + ": [" + partsString + "]" ;
144- }
100+ parts -> {
101+ if (parts .size () == 1 ) {
102+ return formatPart (parts .get (0 ));
103+ } else {
104+ String contentString =
105+ parts .stream ().map (TestUtils ::formatPart ).collect (joining (", " ));
106+ return "[" + contentString + "]" ;
145107 }
146- return event .author () + ": [NO_CONTENT]" ; // Fallback if no content/parts
147108 })
148- .collect (toImmutableList ());
109+ .orElse ("[NO_CONTENT]" );
110+ }
111+
112+ private static String formatPart (Part part ) {
113+ if (part .text ().isPresent ()) {
114+ return part .text ().get ();
115+ }
116+ if (part .functionCall ().isPresent ()) {
117+ FunctionCall fc = part .functionCall ().get ();
118+ String argsString = fc .args ().map (Object ::toString ).orElse ("{}" );
119+ return String .format ("FunctionCall(name=%s, args=%s)" , fc .name ().orElse ("" ), argsString );
120+ }
121+ if (part .functionResponse ().isPresent ()) {
122+ FunctionResponse fr = part .functionResponse ().get ();
123+ String responseString = fr .response ().map (Object ::toString ).orElse ("{}" );
124+ return String .format (
125+ "FunctionResponse(name=%s, response=%s)" , fr .name ().orElse ("" ), responseString );
126+ }
127+ return part .toString (); // Fallback
149128 }
150129
151130 public static void assertEqualIgnoringFunctionIds (
0 commit comments