"""Glob file search tool."""


TOOL_VERSION = "2026-05-22"

from __future__ import annotations

from pathlib import Path

from harzoo.agent.kernel.tool import Tool, ToolResult


def resolve_tool_path(path: str) -> Path:
    p = Path(path).expanduser()
    if p.is_absolute():
        return p.resolve()
    return (Path.cwd() / p).resolve()


class GlobTool(Tool):
    name = "Glob"
    description = "Find files matching a glob pattern."
    parameters = {
        "properties": {
            "pattern": {"type": "string", "description": "Glob pattern e.g. **/*.py"},
            "path": {"type": "string", "description": "Directory to search", "default": "."},
        },
        "required": ["pattern"],
    }

    def execute(self, pattern: str, path: str = ".", **kwargs) -> ToolResult:
        base = resolve_tool_path(path)
        if not base.is_dir():
            return ToolResult.failure(f"Not a directory: {path}", code="INVALID_PATH")
        matches = sorted(str(p) for p in base.glob(pattern))
        return ToolResult.success({"matches": matches, "count": len(matches), "search_path": str(base), "pattern": pattern})


TOOL = GlobTool
