@@ -316,30 +316,35 @@ You are running as an agent - please keep going until the user's query is comple
316
316
return
317
317
}
318
318
319
- raw , err := json .Marshal (acc .Messages ())
320
- if err != nil {
321
- httpapi .Write (ctx , w , http .StatusInternalServerError , codersdk.Response {
322
- Message : "Failed to marshal chat message" ,
323
- Detail : err .Error (),
324
- })
325
- return
326
- }
327
- messages = append (messages , acc .Messages ()... )
319
+ // acc.Messages() may sometimes return nil. Serializing this
320
+ // will cause a pq error: "cannot extract elements from a scalar".
321
+ newMessages := append ([]aisdk.Message {}, acc .Messages ()... )
322
+ if len (newMessages ) > 0 {
323
+ raw , err := json .Marshal (newMessages )
324
+ if err != nil {
325
+ httpapi .Write (ctx , w , http .StatusInternalServerError , codersdk.Response {
326
+ Message : "Failed to marshal chat message" ,
327
+ Detail : err .Error (),
328
+ })
329
+ return
330
+ }
331
+ messages = append (messages , newMessages ... )
328
332
329
- // Insert these messages into the database!
330
- _ , err = api .Database .InsertChatMessages (ctx , database.InsertChatMessagesParams {
331
- ChatID : chat .ID ,
332
- CreatedAt : dbtime .Now (),
333
- Model : req .Model ,
334
- Provider : provider .Provider ,
335
- Content : raw ,
336
- })
337
- if err != nil {
338
- httpapi .Write (ctx , w , http .StatusInternalServerError , codersdk.Response {
339
- Message : "Failed to insert chat messages" ,
340
- Detail : err .Error (),
333
+ // Insert these messages into the database!
334
+ _ , err = api .Database .InsertChatMessages (ctx , database.InsertChatMessagesParams {
335
+ ChatID : chat .ID ,
336
+ CreatedAt : dbtime .Now (),
337
+ Model : req .Model ,
338
+ Provider : provider .Provider ,
339
+ Content : raw ,
341
340
})
342
- return
341
+ if err != nil {
342
+ httpapi .Write (ctx , w , http .StatusInternalServerError , codersdk.Response {
343
+ Message : "Failed to insert chat messages" ,
344
+ Detail : err .Error (),
345
+ })
346
+ return
347
+ }
343
348
}
344
349
345
350
if acc .FinishReason () == aisdk .FinishReasonToolCalls {
0 commit comments