Source code for fermilink.cli.parser_agent

from __future__ import annotations

import argparse
from collections.abc import Callable


CommandHandler = Callable[[argparse.Namespace], int]


[docs] def register_agent_parser( subparsers: argparse._SubParsersAction[argparse.ArgumentParser], # type: ignore[attr-defined] *, add_json_option: Callable[[argparse.ArgumentParser], None], cmd_agent: CommandHandler, supported_providers: tuple[str, ...], supported_reasoning_efforts: tuple[str, ...], ) -> None: """ Register parser arguments for agent. Parameters ---------- subparsers : argparse._SubParsersAction[argparse.ArgumentParser] Subparser collection created from the root parser. add_json_option : Callable[[argparse.ArgumentParser], None] Callback that adds shared `--json` output flags. cmd_agent : CommandHandler Command handler for `agent` subcommands. supported_providers : tuple[str, ...] Provider names exposed by the runtime policy layer. supported_reasoning_efforts : tuple[str, ...] Reasoning-effort values exposed by the runtime policy layer. Returns ------- None No return value; parser objects are mutated in place. """ agent_parser = subparsers.add_parser( "agent", help=( "Manage global agent runtime policy for provider and sandbox behavior " "used by runner/web/exec/chat/loop/research/reproduce." ), ) add_json_option(agent_parser) agent_parser.add_argument( "provider", nargs="?", choices=supported_providers, help=("Agent provider selection " f"({', '.join(supported_providers)})."), ) sandbox_group = agent_parser.add_mutually_exclusive_group(required=False) sandbox_group.add_argument( "--sandbox", action="store_true", help="Enforce sandbox mode.", ) sandbox_group.add_argument( "--bypass-sandbox", action="store_true", help="Bypass sandbox mode.", ) model_group = agent_parser.add_mutually_exclusive_group(required=False) model_group.add_argument( "--model", default=None, help=("Override provider default model (for example " "`gpt-5.3-codex`)."), ) model_group.add_argument( "--clear-model", action="store_true", help="Clear model override and use provider default model selection.", ) reasoning_group = agent_parser.add_mutually_exclusive_group(required=False) reasoning_group.add_argument( "--reasoning-effort", choices=supported_reasoning_efforts, help=( "Override provider reasoning effort globally " f"({', '.join(supported_reasoning_efforts)})." ), ) reasoning_group.add_argument( "--clear-reasoning-effort", action="store_true", help=( "Clear reasoning effort override and use provider default " "reasoning effort." ), ) agent_parser.set_defaults(func=cmd_agent)