agents
parent
50c50b94cc
commit
6f18060a51
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,67 @@
|
||||
-- Statusline components for nvim-claude
|
||||
local M = {}
|
||||
|
||||
-- Get active agent count and summary
|
||||
function M.get_agent_status()
|
||||
local registry = require('nvim-claude.registry')
|
||||
|
||||
-- Validate agents to update their status
|
||||
registry.validate_agents()
|
||||
|
||||
local agents = registry.get_project_agents()
|
||||
local active_count = 0
|
||||
local latest_progress = nil
|
||||
local latest_task = nil
|
||||
|
||||
for _, agent in ipairs(agents) do
|
||||
if agent.status == 'active' then
|
||||
active_count = active_count + 1
|
||||
-- Get the most recently updated active agent
|
||||
if not latest_progress or (agent.last_update and agent.last_update > (latest_progress.last_update or 0)) then
|
||||
latest_progress = agent.progress
|
||||
latest_task = agent.task
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if active_count == 0 then
|
||||
return ''
|
||||
elseif active_count == 1 and latest_progress then
|
||||
-- Show single agent progress
|
||||
local task_short = latest_task
|
||||
if #latest_task > 20 then
|
||||
task_short = latest_task:sub(1, 17) .. '...'
|
||||
end
|
||||
return string.format('🤖 %s: %s', task_short, latest_progress)
|
||||
else
|
||||
-- Show count of multiple agents
|
||||
return string.format('🤖 %d agents', active_count)
|
||||
end
|
||||
end
|
||||
|
||||
-- Lualine component
|
||||
function M.lualine_component()
|
||||
return {
|
||||
M.get_agent_status,
|
||||
cond = function()
|
||||
-- Only show if there are active agents
|
||||
local status = M.get_agent_status()
|
||||
return status ~= ''
|
||||
end,
|
||||
on_click = function()
|
||||
-- Open agent list on click
|
||||
vim.cmd('ClaudeAgents')
|
||||
end,
|
||||
}
|
||||
end
|
||||
|
||||
-- Simple string function for custom statuslines
|
||||
function M.statusline()
|
||||
local status = M.get_agent_status()
|
||||
if status ~= '' then
|
||||
return ' ' .. status .. ' '
|
||||
end
|
||||
return ''
|
||||
end
|
||||
|
||||
return M
|
Loading…
Reference in New Issue