Skip to content

Commit 141a5fd

Browse files
authored
Merge branch 'main' into develop
2 parents 555aeac + 61f56e8 commit 141a5fd

File tree

3 files changed

+77
-4
lines changed

3 files changed

+77
-4
lines changed

lua/codecompanion/adapters/http/anthropic.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ return {
157157
local system = vim
158158
.iter(messages)
159159
:filter(function(msg)
160-
return msg.role == "system"
160+
return msg.role == "system" and msg.content and msg.content ~= ""
161161
end)
162162
:map(function(msg)
163163
return {

lua/codecompanion/init.lua

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ local log = require("codecompanion.utils.log")
44

55
local api = vim.api
66

7+
local _version
8+
79
-- Lazy load context_utils
810
local context_utils
911
local function get_context(bufnr, args)
@@ -342,11 +344,37 @@ CodeCompanion.has = function(feature)
342344
return features
343345
end
344346

347+
---Output the plugin version
348+
---@return string|nil
349+
CodeCompanion.version = function()
350+
if _version then
351+
return _version
352+
end
353+
354+
local ok, version = pcall(function()
355+
return require("codecompanion.utils.files")
356+
.read(
357+
vim.fs.joinpath(
358+
string.sub(debug.getinfo(1).source, 2, string.len("/lua/codecompanion/init.lua") * -1),
359+
"version.txt"
360+
)
361+
)
362+
:gsub("%s+", "")
363+
end)
364+
365+
if ok then
366+
_version = version
367+
return _version
368+
end
369+
370+
return nil
371+
end
372+
345373
---Handle adapter configuration merging
346374
---@param adapter_type string
347375
---@param opts table
348376
---@return nil
349-
local function handle_adapter_config(adapter_type, opts)
377+
local function adapter_config(adapter_type, opts)
350378
if opts and opts.adapters and opts.adapters[adapter_type] then
351379
if config.adapters[adapter_type].opts.show_presets then
352380
local adapters_util = require("codecompanion.utils.adapters")
@@ -367,8 +395,8 @@ CodeCompanion.setup = function(opts)
367395
-- Setup the plugin's config
368396
config.setup(opts)
369397

370-
handle_adapter_config("acp", opts)
371-
handle_adapter_config("http", opts)
398+
adapter_config("acp", opts)
399+
adapter_config("http", opts)
372400

373401
local cmds = require("codecompanion.commands")
374402
for _, cmd in ipairs(cmds) do

tests/adapters/http/test_anthropic.lua

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,51 @@ T["Anthropic adapter"]["form_messages"]["consolidates consecutive user messages
384384
}, adapter.handlers.form_messages(adapter, messages).messages)
385385
end
386386

387+
T["Anthropic adapter"]["form_messages"]["handles empty messages without errors"] = function()
388+
local messages_with_empty_content = {
389+
{ content = "", role = "user" },
390+
{ content = "Valid message", role = "user" },
391+
{ content = "", role = "assistant" },
392+
{ content = "", role = "system" },
393+
}
394+
395+
local result = adapter.handlers.form_messages(adapter, messages_with_empty_content)
396+
397+
h.eq(#result.messages, 2)
398+
h.eq(result.messages[1].role, "user")
399+
h.eq(result.messages[1].content[1].text, "<prompt></prompt>")
400+
h.eq(result.messages[1].content[2].text, "Valid message")
401+
h.eq(result.messages[2].role, "assistant")
402+
end
403+
404+
T["Anthropic adapter"]["form_messages"]["filters out empty system messages"] = function()
405+
local messages_with_empty_system = {
406+
{ content = "", role = "system" },
407+
{ content = "Valid system message", role = "system" },
408+
{ content = "User message", role = "user" },
409+
}
410+
411+
local result = adapter.handlers.form_messages(adapter, messages_with_empty_system)
412+
413+
h.eq(#result.system, 1)
414+
h.eq(result.system[1].text, "Valid system message")
415+
h.eq(#result.messages, 1)
416+
h.eq(result.messages[1].content[1].text, "User message")
417+
end
418+
419+
T["Anthropic adapter"]["form_messages"]["handles all empty messages"] = function()
420+
local all_empty_messages = {
421+
{ content = "", role = "user" },
422+
{ content = "", role = "system" },
423+
}
424+
425+
local result = adapter.handlers.form_messages(adapter, all_empty_messages)
426+
427+
h.eq(result.system, nil)
428+
h.eq(result.messages[1].role, "user")
429+
h.eq(result.messages[1].content[1].text, "<prompt></prompt>")
430+
end
431+
387432
T["Anthropic adapter"]["form_messages"]["can handle reasoning"] = function()
388433
local messages = {
389434
{

0 commit comments

Comments
 (0)