76 lines
2.2 KiB
Python
76 lines
2.2 KiB
Python
import unittest
|
|
from pathlib import Path
|
|
|
|
try:
|
|
import tomllib
|
|
except ModuleNotFoundError: # pragma: no cover
|
|
import tomli as tomllib
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
AGENTS_ROOT = ROOT / ".codex" / "agents"
|
|
|
|
AGENT_SKILL_REFERENCES = {
|
|
"coordinator-agent.toml": (
|
|
"fesa-requirements-baseline",
|
|
"fesa-reference-models",
|
|
"fesa-release-readiness",
|
|
),
|
|
"requirement-agent.toml": ("fesa-requirements-baseline",),
|
|
"research-agent.toml": (
|
|
"fesa-research-evidence",
|
|
"fem-theory-query",
|
|
),
|
|
"formulation-agent.toml": (
|
|
"fesa-formulation-spec",
|
|
"fem-theory-query",
|
|
),
|
|
"numerical-review-agent.toml": (
|
|
"fesa-numerical-review",
|
|
"fem-theory-query",
|
|
),
|
|
"io-definition-agent.toml": (
|
|
"fesa-io-contract",
|
|
"fem-theory-query",
|
|
),
|
|
"reference-model-agent.toml": (
|
|
"fesa-reference-models",
|
|
"fem-theory-query",
|
|
),
|
|
"implementation-planning-agent.toml": (
|
|
"fesa-formulation-spec",
|
|
"fesa-reference-models",
|
|
"fesa-cpp-msvc-tdd",
|
|
"fem-theory-query",
|
|
),
|
|
"implementation-agent.toml": ("fesa-cpp-msvc-tdd",),
|
|
"build-test-executor-agent.toml": ("fesa-cpp-msvc-tdd",),
|
|
"correction-agent.toml": ("fesa-cpp-msvc-tdd",),
|
|
"reference-verification-agent.toml": (
|
|
"fesa-reference-comparison",
|
|
"fesa-io-contract",
|
|
),
|
|
"physics-evaluation-agent.toml": (
|
|
"fesa-physics-sanity",
|
|
"fem-theory-query",
|
|
),
|
|
"release-agent.toml": ("fesa-release-readiness",),
|
|
}
|
|
|
|
|
|
class AgentSkillReferenceTests(unittest.TestCase):
|
|
def test_agents_reference_their_solver_skills(self):
|
|
for agent_file, skill_names in AGENT_SKILL_REFERENCES.items():
|
|
with self.subTest(agent=agent_file):
|
|
text = (AGENTS_ROOT / agent_file).read_text(encoding="utf-8")
|
|
data = tomllib.loads(text)
|
|
instructions = data["developer_instructions"]
|
|
|
|
self.assertIn("Skill references:", instructions)
|
|
for skill_name in skill_names:
|
|
self.assertIn(f"${skill_name}", instructions)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|