verbose live UI + tool-level SSE events + Groq default + regression tests

This commit is contained in:
2026-06-03 05:04:29 -03:00
parent 131f4d9b86
commit e124a8a7d9
69 changed files with 3030 additions and 137 deletions

30
api/analyses/registry.py Normal file
View File

@@ -0,0 +1,30 @@
"""Analysis registry — the planner reads this to know what's available."""
from __future__ import annotations
from typing import Any
from api.analyses.base import Analysis
from api.analyses.compare_periods import ComparePeriods
from api.analyses.direct_answer import DirectAnswer
REGISTRY: dict[str, Analysis] = {
DirectAnswer.name: DirectAnswer(),
ComparePeriods.name: ComparePeriods(),
}
def get(name: str) -> Analysis | None:
return REGISTRY.get(name)
def catalog() -> list[dict[str, Any]]:
"""Plain-dict catalog for prompt injection into the planner."""
return [
{
"name": a.name,
"description": a.description,
"args_schema": a.args_schema,
}
for a in REGISTRY.values()
]