feat: list moderators (#204)

This commit is contained in:
Michael Neale
2024-10-30 08:41:34 +11:00
committed by GitHub
parent c75917cf37
commit 1c128e7316
2 changed files with 30 additions and 0 deletions

View File

@@ -100,6 +100,26 @@ def list_toolkits() -> None:
print(f" - [bold]{toolkit_name}[/bold]: {first_line_of_doc}")
@goose_cli.group()
def moderators() -> None:
"""Manage moderators"""
pass
@moderators.command(name="list")
def list_moderators() -> None:
"""List available moderators"""
from exchange.moderators import load_plugins
moderators = load_plugins(group="exchange.moderator")
print("[green]Available moderators:[/green]")
for moderator_name, moderator in moderators.items():
lines_doc = moderator.__doc__.split("\n") if moderator.__doc__ else ["No description available"]
first_line_of_doc = lines_doc[0]
print(f" - [bold]{moderator_name}[/bold]: {first_line_of_doc}")
@goose_cli.group()
def providers() -> None:
"""Manage providers"""

View File

@@ -163,3 +163,13 @@ def test_goose_no_args_print_help():
assert "Usage:" in result.output
assert "Options:" in result.output
assert "Commands:" in result.output
def test_moderators_list_command():
runner = CliRunner()
result = runner.invoke(cli, ["moderators", "list"])
assert result.exit_code == 0
assert "Available moderators:" in result.output
assert "passive" in result.output
assert "summarize" in result.output
assert "truncate" in result.output