diff --git a/README.md b/README.md index 84aa201a..17a24dab 100644 --- a/README.md +++ b/README.md @@ -369,6 +369,11 @@ Displays currently used agents for chat and command instructions. Choose a new agent based on its name, listing options based on the current buffer (chat agents if current buffer is a chat and command agents otherwise). The agent setting is persisted on disk across Neovim instances. +#### `:GpListAgents` <!-- {doc=:GpListAgents} --> + +Lists all available agents. + + ## Image commands #### `:GpImage` <!-- {doc=:GpImage} --> diff --git a/doc/gp.nvim.txt b/doc/gp.nvim.txt index 81d7c6ea..4b1fb650 100644 --- a/doc/gp.nvim.txt +++ b/doc/gp.nvim.txt @@ -483,6 +483,10 @@ buffer (chat agents if current buffer is a chat and command agents otherwise). The agent setting is persisted on disk across Neovim instances. +:GpListAgents *:GpListAgents* + +Lists all available agents. + IMAGE COMMANDS *gp.nvim-image-commands* diff --git a/lua/gp/init.lua b/lua/gp/init.lua index 128914cb..8eb71822 100644 --- a/lua/gp/init.lua +++ b/lua/gp/init.lua @@ -1513,6 +1513,20 @@ M.cmd.Agent = function(params) end end +M.cmd.ListAgents = function() + local messages = { "List of available agents (* - Chat Agent, # - Command Agent):" } + for name, agent in pairs(M.agents) do + if name == M._state.chat_agent then + table.insert(messages, "* " .. name) + elseif name == M._state.command_agent then + table.insert(messages, "# " .. name) + else + table.insert(messages, "- " .. name) + end + end + M.logger.info(table.concat(messages, "\n")) +end + M.cmd.NextAgent = function() local buf = vim.api.nvim_get_current_buf() local file_name = vim.api.nvim_buf_get_name(buf)