@@ -119,6 +119,24 @@ module OpenAI {
119119 "assistant"
120120 }
121121
122+ /** Gets the `item` dictionary passed to `realtime.connect().conversation.item.create`. */
123+ private API:: Node realtimeItem ( ) {
124+ result =
125+ classRef ( )
126+ .getMember ( "realtime" )
127+ .getMember ( "connect" )
128+ .getReturn ( )
129+ .getMember ( "conversation" )
130+ .getMember ( "item" )
131+ .getMember ( "create" )
132+ .getKeywordParameter ( "item" )
133+ }
134+
135+ /** Gets the text content of a realtime conversation item. */
136+ private API:: Node realtimeItemContent ( API:: Node item ) {
137+ result = item .getSubscript ( "content" ) .getASubscript ( ) .getSubscript ( "text" )
138+ }
139+
122140 /**
123141 * Gets role-filtered system/developer/assistant message content sinks that
124142 * MaD cannot express.
@@ -131,6 +149,10 @@ module OpenAI {
131149 exists ( API:: Node call | call = threadMessageCreate ( ) and threadRoleIsAssistant ( call ) |
132150 result = call .getKeywordParameter ( "content" )
133151 )
152+ or
153+ exists ( API:: Node item | item = realtimeItem ( ) and isSystemOrDevMessage ( item ) |
154+ result = realtimeItemContent ( item )
155+ )
134156 }
135157
136158 /**
@@ -148,18 +170,8 @@ module OpenAI {
148170 result = call .getKeywordParameter ( "content" )
149171 )
150172 or
151- // realtime conversation items, role cannot be statically resolved in general
152- result =
153- classRef ( )
154- .getMember ( "realtime" )
155- .getMember ( "connect" )
156- .getReturn ( )
157- .getMember ( "conversation" )
158- .getMember ( "item" )
159- .getMember ( "create" )
160- .getKeywordParameter ( "item" )
161- .getSubscript ( "content" )
162- .getASubscript ( )
163- .getSubscript ( "text" )
173+ exists ( API:: Node item | item = realtimeItem ( ) and not isSystemOrDevMessage ( item ) |
174+ result = realtimeItemContent ( item )
175+ )
164176 }
165177}
0 commit comments