diff --git a/lua/avante/llm.lua b/lua/avante/llm.lua index fb34e76..662531d 100644 --- a/lua/avante/llm.lua +++ b/lua/avante/llm.lua @@ -357,7 +357,7 @@ function M._stream(opts) end -- If stream is not enabled, then handle the response here - if spec.body.stream == false and result.status == 200 then + if (spec.body.stream == nil or spec.body.stream == false) and result.status == 200 then vim.schedule(function() completed = true parse_response_without_stream(result.body) diff --git a/lua/avante/providers/bedrock.lua b/lua/avante/providers/bedrock.lua index 0906046..bbc1bc4 100644 --- a/lua/avante/providers/bedrock.lua +++ b/lua/avante/providers/bedrock.lua @@ -41,6 +41,16 @@ function M.parse_stream_data(ctx, data, opts) end end +function M.parse_response_without_stream(data, event_state, opts) + local bedrock_match = data:gmatch("exception(%b{})") + opts.on_chunk("\n**Exception caught**\n\n") + for bedrock_data_match in bedrock_match do + local jsn = vim.json.decode(bedrock_data_match) + opts.on_chunk("- " .. jsn.message .. "\n") + end + vim.schedule(function() opts.on_stop({ reason = "complete" }) end) +end + ---@param provider AvanteBedrockProviderFunctor ---@param prompt_opts AvantePromptOptions ---@return table