-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrun.py
More file actions
65 lines (53 loc) · 2.81 KB
/
Copy pathrun.py
File metadata and controls
65 lines (53 loc) · 2.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
"""Entry point — thin dispatcher that loads a task and calls task.run()."""
import argparse
from datetime import datetime
from pathlib import Path
from config import config
from tasks import get_task
def _apply_config_overrides(args):
"""Apply CLI argument overrides to the global config."""
task_name = args.task or config.task
ts = datetime.now().strftime("%Y%m%d_%H%M%S")
exp_name = args.exp_name or config.exp_name
if exp_name:
config.exp_name = exp_name
dirname = f"{ts}_{exp_name}" if exp_name else ts
config.run_dir = Path(__file__).parent / "workspace" / task_name / dirname
args_dict = vars(args)
for attr in vars(config):
if attr in args_dict and args_dict[attr] is not None:
setattr(config, attr, args_dict[attr])
def main():
# Phase 1: parse --task and common flags
parser = argparse.ArgumentParser(description="Agentic Task Runner")
parser.add_argument("--task", type=str, default=None,
help=f"Task name (default: {config.task})")
parser.add_argument("--agent-provider", type=str, default=None,
choices=["openai", "anthropic", "gemini", "azure_openai", "aws_bedrock", "cortex"],
help=f"Agent LLM provider (default: {config.agent_provider})")
parser.add_argument("--student-provider", type=str, default=None,
choices=["openai", "anthropic", "gemini", "azure_openai", "aws_bedrock", "cortex"],
help=f"Student LLM provider (default: {config.student_provider})")
parser.add_argument("--output", type=str, default=None,
help="Output results JSON path")
parser.add_argument("--exp-name", type=str, default=None,
help="Experiment name appended to run dir")
parser.add_argument("--lessons", type=str, default=None,
help="Path to a lessons.md file to seed the agent with prior learnings")
parser.add_argument("--enable-search-review", action="store_true", default=False,
help="Enable search tree tracking and review_search_tree tool")
parser.add_argument("--max-wall-clock", type=int, default=None,
help="Wall-clock time budget in seconds (default: unlimited)")
# Phase 2: pre-parse to get --task (suppress help so it's shown later)
pre_parser = argparse.ArgumentParser(add_help=False)
pre_parser.add_argument("--task", type=str, default=None)
pre_args, _ = pre_parser.parse_known_args()
task_name = pre_args.task or config.task
task = get_task(task_name)
task.cli_args(parser)
args = parser.parse_args()
_apply_config_overrides(args)
# Run (task.run() calls config.ensure_dirs() after any task-specific overrides)
task.run(args)
if __name__ == "__main__":
main()