microagent.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import os
  2. import frontmatter
  3. import pydantic
  4. class MicroAgentMetadata(pydantic.BaseModel):
  5. name: str
  6. agent: str
  7. triggers: list[str] = []
  8. class MicroAgent:
  9. def __init__(self, path: str):
  10. self.path = path
  11. if not os.path.exists(path):
  12. raise FileNotFoundError(f'Micro agent file {path} is not found')
  13. with open(path, 'r') as file:
  14. self._loaded = frontmatter.load(file)
  15. self._content = self._loaded.content
  16. self._metadata = MicroAgentMetadata(**self._loaded.metadata)
  17. def get_trigger(self, message: str) -> str | None:
  18. message = message.lower()
  19. for trigger in self.triggers:
  20. if trigger.lower() in message:
  21. return trigger
  22. return None
  23. @property
  24. def content(self) -> str:
  25. return self._content
  26. @property
  27. def metadata(self) -> MicroAgentMetadata:
  28. return self._metadata
  29. @property
  30. def name(self) -> str:
  31. return self._metadata.name
  32. @property
  33. def triggers(self) -> list[str]:
  34. return self._metadata.triggers
  35. @property
  36. def agent(self) -> str:
  37. return self._metadata.agent