58 lines
2.6 KiB
Python
Executable File
58 lines
2.6 KiB
Python
Executable File
from __future__ import annotations
|
|
|
|
import unittest
|
|
|
|
from cognitive_agent.application.capability_registry import CapabilityRegistry
|
|
from cognitive_agent.application.seat_service import REPOSITORY_ROOT
|
|
from cognitive_agent.infrastructure.llm.openai_responses import build_intent_schema
|
|
|
|
|
|
class CapabilityRegistryTests(unittest.TestCase):
|
|
def test_loads_domain_owned_capabilities_and_execution_availability(self) -> None:
|
|
snapshot = CapabilityRegistry(REPOSITORY_ROOT, {"seat"}).snapshot()
|
|
domains = {item["domain"]: item for item in snapshot["domains"]}
|
|
|
|
self.assertEqual(domains["seat"]["availability"], "executable")
|
|
self.assertEqual(domains["climate"]["availability"], "catalog_only")
|
|
seat_capabilities = {item["name"] for item in domains["seat"]["capabilities"]}
|
|
self.assertIn("seat.set_backrest_recline", seat_capabilities)
|
|
self.assertIn("seat.set_legrest_extension", seat_capabilities)
|
|
self.assertIn("seat.save_posture_preset", seat_capabilities)
|
|
self.assertIn("seat.apply_posture_preset", seat_capabilities)
|
|
self.assertNotIn("seat.set_height", seat_capabilities)
|
|
self.assertIn(
|
|
"prefer_executable_when_equally_suitable",
|
|
snapshot["execution_policy"]["capability_selection"],
|
|
)
|
|
self.assertFalse(snapshot["execution_policy"]["named_preset_required"])
|
|
self.assertEqual(
|
|
snapshot["execution_policy"]["planning_environment"],
|
|
"dry_run_candidate_synthesis",
|
|
)
|
|
self.assertIn(
|
|
"vehicle",
|
|
next(
|
|
item
|
|
for item in domains["climate"]["capabilities"]
|
|
if item["name"] == "climate.set_fan_level"
|
|
)["target_scopes"],
|
|
)
|
|
|
|
def test_structured_output_schema_is_derived_from_registry(self) -> None:
|
|
snapshot = CapabilityRegistry(REPOSITORY_ROOT, {"seat"}).snapshot()
|
|
schema = build_intent_schema(snapshot)
|
|
properties = schema["properties"]
|
|
|
|
self.assertIn("climate", properties["detected_domains"]["items"]["enum"])
|
|
request = properties["requests"]["items"]["properties"]
|
|
self.assertIn("climate.set_fan_level", request["capability"]["enum"])
|
|
self.assertIn("seat.set_cushion_tilt", request["capability"]["enum"])
|
|
self.assertIn("seat.save_posture_preset", request["capability"]["enum"])
|
|
self.assertIn("save", request["operation"]["enum"])
|
|
self.assertIn("apply", request["operation"]["enum"])
|
|
self.assertIn("vehicle", request["target_scope"]["enum"])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|