"""
Lab 3.9: Build a Verifier Agent

Objective: Create a read-only agent that checks the builder's work.

The verifier should:
1. Read the builder's work (files changed)
2. Verify factual claims (grep/search for evidence)
3. Report a confidence level (PERFECT, VERIFIED, PARTIAL, FEEDBACK, FAILED)
4. Have NO write/edit/bash tools
"""

# TODO: Define the verifier's tool surface
# The verifier should ONLY have read-only tools:
# - read_file: read files
# - grep_search: search for patterns in files
# - list_files: list files in a directory
# NO write, edit, bash, or destructive tools

VERIFIER_TOOLS = [
    # TODO: Define a read_file tool (name, description, input_schema)
    # TODO: Define a grep_search tool
    # TODO: Define a list_files tool
]


# TODO: Implement the verification logic
def verify_work(claims: list[dict], workspace_path: str) -> dict:
    """
    Verify a set of claims against the actual workspace.
    
    Each claim has:
      - claim: str (what the builder claims)
      - expected_evidence: str (what to look for)
      - check_type: str ("file_exists", "file_contains", "file_not_exists")
    
    Returns a verification report with:
      - status: PERFECT, VERIFIED, PARTIAL, FEEDBACK, FAILED
      - verified_claims: list of passed claims
      - failed_claims: list of failed claims with reasons
      - unverifiable_claims: list of claims that couldn't be checked
    """
    pass  # TODO


if __name__ == "__main__":
    # Test case
    test_claims = [
        {"claim": "Created the data processing script", 
         "expected_evidence": "process.py",
         "check_type": "file_exists"},
        {"claim": "Script reads CSV files",
         "expected_evidence": "read_csv",
         "check_type": "file_contains"},
        {"claim": "Output is written to results/ directory",
         "expected_evidence": "results",
         "check_type": "file_contains"},
    ]
    
    result = verify_work(test_claims, "./")
    print(json.dumps(result, indent=2))
