@@ -89,7 +89,6 @@ def push(
8989 content :,
9090 id : nil ,
9191 name : nil ,
92- upload_ids : nil ,
9392 thinking : nil ,
9493 thinking_signature : nil ,
9594 redacted_thinking_signature : nil
@@ -98,7 +97,6 @@ def push(
9897 new_message = { type : type , content : content }
9998 new_message [ :name ] = name . to_s if name
10099 new_message [ :id ] = id . to_s if id
101- new_message [ :upload_ids ] = upload_ids if upload_ids
102100 new_message [ :thinking ] = thinking if thinking
103101 new_message [ :thinking_signature ] = thinking_signature if thinking_signature
104102 new_message [
@@ -115,10 +113,28 @@ def has_tools?
115113 tools . present?
116114 end
117115
118- # TODO migrate to new API
119116 def encoded_uploads ( message )
120- return [ ] if message [ :upload_ids ] . blank?
121- UploadEncoder . encode ( upload_ids : message [ :upload_ids ] , max_pixels : max_pixels )
117+ if message [ :content ] . is_a? ( Array )
118+ upload_ids =
119+ message [ :content ]
120+ . map do |content |
121+ content [ :upload_id ] if content . is_a? ( Hash ) && content . key? ( :upload_id )
122+ end
123+ . compact
124+ if !upload_ids . empty?
125+ return UploadEncoder . encode ( upload_ids : upload_ids , max_pixels : max_pixels )
126+ end
127+ end
128+
129+ [ ]
130+ end
131+
132+ def text_only ( message )
133+ if message [ :content ] . is_a? ( Array )
134+ message [ :content ] . map { |element | element if element . is_a? ( String ) } . compact . join
135+ else
136+ message [ :content ]
137+ end
122138 end
123139
124140 def encode_upload ( upload_id )
@@ -165,7 +181,6 @@ def validate_message(message)
165181 content
166182 id
167183 name
168- upload_ids
169184 thinking
170185 thinking_signature
171186 redacted_thinking_signature
@@ -174,13 +189,6 @@ def validate_message(message)
174189 raise ArgumentError , "message contains invalid keys: #{ invalid_keys } "
175190 end
176191
177- if message [ :type ] == :upload_ids && !message [ :upload_ids ] . is_a? ( Array )
178- raise ArgumentError , "upload_ids must be an array of ids"
179- end
180-
181- if message [ :upload_ids ] . present? && message [ :type ] != :user
182- raise ArgumentError , "upload_ids are only supported for users"
183- end
184192 if message [ :content ] . is_a? ( Array )
185193 message [ :content ] . each do |content |
186194 if !content . is_a? ( String ) && !( content . is_a? ( Hash ) && content . keys == [ :upload_id ] )
0 commit comments