Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

README.md

AFM Core

PyPI version Python version License

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 afm command 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