Class: Sxn::MCP::Tools::Worktrees::ListWorktrees

Inherits:
MCP::Tool
  • Object
show all
Defined in:
lib/sxn/mcp/tools/worktrees.rb

Overview

List worktrees in a session

Class Method Summary collapse

Class Method Details

.call(server_context:, session_name: nil) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/sxn/mcp/tools/worktrees.rb', line 23

def call(server_context:, session_name: nil)
  BaseTool.ensure_initialized!(server_context)

  BaseTool::ErrorMapping.wrap do
    worktree_manager = server_context[:worktree_manager]
    worktrees = worktree_manager.list_worktrees(session_name: session_name)

    if worktrees.empty?
      BaseTool.text_response("No worktrees found in the session.")
    else
      formatted = worktrees.map do |w|
        status_icon = case w[:status]
                      when "clean" then "[clean]"
                      when "modified" then "[modified]"
                      when "staged" then "[staged]"
                      when "untracked" then "[untracked]"
                      when "missing" then "[missing]"
                      else "[#{w[:status]}]"
                      end
        "- #{w[:project]} (#{w[:branch]}) #{status_icon}\n  #{w[:path]}"
      end.join("\n")

      BaseTool.text_response("Worktrees (#{worktrees.length}):\n#{formatted}")
    end
  end
end