AFM Core
Core library for Agent-Flavored Markdown (AFM) - providing parsing, validation, and interface implementations.
Features
- 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
Installation
This package is typically installed as part of afm-cli. For development or custom integrations:
pip install afm-core
Usage
from 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}")
Development
Setup
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
Running Tests
# Run all tests
uv run pytest packages/afm-core/tests/
# Run with coverage
uv run pytest packages/afm-core/tests/ --cov=afm
Code Quality
# Format code
uv run ruff format
# Lint code
uv run ruff check
Project Structure
packages/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
Documentation
For comprehensive documentation, see the project README.
License
Apache-2.0
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
afm_core-0.3.0.tar.gz
(34.2 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
afm_core-0.3.0-py3-none-any.whl
(46.5 kB
view details)
File details
Details for the file afm_core-0.3.0.tar.gz.
File metadata
- Download URL: afm_core-0.3.0.tar.gz
- Upload date:
- Size: 34.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d15826d68766da900bb697cc7bf5f19e0142933006f98e7877f90e58db4ca7e7
|
|
| MD5 |
b221240f837fc0df17a8ab91e6e5d269
|
|
| BLAKE2b-256 |
c5562f76d3fa9f3848bb34149a00521f5b0b08fc9db54f1fd37dbfad3ae50a55
|
File details
Details for the file afm_core-0.3.0-py3-none-any.whl.
File metadata
- Download URL: afm_core-0.3.0-py3-none-any.whl
- Upload date:
- Size: 46.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c9983fbce969e58ef8e3330773aaeee27bfd53281901f6a22ec0c4dd5596892a
|
|
| MD5 |
f332d748bb1aa48345e522e575a5ee53
|
|
| BLAKE2b-256 |
134e615f8f7c6aa48ebda6ca36c691e29edc150a18d6e320d903487b9c349a47
|