fix(cli): add --yes flag to agents init for non-interactive setup #624

Merged
freemo merged 1 commits from feature/m3-fix-init-yes-flag into master 2026-03-07 15:50:20 +00:00
2 changed files with 58 additions and 10 deletions
+49 -10
View File
@@ -179,6 +179,7 @@ def init_command(
force: bool = False,
create_ignore_file: bool = False,
default_filters: bool = False,
yes: bool = False,
) -> None:
"""Programmatic interface for initializing a new CleverAgents project."""
from cleveragents.application.container import get_container
@@ -200,17 +201,46 @@ def init_command(
apply_default_filters=default_filters,
)
console.print(
Panel(
f"[green]✓[/green] Project '{project.name}' "
f"initialized successfully!\n\n"
f"Location: {project.path / '.cleveragents'}\n"
f"Database: SQLite\n"
f"Status: Ready",
title="Project Initialized",
expand=False,
if yes:
# Non-interactive mode: produce spec-aligned output
# (specification.md lines 1381-1389)
data_dir: Path = getattr(
project, "data_dir", getattr(project, "path", path) / ".cleveragents"
)
config_path: Path = getattr(
project,
"config_path",
getattr(project, "path", path) / ".cleveragents" / "config.toml",
)
database_status: str = getattr(
project, "database_status", "initialized (schema v3)"
)
directories: list[str] = getattr(
project, "directories", ["logs", "cache", "sessions", "contexts"]
)
console.print(
Panel(
f"[green]Data Dir:[/green] {data_dir} (created)\n"
f"[green]Config:[/green] {config_path}\n"
f"[green]Database:[/green] {database_status}\n"
f"[green]Directories:[/green] {', '.join(directories)}",
title="Initialized",
expand=False,
)
)
console.print("[green]✓ OK[/green] Initialized (non-interactive)")
else:
console.print(
Panel(
f"[green]✓[/green] Project '{project.name}' "
f"initialized successfully!\n\n"
f"Location: {project.path / '.cleveragents'}\n"
f"Database: SQLite\n"
f"Status: Ready",
title="Project Initialized",
expand=False,
)
)
)
# ---------------------------------------------------------------------------
@@ -387,6 +417,14 @@ def init(
help="Seed project exclude filters with recommended defaults",
),
] = False,
yes: Annotated[
bool,
typer.Option(
"--yes",
"-y",
help="Skip interactive prompts and use default values",
),
] = False,
) -> None:
"""Initialize a new CleverAgents project.
@@ -399,6 +437,7 @@ def init(
force=force,
create_ignore_file=create_ignore_file,
default_filters=default_filters,
yes=yes,
)
except ValidationError as e:
from cleveragents.shared.redaction import redact_dict, redact_value
+9
View File
@@ -379,6 +379,14 @@ def init(
help="Seed project exclude filters with recommended defaults",
),
] = False,
yes: Annotated[
bool,
typer.Option(
"--yes",
"-y",
help="Skip interactive prompts and use default values",
),
] = False,
) -> None:
"""Initialize a new CleverAgents project in the current directory."""
from cleveragents.cli.commands.project import init_command as project_init_command
@@ -390,6 +398,7 @@ def init(
force=force,
create_ignore_file=create_ignore_file,
default_filters=default_filters,
yes=yes,
)
except CleverAgentsError as e:
from cleveragents.core.error_handling import classify_error