diff --git a/src/seclab_taskflow_agent/cli.py b/src/seclab_taskflow_agent/cli.py index 19e7790..b5bf2eb 100644 --- a/src/seclab_taskflow_agent/cli.py +++ b/src/seclab_taskflow_agent/cli.py @@ -108,6 +108,10 @@ def main( list[str] | None, typer.Argument(help="Remaining prompt text."), ] = None, + model_config: Annotated[ + str | None, + typer.Option("-m", "--model-config", help="Model configuration module path. Only relevant when running taskflows."), + ] = None, ) -> None: """Run a taskflow or personality-based agent session.""" # Debug mode from flag or env var @@ -158,7 +162,7 @@ def main( asyncio.run( run_main( available_tools, personality, effective_taskflow, - cli_globals, user_prompt, resume_session_id=resume, + cli_globals, user_prompt, resume_session_id=resume, cli_model_config=model_config, ), debug=debug, ) diff --git a/src/seclab_taskflow_agent/runner.py b/src/seclab_taskflow_agent/runner.py index b05cc6b..43dd6af 100644 --- a/src/seclab_taskflow_agent/runner.py +++ b/src/seclab_taskflow_agent/runner.py @@ -491,6 +491,7 @@ async def run_main( cli_globals: dict[str, str], prompt: str | None, resume_session_id: str | None = None, + cli_model_config: str | None = None, ) -> None: """Main entry point for taskflow/personality execution. @@ -500,6 +501,7 @@ async def run_main( taskflow_path: Taskflow module path, or None. cli_globals: Global variables from CLI. prompt: User prompt text. + cli_model_config: Model configuration module path, or None. resume_session_id: Session ID to resume from a checkpoint. """ from .session import TaskflowSession @@ -557,6 +559,8 @@ async def on_handoff_hook(context: RunContextWrapper[TContext], agent: Agent[TCo # Resolve model config model_config_ref = taskflow_doc.model_config_ref + if cli_model_config: + model_config_ref = cli_model_config model_keys: list[str] = [] model_dict: dict[str, str] = {} models_params: dict[str, dict[str, Any]] = {}