2424import org .springframework .aot .hint .MemberCategory ;
2525import org .springframework .aot .hint .RuntimeHints ;
2626import org .springframework .aot .hint .RuntimeHintsRegistrar ;
27+ import org .springframework .aot .hint .TypeReference ;
2728import org .springframework .core .io .ClassPathResource ;
2829import org .springframework .lang .NonNull ;
2930import org .springframework .lang .Nullable ;
@@ -34,22 +35,18 @@ public class SpringAiCoreRuntimeHints implements RuntimeHintsRegistrar {
3435
3536 @ Override
3637 public void registerHints (@ NonNull RuntimeHints hints , @ Nullable ClassLoader classLoader ) {
37- //
38+
3839 var chatTypes = Set .of (AbstractMessage .class , AssistantMessage .class , ToolResponseMessage .class , Message .class ,
39- AssistantMessage . ToolCall . class , MessageType .class , UserMessage . class , SystemMessage .class ,
40- Content .class , MediaContent .class );
40+ ToolCallback . class , ToolDefinition .class , AssistantMessage . ToolCall . class , MessageType .class ,
41+ UserMessage . class , SystemMessage . class , Content .class , MediaContent .class );
4142
4243 var memberCategories = MemberCategory .values ();
43- for (var c : chatTypes ) {
44- hints .reflection ().registerType (c , memberCategories );
45- System .out .println ("registering " + c );
46- }
4744
48- // Register tool-related types for reflection
49- var toolTypes = Set .of (ToolCallback .class , ToolDefinition .class );
50- for (var c : toolTypes ) {
45+ for (var c : chatTypes ) {
5146 hints .reflection ().registerType (c , memberCategories );
52- System .out .println ("registering " + c );
47+ var innerClassesFor = AiRuntimeHints .findInnerClassesFor (c );
48+ for (var cc : innerClassesFor )
49+ hints .reflection ().registerType (cc , memberCategories );
5350 }
5451
5552 for (var r : Set .of ("embedding/embedding-model-dimensions.properties" )) {
0 commit comments