From 1c128e73163def5d4bc157894b7a5400d62c8b65 Mon Sep 17 00:00:00 2001 From: Michael Neale Date: Wed, 30 Oct 2024 08:41:34 +1100 Subject: [PATCH] feat: list moderators (#204) --- src/goose/cli/main.py | 20 ++++++++++++++++++++ tests/cli/test_main.py | 10 ++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/goose/cli/main.py b/src/goose/cli/main.py index 431e26e3..8d9991ef 100644 --- a/src/goose/cli/main.py +++ b/src/goose/cli/main.py @@ -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""" diff --git a/tests/cli/test_main.py b/tests/cli/test_main.py index 38b38920..67177e03 100644 --- a/tests/cli/test_main.py +++ b/tests/cli/test_main.py @@ -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