"""載入 .claude/agents/*.md 並解析 system prompt（ADR-095）

2026-04-24 Claude Sonnet 4.6 (WS4 Hermes NL)
2026-05-04 Claude Sonnet 4.6 (Task 1.2): 移除本機絕對路徑，改用 AGENTS_DIR 環境變數
"""
from __future__ import annotations
import os
import pathlib
from functools import lru_cache

# 本機預設: /Users/ogt/awoooi/.claude/agents（由 AGENTS_DIR 覆蓋）
# K8s 容器預設: /app/.claude/agents（Dockerfile COPY .claude/agents/ ./.claude/agents/）
_AGENTS_DIR = pathlib.Path(os.getenv("AGENTS_DIR", "/app/.claude/agents"))


def _parse_agent_md(path: pathlib.Path) -> str:
    """去除 YAML frontmatter，回傳 body 作為 system prompt"""
    text = path.read_text(encoding="utf-8")
    # --- frontmatter ---
    if text.startswith("---"):
        end = text.find("---", 3)
        if end != -1:
            return text[end + 3:].strip()
    return text.strip()


@lru_cache(maxsize=None)
def get_agent_system_prompt(agent_name: str) -> str | None:
    """
    回傳指定 agent 的 system prompt。
    若 .md 不存在回傳 None（caller 決定是否 fallback）。
    """
    path = _AGENTS_DIR / f"{agent_name}.md"
    if not path.exists():
        return None
    return _parse_agent_md(path)


def list_available_agents() -> list[str]:
    """回傳目前存在的 agent 名稱列表（無副檔名）"""
    return [p.stem for p in sorted(_AGENTS_DIR.glob("*.md"))]
