| 31 | |
| 32 | |
| 33 | def build_parser() -> argparse.ArgumentParser: |
| 34 | parser = argparse.ArgumentParser( |
| 35 | description="miniClaudeCode -- a distilled Claude Code agent loop", |
| 36 | ) |
| 37 | parser.add_argument( |
| 38 | "--model", default="claude-sonnet-4-20250514", |
| 39 | help="Anthropic model to use (default: claude-sonnet-4-20250514)", |
| 40 | ) |
| 41 | parser.add_argument( |
| 42 | "--mode", choices=["ask", "auto", "plan"], default="ask", |
| 43 | help="Permission mode (default: ask)", |
| 44 | ) |
| 45 | parser.add_argument( |
| 46 | "--max-turns", type=int, default=30, |
| 47 | help="Max agent loop turns per message (default: 30)", |
| 48 | ) |
| 49 | parser.add_argument( |
| 50 | "prompt", nargs="?", default=None, |
| 51 | help="Optional one-shot prompt (non-interactive mode)", |
| 52 | ) |
| 53 | return parser |
| 54 | |
| 55 | |
| 56 | def run_interactive(agent: AgentLoop) -> None: |