| 15 | |
| 16 | |
| 17 | def parse_args(): |
| 18 | parser = argparse.ArgumentParser(description="AgentSPEX Agentic Loop") |
| 19 | parser.add_argument( |
| 20 | "--task", |
| 21 | type=str, |
| 22 | default=None, |
| 23 | help="Task description. If not provided, enters interactive REPL mode.", |
| 24 | ) |
| 25 | parser.add_argument("--model", type=str, default="claude-opus-4-5") |
| 26 | parser.add_argument("--mcp_url", type=str, default=None) |
| 27 | parser.add_argument("--output_dir", type=str, default=None) |
| 28 | parser.add_argument("--max_turns", type=int, default=200) |
| 29 | parser.add_argument("--temperature", type=float, default=0.2) |
| 30 | parser.add_argument( |
| 31 | "--plan_generator_model", |
| 32 | type=str, |
| 33 | default="gpt-5", |
| 34 | help="Model for YAML plan generation (default: gpt-5)", |
| 35 | ) |
| 36 | parser.add_argument( |
| 37 | "--plan_executor_model", |
| 38 | type=str, |
| 39 | default="claude-sonnet-4-6", |
| 40 | help="Model for executing generated YAML plans (default: claude-sonnet-4-6)", |
| 41 | ) |
| 42 | parser.add_argument( |
| 43 | "--plan_mode", |
| 44 | action="store_true", |
| 45 | default=False, |
| 46 | help="Enable plan mode: decompose task into subtasks, generate YAML plans", |
| 47 | ) |
| 48 | return parser.parse_args() |
| 49 | |
| 50 | |
| 51 | def run_loop( |