1 Commits

Author SHA1 Message Date
7eb3fca935 feat(benchmark): add hook mode with baseline cache for pre-push checks
- Fix lint errors and LSP issues in benchmark.py
- Add --hook mode to compare against saved baseline
- Add --baseline flag to save results as baseline
- Add --threshold to configure degradation threshold (default 20%)
- Add benchmark step to pre-push hook in hk.pkl
- Update AGENTS.md with hk documentation links and benchmark runner docs
2026-03-15 22:54:51 -07:00

View File

@@ -120,17 +120,30 @@ def benchmark_effect_with_display(
old_stderr = sys.stderr old_stderr = sys.stderr
try: try:
from engine.effects.types import EffectConfig, EffectContext
sys.stdout = StringIO() sys.stdout = StringIO()
sys.stderr = StringIO() sys.stderr = StringIO()
effect = effect_class() effect = effect_class()
effect.configure(enabled=True, intensity=1.0) effect.configure(EffectConfig(enabled=True, intensity=1.0))
ctx = EffectContext(
terminal_width=80,
terminal_height=24,
scroll_cam=0,
ticker_height=0,
mic_excess=0.0,
grad_offset=0.0,
frame_number=0,
has_message=False,
)
times = [] times = []
chars = sum(len(line) for line in buffer) chars = sum(len(line) for line in buffer)
for _ in range(iterations): for _ in range(iterations):
processed = effect.process(buffer) processed = effect.process(buffer, ctx)
t0 = time.perf_counter() t0 = time.perf_counter()
display.show(processed) display.show(processed)
elapsed = (time.perf_counter() - t0) * 1000 elapsed = (time.perf_counter() - t0) * 1000
@@ -200,6 +213,13 @@ def get_available_effects():
"""Get available effect classes.""" """Get available effect classes."""
try: try:
from engine.effects import get_registry from engine.effects import get_registry
try:
from effects_plugins import discover_plugins
discover_plugins()
except Exception:
pass
except Exception: except Exception:
return [] return []
@@ -208,7 +228,8 @@ def get_available_effects():
for name, effect in registry.list_all().items(): for name, effect in registry.list_all().items():
if effect: if effect:
effects.append((name, effect)) effect_cls = type(effect)
effects.append((name, effect_cls))
return effects return effects