from pathlib import Path ROOT = Path(__file__).resolve().parents[1] SKILL_ROOT = ROOT / "hermes-agent" / "leoclean-skills" def test_gcp_kb_skill_uses_cloudsql_bridge_not_vps_docker() -> None: text = (SKILL_ROOT / "gcp" / "teleo-kb-bridge" / "SKILL.md").read_text() assert "Cloud SQL" in text assert "answer from the Cloud SQL KB after a bounded read" in text assert "Do not browse the public web just because the KB has evidence gaps" in text assert "/home/teleo/.hermes/profiles/leoclean/bin/teleo-kb" in text assert "docker exec" not in text assert "teleo-pg" not in text assert "on the VPS" not in text def test_vps_kb_skill_keeps_vps_scope_explicit() -> None: text = (SKILL_ROOT / "vps" / "teleo-kb-bridge" / "SKILL.md").read_text() squashed = " ".join(text.split()) assert "VPS production leoclean" in text assert "Cloud SQL" not in text assert "/home/teleo/.hermes/profiles/leoclean/bin/teleo-kb" in text assert "prefer the bridge over raw database access" in text assert "Claim / Body / Concept Map Loop" in text assert "Status: applied | pending | missing | partially applied" in text assert "Do not call an approved proposal \"implemented\"" in text assert "needs reviewer/operator apply tooling rather than inviting ad hoc SQL from chat" in squashed assert "Never end a normal Telegram answer by offering to run direct `INSERT`, `UPDATE`" in text assert "Next admin-panel action" in text assert "draft or refresh the admin review packet" in squashed assert "/kb/claims/" in text assert "wrap claim IDs, proposal IDs" in text assert "claim page: https://leo.livingip.xyz/kb/claims/" in text def test_gcp_kb_skill_keeps_claim_links_and_backtick_rendering() -> None: text = (SKILL_ROOT / "gcp" / "teleo-kb-bridge" / "SKILL.md").read_text() assert "/kb/claims/" in text assert "wrap claim IDs, proposal IDs" in text assert "claim page: https://leo.livingip.xyz/kb/claims/" in text def test_leoclean_kb_skills_anchor_external_doctrine_in_target_project_language() -> None: for surface in ("vps", "gcp"): text = (SKILL_ROOT / surface / "teleo-kb-bridge" / "SKILL.md").read_text() assert "External Doctrine Contributions" in text assert "Use the target project's native language first" in text assert "no single voice can own understanding" in text assert "purpose precedes" in text assert "Prefer issue-before-PR" in text assert "Consent is action-specific" in text def test_vps_live_telegram_skill_uses_systemd_for_gateway_liveness() -> None: text = (SKILL_ROOT / "vps" / "live-leo-telegram" / "SKILL.md").read_text() assert "systemctl is-active leoclean-gateway.service" in text assert "systemctl show leoclean-gateway.service" in text assert "hermes -p leoclean gateway run" in text assert "Do not use `hermes -p leoclean gateway status` as authoritative" in text assert "If you are currently replying in Telegram" in text