from __future__ import annotations from typing import Iterable from providers.prompt_loader import load_prompt from skills import SkillStore from tools.registry import ToolRegistry DEFAULT_SYSTEM_PROMPT = load_prompt("base")["system"] def build_system_prompt( *, skill_store: SkillStore, active_skills: Iterable[str], tool_registry: ToolRegistry, workspace: str | None = None, base_prompt: str = DEFAULT_SYSTEM_PROMPT, ) -> str: tool_fragment = ", ".join(tool_registry.names()) prompt = f"{base_prompt}\nAvailable tools: {tool_fragment}." if workspace: prompt += f"\nWorkspace root: {workspace}." skill_fragment = skill_store.build_prompt_fragment(active_skills) if skill_fragment: prompt += f"\n\nLoaded skills:\n{skill_fragment}" return prompt