Core library for Agent-Flavored Markdown (AFM) - providing parsing, validation, and interface implementations.
- AFM File Parser: Extracts YAML frontmatter and Markdown content (Role, Instructions sections)
- Pydantic Models: Type-safe validation of AFM schema for agents, interfaces, and tools
- Interface Implementations: Console chat, web chat, and webhook interfaces
- AgentRunner Protocol: Pluggable backend system for different execution frameworks
- CLI Framework: Entry point for the
afmcommand with validation and run commands
This package is typically installed as part of afm-cli. For development or custom integrations:
pip install afm-corefrom afm.parser import parse_afm_file
# Parse an AFM file (returns an AFMRecord)
record = parse_afm_file("agent.afm.md")
# Access parsed data
print(f"Agent: {record.metadata.name}")
print(f"Model: {record.metadata.model.provider}/{record.metadata.model.name}")
print(f"Interfaces: {[i.type for i in record.metadata.interfaces]}")
print(f"Role: {record.role}")
print(f"Instructions: {record.instructions}")This project uses uv for dependency management.
# Clone the repository
git clone https://github.com/wso2/reference-implementations-afm.git
cd python-interpreter
# Install dependencies
uv sync# Run all tests
uv run pytest packages/afm-core/tests/
# Run with coverage
uv run pytest packages/afm-core/tests/ --cov=afm# Format code
uv run ruff format
# Lint code
uv run ruff checkpackages/afm-core/src/afm/
├── __init__.py
├── cli.py # CLI entry point
├── exceptions.py # Custom exceptions
├── models.py # Pydantic models
├── parser.py # AFM file parsing
├── runner.py # AgentRunner protocol and runner utilities
├── schema_validator.py # Schema validation
├── templates.py # Prompt templates
├── update.py # Update checker
├── variables.py # Variable substitution
└── interfaces/ # Interface implementations
├── __init__.py
├── base.py # Interface utilities (get_interfaces, get_http_path)
├── console_chat.py
├── web_chat.py
└── webhook.py
For comprehensive documentation, see the project README.
Apache-2.0