From 484fe65a4b8b5f5cc43ccd2b91f6860a414c826c Mon Sep 17 00:00:00 2001 From: Charlie Doern Date: Tue, 7 Apr 2026 09:55:29 -0400 Subject: [PATCH] fix: remove leftover post_training and toolgroups CLI commands These CLI modules reference types and client resources that no longer exist (post_training API, toolgroup_register_params, client.toolgroups), causing the CLI to crash on any invocation. Co-Authored-By: Claude Opus 4.6 --- .../lib/cli/llama_stack_client.py | 4 - .../lib/cli/post_training/__init__.py | 9 -- .../lib/cli/post_training/post_training.py | 118 ---------------- .../lib/cli/toolgroups/__init__.py | 9 -- .../lib/cli/toolgroups/toolgroups.py | 130 ------------------ 5 files changed, 270 deletions(-) delete mode 100644 src/llama_stack_client/lib/cli/post_training/__init__.py delete mode 100644 src/llama_stack_client/lib/cli/post_training/post_training.py delete mode 100644 src/llama_stack_client/lib/cli/toolgroups/__init__.py delete mode 100644 src/llama_stack_client/lib/cli/toolgroups/toolgroups.py diff --git a/src/llama_stack_client/lib/cli/llama_stack_client.py b/src/llama_stack_client/lib/cli/llama_stack_client.py index 7a96e5e2..98070d17 100644 --- a/src/llama_stack_client/lib/cli/llama_stack_client.py +++ b/src/llama_stack_client/lib/cli/llama_stack_client.py @@ -20,11 +20,9 @@ from .inference import inference from .inspect import inspect from .models import models -from .post_training import post_training from .providers import providers from .scoring_functions import scoring_functions from .shields import shields -from .toolgroups import toolgroups from .vector_stores import vector_stores @@ -90,9 +88,7 @@ def llama_stack_client(ctx, endpoint: str, api_key: str, config: str | None): llama_stack_client.add_command(scoring_functions, "scoring_functions") llama_stack_client.add_command(eval, "eval") llama_stack_client.add_command(inference, "inference") -llama_stack_client.add_command(post_training, "post_training") llama_stack_client.add_command(inspect, "inspect") -llama_stack_client.add_command(toolgroups, "toolgroups") def main(): diff --git a/src/llama_stack_client/lib/cli/post_training/__init__.py b/src/llama_stack_client/lib/cli/post_training/__init__.py deleted file mode 100644 index bbb17b3c..00000000 --- a/src/llama_stack_client/lib/cli/post_training/__init__.py +++ /dev/null @@ -1,9 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -from .post_training import post_training - -__all__ = ["post_training"] diff --git a/src/llama_stack_client/lib/cli/post_training/post_training.py b/src/llama_stack_client/lib/cli/post_training/post_training.py deleted file mode 100644 index 2d766652..00000000 --- a/src/llama_stack_client/lib/cli/post_training/post_training.py +++ /dev/null @@ -1,118 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -from typing import Optional - -import click -from rich.console import Console - -from llama_stack_client.types.alpha.post_training_supervised_fine_tune_params import ( - AlgorithmConfig, - TrainingConfig, -) - -from ..common.utils import handle_client_errors - - -@click.group() -@click.help_option("-h", "--help") -def post_training(): - """Post-training.""" - - -@click.command("supervised_fine_tune") -@click.help_option("-h", "--help") -@click.option("--job-uuid", required=True, help="Job UUID") -@click.option("--model", required=True, help="Model ID") -@click.option("--algorithm-config", required=True, help="Algorithm Config") -@click.option("--training-config", required=True, help="Training Config") -@click.option("--checkpoint-dir", required=False, help="Checkpoint Config", default=None) -@click.pass_context -@handle_client_errors("post_training supervised_fine_tune") -def supervised_fine_tune( - ctx, - job_uuid: str, - model: str, - algorithm_config: AlgorithmConfig, - training_config: TrainingConfig, - checkpoint_dir: Optional[str], -): - """Kick off a supervised fine tune job""" - client = ctx.obj["client"] - console = Console() - - post_training_job = client.post_training.supervised_fine_tune( - job_uuid=job_uuid, - model=model, - algorithm_config=algorithm_config, - training_config=training_config, - checkpoint_dir=checkpoint_dir, - # logger_config and hyperparam_search_config haven't been used yet - logger_config={}, - hyperparam_search_config={}, - ) - console.print(post_training_job.job_uuid) - - -@click.command("list") -@click.help_option("-h", "--help") -@click.pass_context -@handle_client_errors("post_training get_training_jobs") -def get_training_jobs(ctx): - """Show the list of available post training jobs""" - client = ctx.obj["client"] - console = Console() - - post_training_jobs = client.post_training.job.list() - console.print([post_training_job.job_uuid for post_training_job in post_training_jobs]) - - -@click.command("status") -@click.help_option("-h", "--help") -@click.option("--job-uuid", required=True, help="Job UUID") -@click.pass_context -@handle_client_errors("post_training get_training_job_status") -def get_training_job_status(ctx, job_uuid: str): - """Show the status of a specific post training job""" - client = ctx.obj["client"] - console = Console() - - job_status_reponse = client.post_training.job.status(job_uuid=job_uuid) - console.print(job_status_reponse) - - -@click.command("artifacts") -@click.help_option("-h", "--help") -@click.option("--job-uuid", required=True, help="Job UUID") -@click.pass_context -@handle_client_errors("post_training get_training_job_artifacts") -def get_training_job_artifacts(ctx, job_uuid: str): - """Get the training artifacts of a specific post training job""" - client = ctx.obj["client"] - console = Console() - - job_artifacts = client.post_training.job.artifacts(job_uuid=job_uuid) - console.print(job_artifacts) - - -@click.command("cancel") -@click.help_option("-h", "--help") -@click.option("--job-uuid", required=True, help="Job UUID") -@click.pass_context -@handle_client_errors("post_training cancel_training_job") -def cancel_training_job(ctx, job_uuid: str): - """Cancel the training job""" - client = ctx.obj["client"] - - client.post_training.job.cancel(job_uuid=job_uuid) - - -# Register subcommands -post_training.add_command(supervised_fine_tune) -post_training.add_command(get_training_jobs) -post_training.add_command(get_training_job_status) -post_training.add_command(get_training_job_artifacts) -post_training.add_command(cancel_training_job) diff --git a/src/llama_stack_client/lib/cli/toolgroups/__init__.py b/src/llama_stack_client/lib/cli/toolgroups/__init__.py deleted file mode 100644 index 912d911b..00000000 --- a/src/llama_stack_client/lib/cli/toolgroups/__init__.py +++ /dev/null @@ -1,9 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -from .toolgroups import toolgroups - -__all__ = ["toolgroups"] diff --git a/src/llama_stack_client/lib/cli/toolgroups/toolgroups.py b/src/llama_stack_client/lib/cli/toolgroups/toolgroups.py deleted file mode 100644 index 1e3d921d..00000000 --- a/src/llama_stack_client/lib/cli/toolgroups/toolgroups.py +++ /dev/null @@ -1,130 +0,0 @@ -# Copyright (c) Meta Platforms, Inc. and affiliates. -# All rights reserved. -# -# This source code is licensed under the terms described in the LICENSE file in -# the root directory of this source tree. - -from typing import Optional - -import click -from rich.console import Console -from rich.table import Table - -from ..common.utils import handle_client_errors -from ....types import toolgroup_register_params -from ...._types import NOT_GIVEN, NotGiven - - -@click.group() -@click.help_option("-h", "--help") -def toolgroups(): - """Manage available tool groups.""" - - -@click.command(name="list", help="Show available llama toolgroups at distribution endpoint") -@click.help_option("-h", "--help") -@click.pass_context -@handle_client_errors("list toolgroups") -def list_toolgroups(ctx): - client = ctx.obj["client"] - console = Console() - - headers = ["identifier", "provider_id", "args", "mcp_endpoint"] - response = client.toolgroups.list() - if response: - table = Table() - for header in headers: - table.add_column(header) - - for item in response: - row = [str(getattr(item, header)) for header in headers] - table.add_row(*row) - console.print(table) - - -@click.command(name="get") -@click.help_option("-h", "--help") -@click.argument("toolgroup_id") -@click.pass_context -@handle_client_errors("get toolgroup details") -def get_toolgroup(ctx, toolgroup_id: str): - """Show available llama toolgroups at distribution endpoint""" - client = ctx.obj["client"] - console = Console() - - toolgroups_get_response = client.tools.list() - # filter response to only include provided toolgroup_id - toolgroups_get_response = [ - toolgroup for toolgroup in toolgroups_get_response if toolgroup.toolgroup_id == toolgroup_id - ] - if len(toolgroups_get_response) == 0: - console.print( - f"Toolgroup {toolgroup_id} is not found at distribution endpoint. " - "Please ensure endpoint is serving specified toolgroup.", - style="bold red", - ) - return - - headers = sorted(toolgroups_get_response[0].__dict__.keys()) - table = Table() - for header in headers: - table.add_column(header) - - for toolgroup in toolgroups_get_response: - row = [str(getattr(toolgroup, header)) for header in headers] - table.add_row(*row) - console.print(table) - - -@click.command(name="register", help="Register a new toolgroup at distribution endpoint") -@click.help_option("-h", "--help") -@click.argument("toolgroup_id") -@click.option("--provider-id", help="Provider ID for the toolgroup", default=None) -@click.option("--mcp-endpoint", help="JSON mcp_config for the toolgroup", default=None) -@click.option("--args", help="JSON args for the toolgroup", default=None) -@click.pass_context -@handle_client_errors("register toolgroup") -def register_toolgroup( - ctx, - toolgroup_id: str, - provider_id: Optional[str], - mcp_endpoint: Optional[str], - args: Optional[str], -): - """Register a new toolgroup at distribution endpoint""" - client = ctx.obj["client"] - console = Console() - - _mcp_endpoint: toolgroup_register_params.McpEndpoint | NotGiven = NOT_GIVEN - if mcp_endpoint: - _mcp_endpoint = toolgroup_register_params.McpEndpoint(uri=mcp_endpoint) - - response = client.toolgroups.register( - toolgroup_id=toolgroup_id, - provider_id=provider_id, - args=args, - mcp_endpoint=_mcp_endpoint, - ) - if response: - console.print(f"[green]Successfully registered toolgroup {toolgroup_id}[/green]") - - -@click.command(name="unregister", help="Unregister a toolgroup from distribution endpoint") -@click.help_option("-h", "--help") -@click.argument("toolgroup_id") -@click.pass_context -@handle_client_errors("unregister toolgroup") -def unregister_toolgroup(ctx, toolgroup_id: str): - client = ctx.obj["client"] - console = Console() - - response = client.toolgroups.unregister(toolgroup_id=toolgroup_id) - if response: - console.print(f"[green]Successfully deleted toolgroup {toolgroup_id}[/green]") - - -# Register subcommands -toolgroups.add_command(list_toolgroups) -toolgroups.add_command(get_toolgroup) -toolgroups.add_command(register_toolgroup) -toolgroups.add_command(unregister_toolgroup)