Add 'available' command to list all effect types

- Add _cmd_available() method to list all registered effect types
- Discover plugins and query registry to get complete list
- Add 'available' to help text and command processing
- Update help description for 'effects' command to clarify it shows current pipeline
This commit is contained in:
2026-03-22 17:19:15 -07:00
parent b1bf739324
commit e5799a346a

View File

@@ -249,6 +249,8 @@ class ReplEffect(EffectPlugin):
self._cmd_param(cmd_args, ctx)
elif cmd_name == "pipeline":
self._cmd_pipeline(ctx)
elif cmd_name == "available":
self._cmd_available(ctx)
elif cmd_name == "add_stage":
self._cmd_add_stage(cmd_args)
elif cmd_name == "remove_stage":
@@ -273,7 +275,8 @@ class ReplEffect(EffectPlugin):
self.state.output_buffer.append("Available commands:")
self.state.output_buffer.append(" help - Show this help")
self.state.output_buffer.append(" status - Show pipeline status")
self.state.output_buffer.append(" effects - List all effects")
self.state.output_buffer.append(" effects - List effects in current pipeline")
self.state.output_buffer.append(" available - List all available effect types")
self.state.output_buffer.append(" effect <name> <on|off> - Toggle effect")
self.state.output_buffer.append(
" param <effect> <param> <value> - Set parameter"
@@ -318,6 +321,26 @@ class ReplEffect(EffectPlugin):
else:
self.state.output_buffer.append("No context available")
def _cmd_available(self, ctx: EffectContext | None):
"""List all available effect types."""
try:
from engine.effects import get_registry
from engine.effects.plugins import discover_plugins
# Discover plugins if not already done
discover_plugins()
registry = get_registry()
all_effects = registry.list_all()
if all_effects:
self.state.output_buffer.append("Available effect types:")
for name in sorted(all_effects.keys()):
self.state.output_buffer.append(f" - {name}")
else:
self.state.output_buffer.append("No effects registered")
except Exception as e:
self.state.output_buffer.append(f"Error listing effects: {e}")
def _cmd_effect(self, args: list[str], ctx: EffectContext | None):
"""Toggle effect on/off."""
if len(args) < 2: