67 lines
2.6 KiB
Python
67 lines
2.6 KiB
Python
from __future__ import annotations
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
sys.path.insert(0, str(ROOT / "active-runtime/app"))
|
|
|
|
from aios_capability_contract import ( # noqa: E402
|
|
capability_contract,
|
|
has_capabilities,
|
|
normalize_required_capabilities,
|
|
normalize_worker_capabilities,
|
|
normalized_capability_matrix,
|
|
registered_capability,
|
|
validate_capability_contract_registry,
|
|
)
|
|
|
|
|
|
@pytest.mark.parametrize("runtime", ["hermes", "openclaw"])
|
|
def test_runtime_capability_is_known_to_task_and_worker_vocabulary(runtime: str) -> None:
|
|
capability = f"agent.runtime.{runtime}"
|
|
assert normalize_required_capabilities([capability]) == frozenset({capability})
|
|
assert normalize_worker_capabilities([capability]) == frozenset({capability})
|
|
assert has_capabilities([capability], [capability]) is True
|
|
|
|
|
|
def test_runtime_capabilities_are_isolated_between_workers() -> None:
|
|
assert has_capabilities(["agent.runtime.hermes"], ["agent.runtime.openclaw"]) is False
|
|
assert has_capabilities(["agent.runtime.openclaw"], ["agent.runtime.hermes"]) is False
|
|
|
|
|
|
def test_unknown_runtime_capability_remains_fail_closed() -> None:
|
|
assert has_capabilities(["agent.runtime.hermes"], ["agent.runtime.unknown"]) is False
|
|
|
|
|
|
def test_autonomous_coordinator_capability_is_registered_on_both_sides() -> None:
|
|
capability = "engineering.autonomous"
|
|
assert registered_capability(capability) is True
|
|
assert registered_capability(capability, worker=True) is True
|
|
assert normalize_required_capabilities([capability]) == frozenset({capability})
|
|
assert normalize_worker_capabilities([capability]) == frozenset({capability})
|
|
contract = capability_contract(capability)
|
|
assert contract is not None
|
|
assert contract.dependencies == ("agent_task_control_plane",)
|
|
assert validate_capability_contract_registry()["valid"] is True
|
|
|
|
|
|
def test_supervisor_coordinator_requires_runtime_and_autonomous_capabilities() -> None:
|
|
required = ["agent.runtime.openclaw", "engineering.autonomous"]
|
|
assert normalized_capability_matrix(required, required) == {
|
|
"worker_effective": required,
|
|
"task_required": required,
|
|
"eligible": True,
|
|
}
|
|
assert has_capabilities(["agent.runtime.openclaw"], required) is False
|
|
assert has_capabilities(["engineering.autonomous"], required) is False
|
|
|
|
|
|
def test_autonomous_capability_near_matches_remain_fail_closed() -> None:
|
|
worker = ["agent.runtime.openclaw", "engineering.autonomous"]
|
|
assert has_capabilities(worker, ["engineering.autonomous.extra"]) is False
|
|
assert has_capabilities(worker, ["engineering.*"]) is False
|