Source code for dash_evals.runner.solvers.context_injector

"""Solver to inject context files into the conversation."""

from inspect_ai.model import ChatMessageUser
from inspect_ai.solver import Generate, Solver, TaskState, solver


[docs] @solver def context_injector(context_files: list[dict]) -> Solver: """ Inject context files into the conversation. This solver inserts context files (like Dart/Flutter best practices) as a user message after the system message but before the main prompt. Args: context_files: List of context file dicts with 'title', 'version', 'content' keys. Returns: A solver that injects context files into the conversation. """ async def solve(state: TaskState, generate: Generate) -> TaskState: if not context_files: return state # Build context content from all context files context_parts = ["## Additional Guidelines\n"] for cf in context_files: title = cf.get("title", "Untitled") version = cf.get("version", "0.0") content = cf.get("content", "") context_parts.append(f"\n### {title} (v{version})\n") context_parts.append(content) context_message = "\n".join(context_parts) # Insert after system message (index 1) but before user prompt state.messages.insert(1, ChatMessageUser(content=context_message)) return state return solve