ci-triage-env / src /ci_triage_env /data /annotations /informative_tools.py
Prasham.Jain
feat(data): Phase B5 β€” corpus instantiation, HF publish, annotations
18a3fbf
"""Annotation enrichment utilities for Phase B5."""
from __future__ import annotations
from ci_triage_env.schemas.scenario import Scenario
from ci_triage_env.schemas.tools import ALL_TOOLS
_ALL_TOOL_NAMES: list[str] = [t.name for t in ALL_TOOLS]
def enrich_annotations(scenario: Scenario) -> Scenario:
"""Return a copy of *scenario* with ``informative_tools`` auto-populated.
If the scenario already has a non-empty ``informative_tools`` list it is
returned unchanged. Otherwise we fall back to listing every tool for which
at least one ``tool_outputs`` key exists β€” a conservative but correct
default.
"""
if scenario.informative_tools:
return scenario
covered: list[str] = []
for tool_name in _ALL_TOOL_NAMES:
for key in scenario.tool_outputs:
if key == tool_name or key.startswith(tool_name + ":"):
covered.append(tool_name)
break
return scenario.model_copy(update={"informative_tools": covered})