@@ -23,80 +23,88 @@ public static IEnumerable<ChatMessage> AsChatMessages(
2323 {
2424 var role = MapChatRole ( message . Role ) ;
2525
26- if ( message is AGUIToolMessage toolMessage )
26+ switch ( message )
2727 {
28- object ? result ;
29- if ( string . IsNullOrEmpty ( toolMessage . Content ) )
28+ case AGUIToolMessage toolMessage :
3029 {
31- result = toolMessage . Content ;
32- }
33- else
34- {
35- // Try to deserialize as JSON, but fall back to string if it fails
36- try
30+ object ? result ;
31+ if ( string . IsNullOrEmpty ( toolMessage . Content ) )
3732 {
38- result = JsonSerializer . Deserialize ( toolMessage . Content , AGUIJsonSerializerContext . Default . JsonElement ) ;
33+ result = toolMessage . Content ;
3934 }
40- catch ( JsonException )
35+ else
4136 {
42- result = toolMessage . Content ;
37+ // Try to deserialize as JSON, but fall back to string if it fails
38+ try
39+ {
40+ result = JsonSerializer . Deserialize ( toolMessage . Content , AGUIJsonSerializerContext . Default . JsonElement ) ;
41+ }
42+ catch ( JsonException )
43+ {
44+ result = toolMessage . Content ;
45+ }
4346 }
44- }
4547
46- yield return new ChatMessage (
47- role ,
48- [
49- new FunctionResultContent (
50- toolMessage . ToolCallId ,
51- result )
52- ] ) ;
53- }
54- else if ( message is AGUIAssistantMessage assistantMessage && assistantMessage . ToolCalls is { Length : > 0 } )
55- {
56- var contents = new List < AIContent > ( ) ;
57-
58- if ( ! string . IsNullOrEmpty ( assistantMessage . Content ) )
59- {
60- contents . Add ( new TextContent ( assistantMessage . Content ) ) ;
48+ yield return new ChatMessage (
49+ role ,
50+ [
51+ new FunctionResultContent (
52+ toolMessage . ToolCallId ,
53+ result )
54+ ] ) ;
55+ break ;
6156 }
6257
63- // Add tool calls
64- foreach ( var toolCall in assistantMessage . ToolCalls )
58+ case AGUIAssistantMessage assistantMessage when assistantMessage . ToolCalls is { Length : > 0 } :
6559 {
66- Dictionary < string , object ? > ? arguments = null ;
67- if ( ! string . IsNullOrEmpty ( toolCall . Function . Arguments ) )
60+ var contents = new List < AIContent > ( ) ;
61+
62+ if ( ! string . IsNullOrEmpty ( assistantMessage . Content ) )
6863 {
69- arguments = ( Dictionary < string , object ? > ? ) JsonSerializer . Deserialize (
70- toolCall . Function . Arguments ,
71- jsonSerializerOptions . GetTypeInfo ( typeof ( Dictionary < string , object ? > ) ) ) ;
64+ contents . Add ( new TextContent ( assistantMessage . Content ) ) ;
7265 }
7366
74- contents . Add ( new FunctionCallContent (
75- toolCall . Id ,
76- toolCall . Function . Name ,
77- arguments ) ) ;
78- }
67+ // Add tool calls
68+ foreach ( var toolCall in assistantMessage . ToolCalls )
69+ {
70+ Dictionary < string , object ? > ? arguments = null ;
71+ if ( ! string . IsNullOrEmpty ( toolCall . Function . Arguments ) )
72+ {
73+ arguments = ( Dictionary < string , object ? > ? ) JsonSerializer . Deserialize (
74+ toolCall . Function . Arguments ,
75+ jsonSerializerOptions . GetTypeInfo ( typeof ( Dictionary < string , object ? > ) ) ) ;
76+ }
77+
78+ contents . Add ( new FunctionCallContent (
79+ toolCall . Id ,
80+ toolCall . Function . Name ,
81+ arguments ) ) ;
82+ }
7983
80- yield return new ChatMessage ( role , contents )
81- {
82- MessageId = message . Id
83- } ;
84- }
85- else
86- {
87- string content = message switch
88- {
89- AGUIDeveloperMessage dev => dev . Content ,
90- AGUISystemMessage sys => sys . Content ,
91- AGUIUserMessage user => user . Content ,
92- AGUIAssistantMessage asst => asst . Content ,
93- _ => string . Empty
94- } ;
84+ yield return new ChatMessage ( role , contents )
85+ {
86+ MessageId = message . Id
87+ } ;
88+ break ;
89+ }
9590
96- yield return new ChatMessage ( role , content )
91+ default :
9792 {
98- MessageId = message . Id
99- } ;
93+ string content = message switch
94+ {
95+ AGUIDeveloperMessage dev => dev . Content ,
96+ AGUISystemMessage sys => sys . Content ,
97+ AGUIUserMessage user => user . Content ,
98+ AGUIAssistantMessage asst => asst . Content ,
99+ _ => string . Empty
100+ } ;
101+
102+ yield return new ChatMessage ( role , content )
103+ {
104+ MessageId = message . Id
105+ } ;
106+ break ;
107+ }
100108 }
101109 }
102110 }
0 commit comments