32 lines
863 B
Python
32 lines
863 B
Python
"""Agent OS skill loader runtime."""
|
|
|
|
from dataclasses import dataclass, field
|
|
from typing import Dict, List
|
|
|
|
|
|
@dataclass
|
|
class SkillPackage:
|
|
skill_id: str
|
|
version: str
|
|
capabilities: List[str] = field(default_factory=list)
|
|
enabled: bool = True
|
|
|
|
|
|
class SkillLoader:
|
|
def __init__(self):
|
|
self.skills: Dict[str, SkillPackage] = {}
|
|
|
|
def register(self, skill: SkillPackage):
|
|
self.skills[skill.skill_id] = skill
|
|
|
|
def validate(self, skill_id: str):
|
|
skill = self.skills.get(skill_id)
|
|
return bool(skill and skill.enabled and skill.version)
|
|
|
|
def load_for_capability(self, capability: str):
|
|
return [s for s in self.skills.values() if capability in s.capabilities and s.enabled]
|
|
|
|
def disable(self, skill_id: str):
|
|
if skill_id in self.skills:
|
|
self.skills[skill_id].enabled = False
|