samyakbayar's picture
Upload 29 files
d3a24e0 verified
Raw
History Blame Contribute Delete
2.76 kB
"""CLI entry point for the Wayfinder agent.
Wraps the SDK's main.py interface so the agent can be run via:
uv run main.py --agent=wayfinder --game=ls20
"""
from __future__ import annotations
import argparse
import logging
import sys
logger = logging.getLogger(__name__)
def main() -> int:
"""CLI entry point.
Returns:
Exit code (0 for success).
"""
parser = argparse.ArgumentParser(
description="Wayfinder agent for ARC-AGI-3"
)
parser.add_argument(
"--agent", default="wayfinder",
help="Agent name (default: wayfinder)"
)
parser.add_argument(
"--game", default="ls20",
help="Game ID to play (default: ls20)"
)
parser.add_argument(
"--max-actions", type=int, default=1000,
help="Max actions per level (default: 1000)"
)
parser.add_argument(
"--device", default="cpu",
help="Torch device (default: cpu)"
)
parser.add_argument(
"--verbose", "-v", action="store_true",
help="Enable verbose logging"
)
args = parser.parse_args()
logging.basicConfig(
level=logging.DEBUG if args.verbose else logging.INFO,
format="%(asctime)s [%(levelname)s] %(name)s: %(message)s",
)
# Try to use the SDK's runner
try:
from arc_agi_3 import main as sdk_main # type: ignore[import]
logger.info("Using SDK runner with agent=%s, game=%s", args.agent, args.game)
# The SDK's main.py handles the game loop
sdk_main(agent_name=args.agent, game_id=args.game)
except ImportError:
logger.error(
"arc-agi-3 SDK not found. Install with: uv pip install arc-agi-3"
)
logger.info("Running in standalone mode (no SDK)...")
_run_standalone(args)
return 0
def _run_standalone(args: argparse.Namespace) -> None:
"""Run the agent without the SDK (for testing/scaffolding).
Args:
args: Parsed CLI arguments.
"""
import numpy as np
from agents.wayfinder.agent import WayfinderAgent
agent = WayfinderAgent(
max_actions=args.max_actions,
device=args.device,
)
# Simulate a few steps with random frames
logger.info("Running standalone simulation (5 steps)...")
for step in range(5):
frame = np.random.randint(0, 16, size=(64, 64), dtype=np.uint8)
result = agent.act(
frames=[frame],
state="NOT_FINISHED",
score=0.0,
win_score=1.0,
available_actions=["ACTION1", "ACTION2", "ACTION3", "ACTION4", "ACTION5"],
)
logger.info("Step %d: %s", step + 1, result)
logger.info("Standalone simulation complete.")
if __name__ == "__main__":
sys.exit(main())