Files
nvi/api/analyses/registry.py

31 lines
770 B
Python

"""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()
]