Skip to content
This repository was archived by the owner on Jul 22, 2025. It is now read-only.

Commit 77d5af2

Browse files
committed
fix nova
1 parent 4390e83 commit 77d5af2

File tree

2 files changed

+22
-14
lines changed

2 files changed

+22
-14
lines changed

lib/completions/dialects/nova.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ def user_msg(msg)
155155
end
156156
end
157157

158-
{ role: "user", content: msg[:content], images: images }
158+
{ role: "user", content: prompt.text_only(msg), images: images }
159159
end
160160

161161
def model_msg(msg)

lib/completions/prompt.rb

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)