from __future__ import annotations from app.agents.schemas.skills import SkillInjectionMode, SkillShortlistEntry MAX_SUMMARY_CHARS = 120 def choose_injection_mode(score: float, summary_available: bool) -> SkillInjectionMode: if score >= 0.75 and summary_available: return "summary" return "metadata_only" def render_skill_shortlist_context(entries: list[SkillShortlistEntry]) -> str: if not entries: return "" lines = ["[Task-Scoped Skills]"] for entry in entries[:3]: detail = entry.summary or "Relevant to the current request." detail = detail[:MAX_SUMMARY_CHARS] lines.append(f"- {entry.skill_name} | mode={entry.injection_mode} | score={entry.score:.2f}") lines.append(f" {detail}") if entry.matched_terms: lines.append(f" matched_terms={', '.join(entry.matched_terms[:6])}") return "\n".join(lines)