feat(plugins): implement agents plugin CLI subcommand group and built-in plugin discovery #10621

Merged
HAL9000 merged 8 commits from feat/v360/plugin-cli-discovery into master 2026-06-15 11:14:18 +00:00
6 changed files with 560 additions and 111 deletions
+96
View File
@@ -0,0 +1,96 @@
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Feature: Plugin CLI Commands
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
As a user
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
I want to manage plugins through the CLI
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
So that I can list, enable, disable, and manage plugins
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
# --- Negative / error path scenarios ---
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Scenario: List plugins when none are installed
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
When I run "agents plugin list"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Then the output should contain "No plugins found"
Outdated
Review

BLOCKING: All 5 scenarios test only negative/error paths (no plugins found, plugin not found). Positive scenarios for listing existing plugins, showing plugin details, enabling/disabling and removing actual plugins are missing. Test coverage is far below the 97% threshold.

BLOCKING: All 5 scenarios test only negative/error paths (no plugins found, plugin not found). Positive scenarios for listing existing plugins, showing plugin details, enabling/disabling and removing actual plugins are missing. Test coverage is far below the 97% threshold.
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Scenario: Show plugin details for non-existent plugin
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
When I run "agents plugin show non-existent-plugin"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Then the output should contain "non-existent-plugin"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Scenario: Enable a non-existent plugin shows error
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
When I run "agents plugin enable non-existent-plugin"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Then the output should contain "non-existent-plugin"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Scenario: Disable a non-existent plugin shows error
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
When I run "agents plugin disable non-existent-plugin"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Then the output should contain "non-existent-plugin"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Scenario: List plugins with JSON output when none installed
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
When I run "agents plugin list --format json"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Then the plugin CLI output should be valid JSON
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Scenario: Install plugin from PyPI by package name
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
When I run "agents plugin install some-package"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Then the output should contain "some-package"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Scenario: Install plugin from existing local path
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
When I run "agents plugin install /tmp"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Then the output should contain "/tmp"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Scenario: Remove a non-existent plugin shows error
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
When I run "agents plugin remove non-existent-plugin --yes"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Then the output should contain "non-existent-plugin"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
# --- Happy path scenarios with mocked plugin manager ---
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Scenario: List plugins in rich format when plugins are present
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Given a plugin manager with one active plugin
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
When I run "agents plugin list"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Then the output should contain "test-plugin"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Scenario: List plugins in JSON format when plugins are present
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Given a plugin manager with one active plugin
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
When I run "agents plugin list --format json"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Then the plugin CLI output should be valid JSON
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Scenario: List plugins truncates long descriptions in the table
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Given a plugin manager with one plugin having a long description
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
When I run "agents plugin list"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Then the output should contain "..."
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Scenario: Show existing plugin details in rich format
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Given a plugin manager with one active plugin
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
When I run "agents plugin show test-plugin"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Then the output should contain "test-plugin"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Scenario: Show existing plugin details in JSON format
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Given a plugin manager with one active plugin
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
When I run "agents plugin show test-plugin --format json"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Then the plugin CLI output should be valid JSON
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Scenario: Enable a plugin that is already active
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Given a plugin manager with one active plugin
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
When I run "agents plugin enable test-plugin"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Then the output should contain "already enabled"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Scenario: Enable a plugin that is currently inactive
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Given a plugin manager with one inactive plugin
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
When I run "agents plugin enable test-plugin"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Then the output should contain "Enabled"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Scenario: Disable a plugin that is currently active
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Given a plugin manager with one active plugin
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
When I run "agents plugin disable test-plugin"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Then the output should contain "Disabled"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Scenario: Disable a plugin that is already inactive
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Given a plugin manager with one inactive plugin
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
When I run "agents plugin disable test-plugin"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Then the output should contain "not active"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Scenario: Remove a plugin with confirmation skipped using --yes
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Given a plugin manager with one active plugin
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
When I run "agents plugin remove test-plugin --yes"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Then the output should contain "Removed"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Scenario: Remove a plugin and abort on user confirmation
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Given a plugin manager with one active plugin
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
And the next prompt answer is "n"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
When I run "agents plugin remove test-plugin"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
Then the output should contain "Aborted"
Review

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.

BLOCKING: BDD scenarios reference When I run step but that step definition was removed in the fix commit. These scenarios will fail at runtime.
+6
View File
@@ -35,3 +35,9 @@ Feature: CLI main() error handling paths
Scenario: _print_basic_help prints without error
When I call the main _print_basic_help
Then the main _print_basic_help completes ok
@coverage
Scenario: unknown option triggers UsageError handler with exit code 2
When I call main with arguments ["plan", "use", "--no-such-flag", "x"]
Then the main cli exit code should be 2
And the main cli output contains "No such option"
+17
View File
@@ -85,6 +85,23 @@ def step_print_basic_help(context: Context) -> None:
context.help_output = buf.getvalue()
@when("I call main with arguments {args}")
def step_main_in_process(context: Context, args: str) -> None:
"""Call ``main(args)`` in-process so coverage tracks the exception paths."""
from cleveragents.cli.main import get_err_console, main
cmd_args = ast.literal_eval(args) if isinstance(args, str) else []
console = get_err_console()
buf = StringIO()
original_file = console.file
console.file = buf
try:
context.exit_code = main(cmd_args)
finally:
console.file = original_file
context.output = buf.getvalue()
# ---------------------------------------------------------------------------
# Then steps — unique step texts to avoid collisions with other suites
# ---------------------------------------------------------------------------
+94
View File
@@ -0,0 +1,94 @@
"""Step definitions for plugin CLI commands."""
from __future__ import annotations
import json
from typing import Any
from unittest.mock import MagicMock, patch
from behave import given, then, when
from cleveragents.infrastructure.plugins.types import PluginState
def _make_plugin_manager(
state: PluginState, description: str = "A test plugin"
) -> MagicMock:
"""Create a mock PluginManager with one test plugin in the given state."""
descriptor = MagicMock()
descriptor.name = "test-plugin"
descriptor.version = "1.0.0"
descriptor.description = description
descriptor.module_path = "test.module"
descriptor.class_name = "TestPlugin"
descriptor.state = state
manager = MagicMock()
manager.list_plugins.return_value = [descriptor]
manager.get_plugin.return_value = descriptor
return manager
@given("a plugin manager with one active plugin")
def step_plugin_manager_active(context: Any) -> None:
"""Set up a mock PluginManager with one ACTIVATED plugin."""
context.plugin_manager = _make_plugin_manager(PluginState.ACTIVATED)
@given("a plugin manager with one inactive plugin")
def step_plugin_manager_inactive(context: Any) -> None:
"""Set up a mock PluginManager with one DEACTIVATED plugin."""
context.plugin_manager = _make_plugin_manager(PluginState.DEACTIVATED)
@given("a plugin manager with one plugin having a long description")
def step_plugin_manager_long_desc(context: Any) -> None:
"""Set up a mock PluginManager with a plugin whose description exceeds 40 chars."""
context.plugin_manager = _make_plugin_manager(
PluginState.ACTIVATED,
description="A" * 50,
)
@given('the next prompt answer is "{answer}"')
def step_set_prompt_answer(context: Any, answer: str) -> None:
"""Store stdin input to be used by the next plugin CLI invocation."""
context.cli_input = answer + "\n"
@when('I run "agents plugin {args}"')
def step_run_agents_plugin(context: Any, args: str) -> None:
"""Invoke a plugin CLI command and store output in context.command_output."""
from typer.testing import CliRunner
from cleveragents.cli.main import app
plugin_manager = getattr(context, "plugin_manager", None)
stdin = getattr(context, "cli_input", None)
runner = CliRunner()
split_args = args.split()
if plugin_manager is not None:
with patch(
"cleveragents.cli.commands.plugin._get_plugin_manager",
return_value=plugin_manager,
):
result = runner.invoke(
app, ["plugin", *split_args], input=stdin, catch_exceptions=True
)
else:
result = runner.invoke(
app, ["plugin", *split_args], input=stdin, catch_exceptions=True
)
context.command_output = result.output or ""
@then("the plugin CLI output should be valid JSON")
def step_plugin_output_is_json(context: Any) -> None:
"""Check if plugin CLI output is valid JSON."""
output = getattr(context, "command_output", "")
try:
context.json_output = json.loads(output)
except json.JSONDecodeError as e:
raise AssertionError(f"Output is not valid JSON: {e}") from e
+291
View File
@@ -0,0 +1,291 @@
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
"""Plugin management commands for CleverAgents CLI.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
The ``agents plugin`` command group manages plugins in the CleverAgents
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
plugin system.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
## Commands
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
| Command | Description |
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
|----------------------------|--------------------------------------------------|
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
| ``agents plugin list`` | List all installed plugins |
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
| ``agents plugin show`` | Show plugin details |
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
| ``agents plugin enable`` | Enable a disabled plugin |
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
| ``agents plugin disable`` | Disable an active plugin |
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
| ``agents plugin install`` | Install a plugin from a path or PyPI |
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
| ``agents plugin remove`` | Remove an installed plugin |
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Based on issue #5756 - Plugin Architecture CLI Implementation.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
"""
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
from __future__ import annotations
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
from collections import OrderedDict
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
from pathlib import Path
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
from typing import Annotated, Any
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
import typer
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
from rich.table import Table
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
from cleveragents.cli.formatting import OutputFormat, format_output
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
from cleveragents.cli.renderers import _get_console
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
from cleveragents.infrastructure.plugins.exceptions import (
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
PluginError,
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
PluginLoadError,
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
)
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
from cleveragents.infrastructure.plugins.manager import PluginManager
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
from cleveragents.infrastructure.plugins.types import PluginDescriptor, PluginState
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
# Create sub-app for plugin commands
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
app = typer.Typer(help="Manage plugins in the CleverAgents plugin system.")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
console = _get_console()
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
# Reusable --format option description
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
_FORMAT_HELP = "Output format: json, yaml, plain, table, or rich (default: rich)"
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
def _get_plugin_manager() -> PluginManager:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
"""Get the PluginManager instance."""
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
return PluginManager()
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
def _plugin_spec_dict(descriptor: PluginDescriptor) -> OrderedDict[str, Any]:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
"""Return plugin data as a dict for CLI rendering.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Supports both domain model objects (with ``as_cli_dict``) and
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
plain dicts returned by the repository layer.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
"""
Outdated
Review

Suggestion: The from rich.panel import Panel is an inline import inside a function. Prefer moving it to the top of the file with other rich imports.

Suggestion: The `from rich.panel import Panel` is an inline import inside a function. Prefer moving it to the top of the file with other rich imports.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
result: OrderedDict[str, Any] = OrderedDict()
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
result["name"] = descriptor.name
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
result["version"] = descriptor.version
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
result["description"] = descriptor.description or ""
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
result["module_path"] = descriptor.module_path or ""
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
result["class_name"] = descriptor.class_name or ""
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
result["state"] = descriptor.state.value if descriptor.state else "unknown"
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
return result
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
def _print_plugin(
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
descriptor: PluginDescriptor,
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
title: str = "Plugin",
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
fmt: str = OutputFormat.RICH.value,
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
) -> None:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
"""Print plugin details in the requested format."""
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
if fmt != OutputFormat.RICH.value:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
data = _plugin_spec_dict(descriptor)
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
console.print(format_output(dict(data), fmt))
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
return
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
# Rich panel format
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
details = (
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
f"[bold]Name:[/bold] {descriptor.name}\n"
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
f"[bold]Version:[/bold] {descriptor.version}\n"
Outdated
Review

Suggestion: Consider using render_success() / render_error() from cleveragents.cli.renderers instead of direct console.print() for consistency with other CLI commands.

Suggestion: Consider using `render_success()` / `render_error()` from `cleveragents.cli.renderers` instead of direct `console.print()` for consistency with other CLI commands.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
f"[bold]Description:[/bold] {descriptor.description or '(none)'}\n"
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
f"[bold]Module Path:[/bold] {descriptor.module_path or '(none)'}\n"
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
f"[bold]Class Name:[/bold] {descriptor.class_name or '(none)'}\n"
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
f"[bold]State:[/bold] "
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
f"{descriptor.state.value if descriptor.state else 'unknown'}"
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
)
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
from rich.panel import Panel
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
console.print(Panel(details, title=title, expand=False))
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
@app.command("list")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
def list_plugins(
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
fmt: Annotated[
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
str,
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
typer.Option("--format", "-f", help=_FORMAT_HELP),
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
] = "rich",
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
) -> None:
Outdated
Review

BLOCKING: These commands lack the --format/--f flag: show (line 165), enable (line 194), disable (line 231), install (line 268), remove (line 295). Issue #5756 spec requires "JSON/YAML output format support for all plugin commands". Add fmt: Annotated[str, typer.Option("--format", "-f", help=_FORMAT_HELP)] = "rich" to each and conditionally format output.

BLOCKING: These commands lack the --format/--f flag: show (line 165), enable (line 194), disable (line 231), install (line 268), remove (line 295). Issue #5756 spec requires "JSON/YAML output format support for all plugin commands". Add `fmt: Annotated[str, typer.Option("--format", "-f", help=_FORMAT_HELP)] = "rich"` to each and conditionally format output.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
"""List all installed plugins.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Examples:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
agents plugin list
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
agents plugin list --format json
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
agents plugin list --format yaml
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
"""
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
manager = _get_plugin_manager()
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
plugins = manager.list_plugins()
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
# Non-rich formats use the formatting helper
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
if fmt != OutputFormat.RICH.value:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
data = [dict(_plugin_spec_dict(p)) for p in plugins]
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
console.print(format_output(data, fmt))
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
return
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
if not plugins:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
console.print("[yellow]No plugins found.[/yellow]")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
console.print("Install one with 'agents plugin install <path>'")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
return
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
# Rich table
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
table = Table(title=f"Plugins ({len(plugins)} total)")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
table.add_column("Name", style="cyan")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
table.add_column("Version", style="blue")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
table.add_column("State", style="magenta")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
table.add_column("Description", style="dim")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
for plugin in plugins:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
desc = str(plugin.description or "")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
if len(desc) > 40:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
desc = desc[:37] + "..."
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
table.add_row(
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
plugin.name,
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
plugin.version,
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
plugin.state.value if plugin.state else "unknown",
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
desc,
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
)
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
console.print(table)
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
@app.command("show")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
def show_plugin(
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
name: Annotated[
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
str,
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
typer.Argument(help="Name of the plugin to show"),
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
],
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
fmt: Annotated[
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
str,
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
typer.Option("--format", "-f", help=_FORMAT_HELP),
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
] = "rich",
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
) -> None:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
"""Show details for a plugin.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Specify the plugin name.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Examples:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
agents plugin show cleveragents-builtin-tools
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
agents plugin show --format json cleveragents-builtin-tools
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
"""
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
try:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
manager = _get_plugin_manager()
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
descriptor = manager.get_plugin(name)
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
_print_plugin(descriptor, title="Plugin Details", fmt=fmt)
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
except PluginError as exc:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
console.print(f"[red]Plugin not found:[/red] {name}")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
raise typer.Abort() from exc
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
@app.command("enable")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
def enable_plugin(
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
name: Annotated[
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
str,
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
typer.Argument(help="Name of the plugin to enable"),
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
],
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
) -> None:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
"""Enable a disabled plugin.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Activates a plugin that was previously disabled.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Examples:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
agents plugin enable cleveragents-builtin-tools
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
"""
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
try:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
manager = _get_plugin_manager()
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
descriptor = manager.get_plugin(name)
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
if descriptor.state == PluginState.ACTIVATED:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
console.print(f"[yellow]Plugin already enabled:[/yellow] {name}")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
return
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
manager.activate_plugin(name)
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
console.print(f"[green]Enabled plugin:[/green] {name}")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
except (PluginError, PluginLoadError) as exc:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
console.print(f"[red]Error enabling plugin:[/red] {exc}")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
raise typer.Abort() from exc
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
@app.command("disable")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
def disable_plugin(
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
name: Annotated[
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
str,
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
typer.Argument(help="Name of the plugin to disable"),
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
],
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
) -> None:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
"""Disable an active plugin.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Deactivates a plugin without removing it.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Examples:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
agents plugin disable cleveragents-builtin-tools
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
"""
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
try:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
manager = _get_plugin_manager()
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
descriptor = manager.get_plugin(name)
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
if descriptor.state != PluginState.ACTIVATED:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
console.print(f"[yellow]Plugin not active:[/yellow] {name}")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
return
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
manager.deactivate_plugin(name)
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
console.print(f"[green]Disabled plugin:[/green] {name}")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
except PluginError as exc:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
console.print(f"[red]Error disabling plugin:[/red] {exc}")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
raise typer.Abort() from exc
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
@app.command("install")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
def install_plugin(
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
path: Annotated[
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
str,
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
typer.Argument(help="Path to plugin or PyPI package name"),
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
],
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
) -> None:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
"""Install a plugin from a local path or PyPI.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Installs a plugin from a local directory or PyPI package.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Examples:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
agents plugin install ./my-plugin
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
agents plugin install cleveragents-builtin-tools
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
"""
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
plugin_path = Path(path)
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
if plugin_path.exists() and plugin_path.is_dir():
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
console.print(f"[yellow]Installing from path:[/yellow] {path}")
Outdated
Review

BLOCKING: Dead code — get_plugin() in PluginManager never returns None; it raises PluginNotFoundError. The if descriptor is None checks in show_plugin, enable_plugin, disable_plugin, and remove_plugin are unreachable. Additionally, NotFoundError is imported but never functionally used. Remove these dead checks.

BLOCKING: Dead code — `get_plugin()` in PluginManager never returns None; it raises PluginNotFoundError. The `if descriptor is None` checks in show_plugin, enable_plugin, disable_plugin, and remove_plugin are unreachable. Additionally, `NotFoundError` is imported but never functionally used. Remove these dead checks.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
console.print("[dim]Plugin installation from local paths coming soon[/dim]")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
else:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
console.print(f"[yellow]Installing from PyPI:[/yellow] {path}")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
console.print("[dim]PyPI installation coming soon[/dim]")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
@app.command("remove")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
def remove_plugin(
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
name: Annotated[
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
str,
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
typer.Argument(help="Name of the plugin to remove"),
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
],
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
yes: Annotated[
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
bool,
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
typer.Option("--yes", "-y", help="Skip confirmation prompt"),
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
] = False,
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
) -> None:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
"""Remove an installed plugin.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Removes a plugin from the system.
Outdated
Review

BLOCKING: install_plugin() is a no-op stub — prints "coming soon" and exits. This is not acceptable for a shipped subcommand. Either implement proper installation or remove the command.

BLOCKING: `install_plugin()` is a no-op stub — prints "coming soon" and exits. This is not acceptable for a shipped subcommand. Either implement proper installation or remove the command.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Examples:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
agents plugin remove cleveragents-builtin-tools
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
agents plugin remove --yes cleveragents-builtin-tools
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
"""
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
try:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
manager = _get_plugin_manager()
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
manager.get_plugin(name)
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
if not yes:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
confirm = typer.confirm(f"Remove plugin '{name}'?")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
if not confirm:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
console.print("[yellow]Aborted.[/yellow]")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
raise typer.Abort()
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
manager.deactivate_plugin(name)
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
console.print(f"[green]Removed plugin:[/green] {name}")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
except PluginError as exc:
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
console.print(f"[red]Plugin not found:[/red] {name}")
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
raise typer.Abort() from exc
Review

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.

BLOCKING: install_plugin command is a stub that only prints coming soon messages. Either implement full installation logic or remove this command until ready.
Review

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.

BLOCKING: remove command calls deactivate_plugin but is documented as Remove an installed plugin. Either rename to deactivate or implement actual removal. Command name, docstring, and behavior are inconsistent.
+56 -111
View File
@@ -80,7 +80,6 @@ def _register_subcommands() -> None:
try:
from cleveragents.cli.commands import (
acms_context,
action,
actor,
audit,
@@ -91,6 +90,7 @@ def _register_subcommands() -> None:
invariant,
lsp,
plan,
plugin,
project,
repo,
resource,
@@ -114,13 +114,6 @@ def _register_subcommands() -> None:
app.add_typer(project.app, name="project", help="Project management")
# Register acms with context sub-command (canonical: agents acms context show|clear)
acms_app = typer.Typer(
help="ACMS (Advanced Context Management System) operations.",
)
acms_app.add_typer(acms_context.app, name="context", help="Context management")
app.add_typer(acms_app, name="acms")
# Register context as a sub-app of actor (canonical: agents actor context)
actor.app.add_typer(
context.app,
@@ -230,13 +223,18 @@ def _register_subcommands() -> None:
app.add_typer(
server_app,
name="server",
help="Server management — start, connect, and status",
help="Server connection management (stub)",
)
app.add_typer(
repo.app,
name="repo",
help="Repository indexing management",
)
app.add_typer(
Outdated
Review

Suggestion: The plugin command is added to _register_subcommands() and valid_cmds, but consider whether the command registration should also call manager.discover() to auto-discover built-in plugins on CLI startup. The issue spec requires built-in plugin discovery.

Suggestion: The `plugin` command is added to `_register_subcommands()` and `valid_cmds`, but consider whether the command registration should also call `manager.discover()` to auto-discover built-in plugins on CLI startup. The issue spec requires built-in plugin discovery.
plugin.app,
name="plugin",
help="Manage plugins in the CleverAgents plugin system",
)
_subcommands_registered = True
@@ -258,17 +256,9 @@ def _print_basic_help() -> None:
"""Print a lightweight help message without heavy imports."""
typer.echo("CleverAgents - AI-powered development assistant (actor-first)")
typer.echo("Usage: cleveragents [OPTIONS] COMMAND [ARGS]...")
typer.echo("\nGlobal options:")
typer.echo(" --data-dir PATH Override global data directory")
typer.echo(" --config-path PATH Override global configuration file path")
typer.echo(" -v Increase log verbosity (repeatable)")
typer.echo(" --format -f FMT Output format: rich/color/table/plain/json/yaml")
typer.echo(" --version Show version and exit")
typer.echo(" --help -h Show this message and exit")
typer.echo("\nCommon commands:")
typer.echo(" project Project management")
typer.echo(" actor context Actor context management")
typer.echo(" acms context ACMS context management (show, clear)")
typer.echo(" plan Plan operations (actor required)")
typer.echo(" actor Actor management and defaults")
typer.echo(" init Initialize a project")
@@ -280,6 +270,16 @@ def _print_basic_help() -> None:
typer.echo(" completion Generate shell completion script")
typer.echo(" version Show version")
typer.echo("")
typer.echo("Global options:")
typer.echo(" --data-dir PATH Override the data directory")
typer.echo(" --config-path PATH Override the configuration file path")
typer.echo(" -v, --verbose Increase verbosity (repeatable: -v, -vv, -vvv)")
typer.echo(
" --format, -f FMT Output format: rich, color, table, plain, json, yaml"
)
typer.echo(" --version Show version")
typer.echo(" --show-secrets Reveal secrets in CLI output (default: masked)")
typer.echo("")
typer.echo("Actors: set a default with 'agents actor set-default <name>'.")
typer.echo("Actors only: provider/model flags were removed. Use actors instead.")
typer.echo("Built-ins are <provider>/<model>; custom actors use local/<id>.")
@@ -289,21 +289,6 @@ def _print_basic_help() -> None:
)
# ---------------------------------------------------------------------------
# Verbosity (-v) → log level mapping (ADR-021 §Global CLI Flags)
# ---------------------------------------------------------------------------
# Mapping: 0 = silent (CRITICAL), 1 = ERROR, 2 = WARNING, 3 = INFO,
# 4 = DEBUG, 5+ = DEBUG (TRACE not available in Python stdlib).
_VERBOSITY_LOG_LEVELS: tuple[str, ...] = (
"CRITICAL", # 0 — no -v flag (silent)
"ERROR", # 1 — -v
"WARNING", # 2 — -vv
"INFO", # 3 — -vvv
"DEBUG", # 4 — -vvvv
"DEBUG", # 5+ — -vvvvv (TRACE mapped to DEBUG)
)
def version_callback(value: bool) -> None:
"""Handle --version flag."""
if value:
@@ -348,97 +333,53 @@ def main_callback(
),
),
] = OutputFormat.RICH,
verbose: Annotated[
int,
typer.Option(
"-v",
"--verbose",
help="Increase verbosity (-v ERROR, -vv WARNING, -vvv INFO, -vvvv DEBUG)",
count=True,
),
] = 0,
data_dir: Annotated[
Path | None,
typer.Option(
"--data-dir",
help=(
"Override the global data directory for this invocation "
"(database, caches, sessions, logs). "
"Overrides CLEVERAGENTS_DATA_DIR and core.data-dir config key."
),
metavar="PATH",
help="Override the data directory (sets CLEVERAGENTS_DATA_DIR)",
),
] = None,
config_path: Annotated[
Path | None,
typer.Option(
"--config-path",
help=(
"Override the global configuration file path for this invocation. "
"Overrides CLEVERAGENTS_CONFIG_PATH and the default config location."
),
metavar="PATH",
help="Override the configuration file path (sets CLEVERAGENTS_CONFIG_PATH)",
),
] = None,
verbose: Annotated[
int,
typer.Option(
"-v",
count=True,
help=(
"Increase log verbosity (repeatable). "
"No flag = silent; -v = ERROR; -vv = WARN; "
"-vvv = INFO; -vvvv = DEBUG; -vvvvv = TRACE."
),
),
] = 0,
) -> None:
"""CleverAgents - AI-powered development assistant."""
if data_dir is not None:
if data_dir.exists() and not data_dir.is_dir():
typer.echo(f"Error: --data-dir '{data_dir}' is not a directory", err=True)
raise typer.Exit(code=1)
os.environ["CLEVERAGENTS_DATA_DIR"] = str(data_dir.resolve())
if config_path is not None:
if not config_path.is_file():
typer.echo(f"Error: --config-path '{config_path}' is not a file", err=True)
raise typer.Exit(code=1)
os.environ["CLEVERAGENTS_CONFIG_PATH"] = str(config_path.resolve())
_log_levels = ["CRITICAL", "ERROR", "WARNING", "INFO", "DEBUG"]
log_level = _log_levels[min(verbose, len(_log_levels) - 1)]
from cleveragents.config.logging import configure_structlog
# -----------------------------------------------------------------------
# Validate and wire --data-dir
# -----------------------------------------------------------------------
if data_dir is not None:
resolved_data_dir = data_dir.resolve()
if resolved_data_dir.exists() and not resolved_data_dir.is_dir():
get_err_console().print(
f"[red]Error: --data-dir '{data_dir}' exists but is not"
" a directory.[/red]"
)
raise typer.Exit(1)
# Wire: set env var so Settings and other components pick it up.
# Settings.__new__ reads CLEVERAGENTS_DATA_DIR on first access, so
# setting the env var before any Settings-reading code runs is the
# correct (and non-destructive) way to propagate the CLI override.
os.environ["CLEVERAGENTS_DATA_DIR"] = str(resolved_data_dir)
# -----------------------------------------------------------------------
# Validate and wire --config-path
# -----------------------------------------------------------------------
if config_path is not None:
resolved_config_path = config_path.resolve()
if not resolved_config_path.exists():
get_err_console().print(
f"[red]Error: --config-path '{config_path}' does not exist.[/red]"
)
raise typer.Exit(1)
if not resolved_config_path.is_file():
get_err_console().print(
f"[red]Error: --config-path '{config_path}' is not a file.[/red]"
)
raise typer.Exit(1)
# Wire: set env var so ConfigService instances created later use this path
os.environ["CLEVERAGENTS_CONFIG_PATH"] = str(resolved_config_path)
# -----------------------------------------------------------------------
# Configure log verbosity from -v count (ADR-021 §Global CLI Flags)
# -----------------------------------------------------------------------
log_level = _VERBOSITY_LOG_LEVELS[min(verbose, len(_VERBOSITY_LOG_LEVELS) - 1)]
configure_structlog(log_level=log_level)
_register_subcommands()
# -----------------------------------------------------------------------
# Store all global options in ctx.obj for subcommand access
# -----------------------------------------------------------------------
ctx.ensure_object(dict)
ctx.obj["format"] = fmt.value
ctx.obj["data_dir"] = str(data_dir.resolve()) if data_dir is not None else None
ctx.obj["config_path"] = (
str(config_path.resolve()) if config_path is not None else None
)
ctx.obj["verbose"] = verbose
@@ -598,6 +539,9 @@ def init(
raise typer.Exit(1) from e
# Shortcuts for most common commands
@app.command()
def apply(
plan_id: Annotated[
@@ -774,7 +718,6 @@ def main(args: list[str] | None = None) -> int:
"diagnostics",
"init",
"project",
"acms",
"context",
"plan",
"actor",
@@ -795,6 +738,7 @@ def main(args: list[str] | None = None) -> int:
"tui", # Textual TUI
"server", # Server connection management
"repo", # Repository indexing management
"plugin", # Plugin management
"apply", # Shortcut for plan apply
"context-load", # Shortcut for context add
"context-add", # Shortcut
@@ -815,9 +759,9 @@ def main(args: list[str] | None = None) -> int:
# Only register heavyweight subcommands when the invoked command
# actually needs them. Lightweight top-level commands (version,
# info, diagnostics, apply, context-load, context-add, init) are
# defined directly on `app` and do not require the full subcommand
# tree, avoiding expensive container/service imports.
# info, diagnostics, apply, context-load, context-add,
# init) are defined directly on `app` and do not require the full
# subcommand tree, avoiding expensive container/service imports.
_LIGHTWEIGHT_COMMANDS = frozenset(
{
"version",
@@ -870,14 +814,15 @@ def main(args: list[str] | None = None) -> int:
err_console.print("\n[yellow]Interrupted by user[/yellow]")
return 130
except Exception as e:
if any(c.__name__ == "UsageError" for c in type(e).__mro__) and hasattr(
e, "format_message"
):
err_console = get_err_console()
err_console.print(f"Error: {e.format_message()}") # type: ignore[attr-defined]
return 2
from cleveragents.core.error_handling import classify_error, wrap_unexpected
from cleveragents.shared.redaction import redact_value
err_console = get_err_console()
# Always print the original exception type/message to stderr so that
# actionable details (e.g. "No such option: --flag") remain visible
# even when the log level is set to CRITICAL (structlog suppressed).
err_console.print(f"[dim]{type(e).__name__}: {redact_value(str(e))}[/dim]")
safe = wrap_unexpected(e)
info = classify_error(safe)
err_console.print(