Skip to content

Latest commit

 

History

History
104 lines (76 loc) · 2.98 KB

File metadata and controls

104 lines (76 loc) · 2.98 KB

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