| 96 | |
| 97 | |
| 98 | def build_parser() -> argparse.ArgumentParser: |
| 99 | parser = DeepScientistArgumentParser( |
| 100 | prog="ds", |
| 101 | description="DeepScientist Core skeleton", |
| 102 | allow_abbrev=False, |
| 103 | ) |
| 104 | parser.add_argument("--home", default=None, help="Override DeepScientist home") |
| 105 | parser.add_argument("--proxy", default=None, help="Explicit outbound HTTP/WS proxy, for example `http://127.0.0.1:7890`.") |
| 106 | parser.add_argument("--codex", default=None, help="Override the Codex executable path for this invocation.") |
| 107 | |
| 108 | subparsers = parser.add_subparsers( |
| 109 | dest="command", |
| 110 | required=True, |
| 111 | parser_class=DeepScientistArgumentParser, |
| 112 | ) |
| 113 | |
| 114 | subparsers.add_parser("init") |
| 115 | |
| 116 | new_parser = subparsers.add_parser("new") |
| 117 | new_parser.add_argument("goal") |
| 118 | new_parser.add_argument("--quest-id", default=None) |
| 119 | |
| 120 | subparsers.add_parser("status").add_argument("quest_id", nargs="?") |
| 121 | |
| 122 | pause_parser = subparsers.add_parser("pause") |
| 123 | pause_parser.add_argument("quest_id") |
| 124 | |
| 125 | resume_parser = subparsers.add_parser("resume") |
| 126 | resume_parser.add_argument("quest_id") |
| 127 | |
| 128 | daemon_parser = subparsers.add_parser("daemon") |
| 129 | daemon_parser.add_argument("--host", default=None) |
| 130 | daemon_parser.add_argument("--port", type=int, default=None) |
| 131 | daemon_parser.add_argument("--auth", default=None) |
| 132 | daemon_parser.add_argument("--auth-token", default=None) |
| 133 | daemon_parser.add_argument("--runner", default=None, help=argparse.SUPPRESS) |
| 134 | daemon_parser.add_argument( |
| 135 | "--prompt-version", |
| 136 | default=None, |
| 137 | help="Use `latest` managed prompts, an official historical prompt version such as `1.5.13`, or an exact backup id from `.codex/prompt_versions/` for this daemon session.", |
| 138 | ) |
| 139 | |
| 140 | run_parser = subparsers.add_parser("run") |
| 141 | run_parser.add_argument("skill_id") |
| 142 | run_parser.add_argument("--quest-id", required=True) |
| 143 | run_parser.add_argument("--message", required=True) |
| 144 | run_parser.add_argument("--model", default=None) |
| 145 | run_parser.add_argument("--runner", default=None) |
| 146 | run_parser.add_argument( |
| 147 | "--prompt-version", |
| 148 | default=None, |
| 149 | help="Use `latest` managed prompts, an official historical prompt version such as `1.5.13`, or an exact backup id from `.codex/prompt_versions/` for this one-off run.", |
| 150 | ) |
| 151 | |
| 152 | ui_parser = subparsers.add_parser("ui") |
| 153 | ui_parser.add_argument("--mode", choices=("web", "tui", "both"), default="web") |
| 154 | |
| 155 | note_parser = subparsers.add_parser("note") |