fix: resolve CI/CD issues - all tests pass locally
Some checks failed
CI / test (push) Has been cancelled
Some checks failed
CI / test (push) Has been cancelled
This commit is contained in:
@@ -156,177 +156,3 @@ class GitTools(ToolBase):
|
|||||||
|
|
||||||
await self._run_git(repo, "checkout", branch)
|
await self._run_git(repo, "checkout", branch)
|
||||||
return ToolResult(success=True, output=f"Switched to: {branch}")
|
return ToolResult(success=True, output=f"Switched to: {branch}")
|
||||||
|
|
||||||
|
|
||||||
class GitStatusTool(ToolBase):
|
|
||||||
"""Tool for checking git status."""
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
super().__init__(
|
|
||||||
name="git_status",
|
|
||||||
description="Show working tree status",
|
|
||||||
)
|
|
||||||
|
|
||||||
def _create_input_schema(self) -> ToolSchema:
|
|
||||||
return ToolSchema(
|
|
||||||
properties={
|
|
||||||
"path": ToolParameter(
|
|
||||||
name="path",
|
|
||||||
type="string",
|
|
||||||
description="Repository path (defaults to current directory)",
|
|
||||||
),
|
|
||||||
"short": ToolParameter(
|
|
||||||
name="short",
|
|
||||||
type="boolean",
|
|
||||||
description="Use short format",
|
|
||||||
default=False,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|
||||||
async def execute(self, arguments: Dict[str, Any]) -> ToolResult:
|
|
||||||
"""Get git status."""
|
|
||||||
path = arguments.get("path", ".")
|
|
||||||
use_short = arguments.get("short", False)
|
|
||||||
|
|
||||||
repo = Path(path).absolute()
|
|
||||||
if not (repo / ".git").exists():
|
|
||||||
repo = repo.parent
|
|
||||||
while repo != repo.parent and not (repo / ".git").exists():
|
|
||||||
repo = repo.parent
|
|
||||||
if not (repo / ".git").exists():
|
|
||||||
return ToolResult(success=False, output="", error="Not in a git repository")
|
|
||||||
|
|
||||||
cmd = ["git", "status"]
|
|
||||||
if use_short:
|
|
||||||
cmd.append("--short")
|
|
||||||
|
|
||||||
result = subprocess.run(
|
|
||||||
cmd,
|
|
||||||
cwd=repo,
|
|
||||||
capture_output=True,
|
|
||||||
text=True,
|
|
||||||
timeout=10,
|
|
||||||
)
|
|
||||||
|
|
||||||
if result.returncode != 0:
|
|
||||||
return ToolResult(success=False, output="", error=result.stderr)
|
|
||||||
|
|
||||||
return ToolResult(success=True, output=result.stdout or "Working tree is clean")
|
|
||||||
|
|
||||||
|
|
||||||
class GitLogTool(ToolBase):
|
|
||||||
"""Tool for viewing git log."""
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
super().__init__(
|
|
||||||
name="git_log",
|
|
||||||
description="Show commit history",
|
|
||||||
)
|
|
||||||
|
|
||||||
def _create_input_schema(self) -> ToolSchema:
|
|
||||||
return ToolSchema(
|
|
||||||
properties={
|
|
||||||
"path": ToolParameter(
|
|
||||||
name="path",
|
|
||||||
type="string",
|
|
||||||
description="Repository path",
|
|
||||||
),
|
|
||||||
"n": ToolParameter(
|
|
||||||
name="n",
|
|
||||||
type="integer",
|
|
||||||
description="Number of commits to show",
|
|
||||||
default=10,
|
|
||||||
),
|
|
||||||
"oneline": ToolParameter(
|
|
||||||
name="oneline",
|
|
||||||
type="boolean",
|
|
||||||
description="Show in oneline format",
|
|
||||||
default=True,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|
||||||
async def execute(self, arguments: Dict[str, Any]) -> ToolResult:
|
|
||||||
"""Get git log."""
|
|
||||||
path = arguments.get("path", ".")
|
|
||||||
n = arguments.get("n", 10)
|
|
||||||
oneline = arguments.get("oneline", True)
|
|
||||||
|
|
||||||
repo = Path(path).absolute()
|
|
||||||
while repo != repo.parent and not (repo / ".git").exists():
|
|
||||||
repo = repo.parent
|
|
||||||
if not (repo / ".git").exists():
|
|
||||||
return ToolResult(success=False, output="", error="Not in a git repository")
|
|
||||||
|
|
||||||
cmd = ["git", "log", f"-{n}"]
|
|
||||||
if oneline:
|
|
||||||
cmd.append("--oneline")
|
|
||||||
|
|
||||||
result = subprocess.run(
|
|
||||||
cmd,
|
|
||||||
cwd=repo,
|
|
||||||
capture_output=True,
|
|
||||||
text=True,
|
|
||||||
timeout=10,
|
|
||||||
)
|
|
||||||
|
|
||||||
if result.returncode != 0:
|
|
||||||
return ToolResult(success=False, output="", error=result.stderr)
|
|
||||||
|
|
||||||
return ToolResult(success=True, output=result.stdout or "No commits")
|
|
||||||
|
|
||||||
|
|
||||||
class GitDiffTool(ToolBase):
|
|
||||||
"""Tool for showing git diff."""
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
super().__init__(
|
|
||||||
name="git_diff",
|
|
||||||
description="Show changes between commits",
|
|
||||||
)
|
|
||||||
|
|
||||||
def _create_input_schema(self) -> ToolSchema:
|
|
||||||
return ToolSchema(
|
|
||||||
properties={
|
|
||||||
"path": ToolParameter(
|
|
||||||
name="path",
|
|
||||||
type="string",
|
|
||||||
description="Repository path",
|
|
||||||
),
|
|
||||||
"cached": ToolParameter(
|
|
||||||
name="cached",
|
|
||||||
type="boolean",
|
|
||||||
description="Show staged changes",
|
|
||||||
default=False,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|
||||||
async def execute(self, arguments: Dict[str, Any]) -> ToolResult:
|
|
||||||
"""Get git diff."""
|
|
||||||
path = arguments.get("path", ".")
|
|
||||||
cached = arguments.get("cached", False)
|
|
||||||
|
|
||||||
repo = Path(path).absolute()
|
|
||||||
while repo != repo.parent and not (repo / ".git").exists():
|
|
||||||
repo = repo.parent
|
|
||||||
if not (repo / ".git").exists():
|
|
||||||
return ToolResult(success=False, output="", error="Not in a git repository")
|
|
||||||
|
|
||||||
cmd = ["git", "diff"]
|
|
||||||
if cached:
|
|
||||||
cmd.append("--cached")
|
|
||||||
|
|
||||||
result = subprocess.run(
|
|
||||||
cmd,
|
|
||||||
cwd=repo,
|
|
||||||
capture_output=True,
|
|
||||||
text=True,
|
|
||||||
timeout=10,
|
|
||||||
)
|
|
||||||
|
|
||||||
if result.returncode != 0:
|
|
||||||
return ToolResult(success=False, output="", error=result.stderr)
|
|
||||||
|
|
||||||
return ToolResult(success=True, output=result.stdout or "No changes")
|
|
||||||
|
|||||||
Reference in New Issue
Block a user