Import AITURK IDE 1.0.0-beta.1 from Hermes 63279301; preserve MIT license
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
"""The `hermes-agent` skill is what a running Hermes knows about itself.
|
||||
|
||||
`website/` is never packaged, so an installed Hermes has no local copy of the
|
||||
user guide; skills ARE synced into `$HERMES_HOME/skills/`. The skill therefore
|
||||
does not try to restate the product — it routes to the published `llms.txt`,
|
||||
which is generated from the docs tree on every build and so can never be behind
|
||||
the feature set. These tests keep that routing honest: the index has to be where
|
||||
the skill says it is, and every reference has to be reachable, otherwise a
|
||||
shipped feature is invisible and the agent answers "Hermes can't do that."
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import importlib.util
|
||||
import re
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
REPO = Path(__file__).resolve().parents[2]
|
||||
SKILL_DIR = REPO / "skills" / "autonomous-ai-agents" / "hermes-agent"
|
||||
SKILL_MD = SKILL_DIR / "SKILL.md"
|
||||
GENERATOR = REPO / "website" / "scripts" / "generate-llms-txt.py"
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def skill_text() -> str:
|
||||
return SKILL_MD.read_text(encoding="utf-8")
|
||||
|
||||
|
||||
def test_every_referenced_file_exists(skill_text):
|
||||
"""Routing a question to a file that isn't there is a dead end."""
|
||||
targets = set(re.findall(r"`((?:references|templates)/[^`]+)`", skill_text))
|
||||
|
||||
assert targets, "the skill's routing table no longer references any files"
|
||||
for target in sorted(targets):
|
||||
assert (SKILL_DIR / target).exists(), f"SKILL.md routes to missing {target}"
|
||||
|
||||
|
||||
def test_every_reference_is_reachable_from_the_skill(skill_text):
|
||||
"""An unrouted reference is one the agent will never think to open.
|
||||
|
||||
This is the failure that produced the original complaint: content can exist
|
||||
and still be invisible because nothing points at it.
|
||||
"""
|
||||
on_disk = {f"references/{path.name}" for path in (SKILL_DIR / "references").glob("*.md")}
|
||||
routed = set(re.findall(r"`(references/[^`]+)`", skill_text))
|
||||
|
||||
assert not (on_disk - routed), (
|
||||
f"reference files no reader will ever reach: {sorted(on_disk - routed)} — "
|
||||
"add a routing-table row in SKILL.md"
|
||||
)
|
||||
|
||||
|
||||
def test_unknown_features_route_to_the_published_index(skill_text):
|
||||
"""The catch-all is what makes coverage of the whole product possible."""
|
||||
assert "/docs/llms.txt" in skill_text
|
||||
# web_extract can be disabled; terminal never is.
|
||||
assert "curl" in skill_text, "no way to reach the index without web tools"
|
||||
|
||||
|
||||
def test_the_index_is_published_where_the_skill_says_it_is(skill_text):
|
||||
"""A skill pointing at a URL nobody generates is worse than no routing."""
|
||||
spec = importlib.util.spec_from_file_location("generate_llms_txt", GENERATOR)
|
||||
assert spec is not None and spec.loader is not None
|
||||
gen = importlib.util.module_from_spec(spec)
|
||||
spec.loader.exec_module(gen)
|
||||
|
||||
assert f"{gen.SITE_BASE}/llms.txt" in skill_text
|
||||
Reference in New Issue
Block a user