From 984fa89f287a63b009b804c5bb6a10b5f4701d94 Mon Sep 17 00:00:00 2001 From: Sergio Sisternes Date: Sun, 24 May 2026 01:17:50 +0100 Subject: [PATCH] refactor: rename project from SML to AML (Agent Markup Language) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rename all references from SML (Skill Markup Language) to AML (Agent Markup Language) across the entire project: - Rename crate directories: sml-core → aml-core, sml-python → aml-python - Update Rust crate names, module paths, and Python module name - Update APM skill directories and package name - Update all documentation, ADRs, and spec files - Update GitHub URLs from aslm to aml - Update pyproject.toml, Cargo.toml, and apm.yml - Rename ADR-005 file to match new naming Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../SKILL.md | 24 +++++----- .../SKILL.md | 16 +++---- .../references/system-prompts.md | 10 ++-- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- .github/ISSUE_TEMPLATE/config.yml | 2 +- AUTHORS | 2 +- CHANGELOG.md | 6 +-- CONTRIBUTING.md | 8 ++-- Cargo.lock | 30 ++++++------ Cargo.toml | 4 +- README.md | 20 ++++---- SUPPORT.md | 10 ++-- apm.yml | 4 +- crates/{sml-core => aml-core}/Cargo.toml | 4 +- crates/{sml-core => aml-core}/src/ast.rs | 4 +- crates/{sml-core => aml-core}/src/executor.rs | 0 crates/{sml-core => aml-core}/src/lib.rs | 0 crates/{sml-core => aml-core}/src/parser.rs | 2 +- crates/{sml-core => aml-core}/src/registry.rs | 0 crates/{sml-core => aml-core}/src/resolver.rs | 0 .../{sml-core => aml-core}/src/validator.rs | 0 crates/{sml-python => aml-python}/Cargo.toml | 8 ++-- crates/{sml-python => aml-python}/src/lib.rs | 26 +++++----- dev/evals/evals.json | 48 +++++++++---------- docs/adrs/README.md | 8 ++-- docs/adrs/adr-001-xml-syntax.md | 4 +- ...ons.md => adr-005-pure-aml-definitions.md} | 10 ++-- docs/adrs/adr-006-apm-versioning.md | 12 ++--- docs/adrs/adr-007-independent-harness.md | 14 +++--- docs/adrs/adr-008-rust-pyo3.md | 2 +- docs/adrs/adr-009-usage-guide-skill.md | 10 ++-- docs/astro.config.mjs | 6 +-- docs/package-lock.json | 4 +- docs/package.json | 2 +- docs/spec/attributes.md | 6 +-- docs/spec/error-model.md | 12 ++--- docs/spec/execution.md | 4 +- docs/spec/grammar.ebnf | 4 +- docs/spec/lifecycle.md | 16 +++---- docs/spec/resolution.md | 4 +- docs/spec/security.md | 10 ++-- docs/src/content/docs/api/python-api.mdx | 20 ++++---- docs/src/content/docs/api/rust-api.mdx | 12 ++--- .../src/content/docs/guide/error-handling.mdx | 2 +- .../content/docs/guide/getting-started.mdx | 14 +++--- .../guide/interfaces-and-implementations.mdx | 4 +- .../docs/guide/nesting-and-scoping.mdx | 2 +- docs/src/content/docs/guide/syntax.mdx | 2 +- docs/src/content/docs/index.mdx | 10 ++-- .../content/docs/installation/apm-package.mdx | 22 ++++----- .../content/docs/installation/pip-install.mdx | 12 ++--- .../content/docs/specification/attributes.mdx | 2 +- .../content/docs/specification/execution.mdx | 4 +- .../content/docs/specification/grammar.mdx | 4 +- docs/src/content/docs/specification/index.mdx | 4 +- .../content/docs/specification/lifecycle.mdx | 4 +- .../content/docs/specification/resolution.mdx | 2 +- .../content/docs/specification/security.mdx | 6 +-- docs/src/styles/custom.css | 2 +- examples/full_pipeline.py | 14 +++--- examples/nested_execution.py | 6 +-- pyproject.toml | 8 ++-- .../execution/01-bottom-up-nesting.md | 2 +- .../execution/02-wrapper-policy.md | 2 +- tests/conformance/execution/03-failed-skip.md | 2 +- tests/conformance/execution/04-failed-halt.md | 2 +- .../conformance/execution/05-no-reparsing.md | 2 +- .../execution/06-resolution-with-hints.md | 2 +- .../execution/07-ambiguous-resolution.md | 2 +- 69 files changed, 264 insertions(+), 264 deletions(-) rename .apm/skills/{sml-installation => aml-installation}/SKILL.md (73%) rename .apm/skills/{sml-usage-guide => aml-usage-guide}/SKILL.md (93%) rename .apm/skills/{sml-usage-guide => aml-usage-guide}/references/system-prompts.md (89%) rename crates/{sml-core => aml-core}/Cargo.toml (66%) rename crates/{sml-core => aml-core}/src/ast.rs (98%) rename crates/{sml-core => aml-core}/src/executor.rs (100%) rename crates/{sml-core => aml-core}/src/lib.rs (100%) rename crates/{sml-core => aml-core}/src/parser.rs (99%) rename crates/{sml-core => aml-core}/src/registry.rs (100%) rename crates/{sml-core => aml-core}/src/resolver.rs (100%) rename crates/{sml-core => aml-core}/src/validator.rs (100%) rename crates/{sml-python => aml-python}/Cargo.toml (63%) rename crates/{sml-python => aml-python}/src/lib.rs (89%) rename docs/adrs/{adr-005-pure-sml-definitions.md => adr-005-pure-aml-definitions.md} (71%) diff --git a/.apm/skills/sml-installation/SKILL.md b/.apm/skills/aml-installation/SKILL.md similarity index 73% rename from .apm/skills/sml-installation/SKILL.md rename to .apm/skills/aml-installation/SKILL.md index de3fb9e..c207716 100644 --- a/.apm/skills/sml-installation/SKILL.md +++ b/.apm/skills/aml-installation/SKILL.md @@ -1,16 +1,16 @@ --- -name: sml-installation -description: Install the SML runtime (Rust parser with Python bindings) so that agents can parse and execute SML tags programmatically. +name: aml-installation +description: Install the AML runtime (Rust parser with Python bindings) so that agents can parse and execute AML tags programmatically. --- -# SML Installation Guide +# AML Installation Guide -Use this guide when you need to install the SML runtime for programmatic parsing and execution. +Use this guide when you need to install the AML runtime for programmatic parsing and execution. ## Quick Install (Python) ```bash -pip install sml +pip install aml ``` This installs pre-built wheels with the Rust parser compiled for your platform. @@ -23,23 +23,23 @@ Requirements: - maturin (`pip install maturin`) ```bash -git clone https://github.com/sergio-sisternes-epam/aslm.git -cd aslm +git clone https://github.com/sergio-sisternes-epam/aml.git +cd aml maturin develop --release ``` ## Verify Installation ```python -from sml import parse, execute, SmlRegistry +from aml import parse, execute, AmlRegistry -# Parse SML from a prompt +# Parse AML from a prompt doc = parse('Run tests') print(doc.node_count) # 1 print(doc.invocations()) # ['testing'] # Set up a registry -registry = SmlRegistry() +registry = AmlRegistry() registry.register_interface("testing", "Run automated tests") registry.register_implementation( "pytest-impl", "testing", @@ -67,11 +67,11 @@ Add to your `Cargo.toml`: ```toml [dependencies] -sml-core = "0.1" +aml-core = "0.1" ``` ```rust -use sml_core::{parse, SkillRegistry, ExecutionContext}; +use aml_core::{parse, SkillRegistry, ExecutionContext}; let doc = parse(r#"content"#).unwrap(); let registry = SkillRegistry::new(); diff --git a/.apm/skills/sml-usage-guide/SKILL.md b/.apm/skills/aml-usage-guide/SKILL.md similarity index 93% rename from .apm/skills/sml-usage-guide/SKILL.md rename to .apm/skills/aml-usage-guide/SKILL.md index 920277d..86e8646 100644 --- a/.apm/skills/sml-usage-guide/SKILL.md +++ b/.apm/skills/aml-usage-guide/SKILL.md @@ -1,15 +1,15 @@ --- -name: sml-usage-guide -description: Teach an agent how to emit valid SML (Skill Markup Language) tags for declarative skill invocation inside prompts, including interface definitions, implementation bindings, scoping, nesting, params, and execution policies. +name: aml-usage-guide +description: Teach an agent how to emit valid AML (Agent Markup Language) tags for declarative skill invocation inside prompts, including interface definitions, implementation bindings, scoping, nesting, params, and execution policies. --- -# SML Usage Guide +# AML Usage Guide -Use this guide when you need to invoke skills declaratively inside a prompt using SML syntax. +Use this guide when you need to invoke skills declaratively inside a prompt using AML syntax. ## Core Syntax -SML uses XML-like `` tags embedded in natural text: +AML uses XML-like `` tags embedded in natural text: ```xml @@ -123,12 +123,12 @@ Here `fetch-url` runs first, its output becomes the scope for `summarise`. 1. **Never nest definitions inside invocations** — definitions are top-level only 2. **One resolution target per invocation** — use `interface` OR `impl` OR `name` -3. **Results are escaped** — skill output is never re-parsed as SML +3. **Results are escaped** — skill output is never re-parsed as AML 4. **Content is the scope** — everything between open/close tags is what the skill sees 5. **Definitions don't execute** — they only register capabilities -## When NOT to use SML +## When NOT to use AML - Simple function calls with no scoping → use tool_call syntax instead - One-shot queries with no composition → plain text is fine -- Highly dynamic dispatch → use agentic reasoning, then emit SML for the chosen skill +- Highly dynamic dispatch → use agentic reasoning, then emit AML for the chosen skill diff --git a/.apm/skills/sml-usage-guide/references/system-prompts.md b/.apm/skills/aml-usage-guide/references/system-prompts.md similarity index 89% rename from .apm/skills/sml-usage-guide/references/system-prompts.md rename to .apm/skills/aml-usage-guide/references/system-prompts.md index 1cb4d56..0e52d42 100644 --- a/.apm/skills/sml-usage-guide/references/system-prompts.md +++ b/.apm/skills/aml-usage-guide/references/system-prompts.md @@ -1,11 +1,11 @@ # System Prompt Examples -## ReAct + SML +## ReAct + AML ``` -You are an AI agent that uses ReAct (Reason + Act) with SML for structured skill invocation. +You are an AI agent that uses ReAct (Reason + Act) with AML for structured skill invocation. -When you need to invoke a skill, emit an SML tag: +When you need to invoke a skill, emit an AML tag: Think: I need to run tests on the auth module. Act: @@ -23,10 +23,10 @@ Act: ``` -## Plan-and-Execute + SML +## Plan-and-Execute + AML ``` -You are an AI agent that plans before executing. Use SML to invoke skills. +You are an AI agent that plans before executing. Use AML to invoke skills. Plan: 1. Fetch the requirements document diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 63c2cc7..753c5af 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -24,7 +24,7 @@ labels: bug ## Environment -- SML version: +- AML version: - Rust version (`rustc --version`): - Python version (if applicable): - OS: diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 26215db..372f38a 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,7 +1,7 @@ blank_issues_enabled: false contact_links: - name: Ask a Question - url: https://github.com/sergio-sisternes-epam/aslm/discussions + url: https://github.com/sergio-sisternes-epam/aml/discussions about: Use GitHub Discussions for questions and general help. - name: Security Vulnerability url: mailto:sergio_sisternes@epam.com diff --git a/AUTHORS b/AUTHORS index e7551f7..ba6b8f7 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,5 +1,5 @@ # Authors -SML is maintained by the following contributors: +AML is maintained by the following contributors: Sergio Sisternes diff --git a/CHANGELOG.md b/CHANGELOG.md index dc24790..a77a717 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added -- Initial Rust parser and executor (`sml-core`) -- Python bindings via PyO3 (`sml-python`) -- SML language specification in `docs/spec/` +- Initial Rust parser and executor (`aml-core`) +- Python bindings via PyO3 (`aml-python`) +- AML language specification in `docs/spec/` - Conformance test suite in `tests/conformance/` diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 66b545a..395b383 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,4 +1,4 @@ -# Contributing to SML +# Contributing to AML Thank you for your interest in contributing! This document explains how to get involved. @@ -10,11 +10,11 @@ Please be respectful and constructive in all interactions. See [CODE_OF_CONDUCT. ### Reporting Bugs -Open a [bug report](https://github.com/sergio-sisternes-epam/aslm/issues/new?template=bug_report.md) with a clear description and a minimal reproduction case. +Open a [bug report](https://github.com/sergio-sisternes-epam/aml/issues/new?template=bug_report.md) with a clear description and a minimal reproduction case. ### Suggesting Features -Open a [feature request](https://github.com/sergio-sisternes-epam/aslm/issues/new?template=feature_request.md) describing the problem you want to solve and your proposed solution. +Open a [feature request](https://github.com/sergio-sisternes-epam/aml/issues/new?template=feature_request.md) describing the problem you want to solve and your proposed solution. ### Submitting Changes @@ -43,7 +43,7 @@ cargo build # Build the Python extension (development mode) pip install maturin -maturin develop --manifest-path crates/sml-python/Cargo.toml +maturin develop --manifest-path crates/aml-python/Cargo.toml ``` ### Running Tests diff --git a/Cargo.lock b/Cargo.lock index e610e52..f967056 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,21 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "aml-core" +version = "0.1.0" +dependencies = [ + "insta", +] + +[[package]] +name = "aml-python" +version = "0.1.0" +dependencies = [ + "aml-core", + "pyo3", +] + [[package]] name = "anyhow" version = "1.0.102" @@ -371,21 +386,6 @@ version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" -[[package]] -name = "sml-core" -version = "0.1.0" -dependencies = [ - "insta", -] - -[[package]] -name = "sml-python" -version = "0.1.0" -dependencies = [ - "pyo3", - "sml-core", -] - [[package]] name = "syn" version = "2.0.117" diff --git a/Cargo.toml b/Cargo.toml index 2648f92..e9bee96 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,12 @@ [workspace] -members = ["crates/sml-core", "crates/sml-python"] +members = ["crates/aml-core", "crates/aml-python"] resolver = "2" [workspace.package] version = "0.1.0" edition = "2021" license = "Apache-2.0" -repository = "https://github.com/sergio-sisternes-epam/aslm" +repository = "https://github.com/sergio-sisternes-epam/aml" [workspace.lints.clippy] all = { level = "warn", priority = -1 } diff --git a/README.md b/README.md index 80cbfbb..44e0f24 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ -# SML — Skill Markup Language +# AML — Agent Markup Language A lightweight, XML-inspired markup language that enables agents to declaratively invoke modular, scoped, and nestable skills directly inside prompts. ## Overview -SML provides two independent layers: +AML provides two independent layers: - **Runtime Layer**: A high-performance parser and executor implemented in Rust + PyO3 - **Distribution & Knowledge Layer**: An APM package for agent tooling ecosystems @@ -12,11 +12,11 @@ SML provides two independent layers: ## Quick Start ```bash -pip install sml +pip install aml ``` ```python -from sml import parse, execute, SmlRegistry +from aml import parse, execute, AmlRegistry doc = parse(""" @@ -25,7 +25,7 @@ doc = parse(""" """) -registry = SmlRegistry() +registry = AmlRegistry() registry.register_interface("code-review", "Review code for issues") registry.register_implementation( "python-review", "code-review", @@ -35,7 +35,7 @@ registry.register_implementation( result = execute(doc, registry) ``` -## SML Syntax +## AML Syntax ```xml @@ -67,14 +67,14 @@ result = execute(doc, registry) - [Language Specification](docs/spec/) - [Conformance Suite](tests/conformance/) -- [API Reference (Rust)](crates/sml-core/) -- [API Reference (Python)](crates/sml-python/) +- [API Reference (Rust)](crates/aml-core/) +- [API Reference (Python)](crates/aml-python/) ## Architecture ``` ┌─────────────────────────────────────────┐ -│ Agent Prompt (contains SML tags) │ +│ Agent Prompt (contains AML tags) │ └─────────────┬───────────────────────────┘ │ parse() ▼ @@ -89,7 +89,7 @@ result = execute(doc, registry) │ result injection ▼ ┌─────────────────────────────────────────┐ -│ Output (SML tags replaced by results) │ +│ Output (AML tags replaced by results) │ └─────────────────────────────────────────┘ ``` diff --git a/SUPPORT.md b/SUPPORT.md index 20e86bf..a1748da 100644 --- a/SUPPORT.md +++ b/SUPPORT.md @@ -5,20 +5,20 @@ Start with the project documentation: - [Language Specification](docs/spec/) -- [API Reference (Rust)](crates/sml-core/) -- [API Reference (Python)](crates/sml-python/) +- [API Reference (Rust)](crates/aml-core/) +- [API Reference (Python)](crates/aml-python/) ## Asking Questions -Use **[GitHub Discussions](https://github.com/sergio-sisternes-epam/aslm/discussions)** for: +Use **[GitHub Discussions](https://github.com/sergio-sisternes-epam/aml/discussions)** for: -- Questions about using SML +- Questions about using AML - Ideas and general discussion - Sharing what you've built ## Reporting Bugs -Use **[GitHub Issues](https://github.com/sergio-sisternes-epam/aslm/issues)** for confirmed bugs. Please search existing issues before opening a new one. +Use **[GitHub Issues](https://github.com/sergio-sisternes-epam/aml/issues)** for confirmed bugs. Please search existing issues before opening a new one. ## Security Issues diff --git a/apm.yml b/apm.yml index 8b52bc9..bda0abf 100644 --- a/apm.yml +++ b/apm.yml @@ -1,5 +1,5 @@ -name: sml +name: aml version: 0.1.0 -description: "Skill Markup Language — declarative skill invocation for agent prompts" +description: "Agent Markup Language — declarative skill invocation for agent prompts" license: MIT target: [copilot, claude, cursor, codex, opencode] diff --git a/crates/sml-core/Cargo.toml b/crates/aml-core/Cargo.toml similarity index 66% rename from crates/sml-core/Cargo.toml rename to crates/aml-core/Cargo.toml index d62de5f..214f1ed 100644 --- a/crates/sml-core/Cargo.toml +++ b/crates/aml-core/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "sml-core" +name = "aml-core" version.workspace = true edition.workspace = true license.workspace = true repository.workspace = true -description = "SML (Skill Markup Language) parser and executor" +description = "AML (Agent Markup Language) parser and executor" [dependencies] diff --git a/crates/sml-core/src/ast.rs b/crates/aml-core/src/ast.rs similarity index 98% rename from crates/sml-core/src/ast.rs rename to crates/aml-core/src/ast.rs index 2bb7dfc..6cb010d 100644 --- a/crates/sml-core/src/ast.rs +++ b/crates/aml-core/src/ast.rs @@ -132,7 +132,7 @@ pub struct Param { pub span: Span, } -/// A node in the SML AST. +/// A node in the AML AST. #[derive(Debug, Clone, PartialEq, Eq)] pub enum Node { /// A skill tag (invocation or definition). @@ -191,7 +191,7 @@ impl Node { } } -/// The root of an SML document. +/// The root of an AML document. #[derive(Debug, Clone, PartialEq, Eq)] pub struct Document { pub nodes: Vec, diff --git a/crates/sml-core/src/executor.rs b/crates/aml-core/src/executor.rs similarity index 100% rename from crates/sml-core/src/executor.rs rename to crates/aml-core/src/executor.rs diff --git a/crates/sml-core/src/lib.rs b/crates/aml-core/src/lib.rs similarity index 100% rename from crates/sml-core/src/lib.rs rename to crates/aml-core/src/lib.rs diff --git a/crates/sml-core/src/parser.rs b/crates/aml-core/src/parser.rs similarity index 99% rename from crates/sml-core/src/parser.rs rename to crates/aml-core/src/parser.rs index 528b3e1..b70bd07 100644 --- a/crates/sml-core/src/parser.rs +++ b/crates/aml-core/src/parser.rs @@ -21,7 +21,7 @@ impl std::fmt::Display for ParseError { impl std::error::Error for ParseError {} -/// Parse an SML document from a string. +/// Parse an AML document from a string. /// /// The parser is embedded-tolerant: it extracts `` and `` tags /// from arbitrary text, treating everything else as literal `Text` nodes. diff --git a/crates/sml-core/src/registry.rs b/crates/aml-core/src/registry.rs similarity index 100% rename from crates/sml-core/src/registry.rs rename to crates/aml-core/src/registry.rs diff --git a/crates/sml-core/src/resolver.rs b/crates/aml-core/src/resolver.rs similarity index 100% rename from crates/sml-core/src/resolver.rs rename to crates/aml-core/src/resolver.rs diff --git a/crates/sml-core/src/validator.rs b/crates/aml-core/src/validator.rs similarity index 100% rename from crates/sml-core/src/validator.rs rename to crates/aml-core/src/validator.rs diff --git a/crates/sml-python/Cargo.toml b/crates/aml-python/Cargo.toml similarity index 63% rename from crates/sml-python/Cargo.toml rename to crates/aml-python/Cargo.toml index 55c49c4..7eb65cf 100644 --- a/crates/sml-python/Cargo.toml +++ b/crates/aml-python/Cargo.toml @@ -1,15 +1,15 @@ [package] -name = "sml-python" +name = "aml-python" version.workspace = true edition.workspace = true license.workspace = true repository.workspace = true -description = "Python bindings for SML parser and executor" +description = "Python bindings for AML parser and executor" [lib] -name = "sml" +name = "aml" crate-type = ["cdylib"] [dependencies] -sml-core = { path = "../sml-core" } +aml-core = { path = "../aml-core" } pyo3 = { version = "0.22", features = ["extension-module"] } diff --git a/crates/sml-python/src/lib.rs b/crates/aml-python/src/lib.rs similarity index 89% rename from crates/sml-python/src/lib.rs rename to crates/aml-python/src/lib.rs index 093f01e..c4b896c 100644 --- a/crates/sml-python/src/lib.rs +++ b/crates/aml-python/src/lib.rs @@ -5,15 +5,15 @@ use pyo3::exceptions::PyValueError; use pyo3::prelude::*; -use sml_core::ast::{Node, NodeKind}; -use sml_core::executor::ExecutionContext; -use sml_core::registry::SkillRegistry as RustRegistry; +use aml_core::ast::{Node, NodeKind}; +use aml_core::executor::ExecutionContext; +use aml_core::registry::SkillRegistry as RustRegistry; -/// Python wrapper for a parsed SML document. +/// Python wrapper for a parsed AML document. #[pyclass] #[derive(Clone)] struct Document { - inner: sml_core::Document, + inner: aml_core::Document, } #[pymethods] @@ -78,12 +78,12 @@ impl Document { /// Python wrapper for the skill registry. #[pyclass] #[derive(Clone)] -struct SmlRegistry { +struct AmlRegistry { inner: RustRegistry, } #[pymethods] -impl SmlRegistry { +impl AmlRegistry { #[new] fn new() -> Self { Self { @@ -137,10 +137,10 @@ impl SmlRegistry { } } -/// Parse an SML document from a string. +/// Parse an AML document from a string. #[pyfunction] fn parse(input: &str) -> PyResult { - match sml_core::parse(input) { + match aml_core::parse(input) { Ok(doc) => Ok(Document { inner: doc }), Err(e) => Err(PyValueError::new_err(e.to_string())), } @@ -148,18 +148,18 @@ fn parse(input: &str) -> PyResult { /// Execute a document with a registry (pass-through mode — no custom handlers). #[pyfunction] -fn execute(doc: &Document, registry: &SmlRegistry) -> PyResult { +fn execute(doc: &Document, registry: &AmlRegistry) -> PyResult { let ctx = ExecutionContext::new(registry.inner.clone()); ctx.execute(&doc.inner) .map_err(|e| PyValueError::new_err(e.to_string())) } -/// The SML Python module. +/// The AML Python module. #[pymodule] -fn sml(m: &Bound<'_, PyModule>) -> PyResult<()> { +fn aml(m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_function(wrap_pyfunction!(parse, m)?)?; m.add_function(wrap_pyfunction!(execute, m)?)?; m.add_class::()?; - m.add_class::()?; + m.add_class::()?; Ok(()) } diff --git a/dev/evals/evals.json b/dev/evals/evals.json index 8a17416..3dd08ea 100644 --- a/dev/evals/evals.json +++ b/dev/evals/evals.json @@ -1,100 +1,100 @@ { - "description": "SML content and trigger evaluations", + "description": "AML content and trigger evaluations", "evals": [ { "type": "trigger", "input": "I need to run tests on my Python code", - "expected_skill": "sml-usage-guide", + "expected_skill": "aml-usage-guide", "should_trigger": true }, { "type": "trigger", - "input": "How do I write SML tags?", - "expected_skill": "sml-usage-guide", + "input": "How do I write AML tags?", + "expected_skill": "aml-usage-guide", "should_trigger": true }, { "type": "trigger", "input": "Show me how to nest skills in a prompt", - "expected_skill": "sml-usage-guide", + "expected_skill": "aml-usage-guide", "should_trigger": true }, { "type": "trigger", - "input": "What is the SML syntax for interfaces?", - "expected_skill": "sml-usage-guide", + "input": "What is the AML syntax for interfaces?", + "expected_skill": "aml-usage-guide", "should_trigger": true }, { "type": "trigger", "input": "How do I define a skill implementation?", - "expected_skill": "sml-usage-guide", + "expected_skill": "aml-usage-guide", "should_trigger": true }, { "type": "trigger", - "input": "Install the SML parser on my machine", - "expected_skill": "sml-installation", + "input": "Install the AML parser on my machine", + "expected_skill": "aml-installation", "should_trigger": true }, { "type": "trigger", - "input": "How do I pip install sml?", - "expected_skill": "sml-installation", + "input": "How do I pip install aml?", + "expected_skill": "aml-installation", "should_trigger": true }, { "type": "trigger", - "input": "Build SML from source with maturin", - "expected_skill": "sml-installation", + "input": "Build AML from source with maturin", + "expected_skill": "aml-installation", "should_trigger": true }, { "type": "trigger", - "input": "What platforms does SML support?", - "expected_skill": "sml-installation", + "input": "What platforms does AML support?", + "expected_skill": "aml-installation", "should_trigger": true }, { "type": "trigger", - "input": "How do I use SML in a ReAct agent?", - "expected_skill": "sml-usage-guide", + "input": "How do I use AML in a ReAct agent?", + "expected_skill": "aml-usage-guide", "should_trigger": true }, { "type": "trigger", "input": "What is the weather like today?", - "expected_skill": "sml-usage-guide", + "expected_skill": "aml-usage-guide", "should_trigger": false }, { "type": "trigger", "input": "Write a Python function to sort a list", - "expected_skill": "sml-usage-guide", + "expected_skill": "aml-usage-guide", "should_trigger": false }, { "type": "trigger", "input": "Explain how Docker networking works", - "expected_skill": "sml-usage-guide", + "expected_skill": "aml-usage-guide", "should_trigger": false }, { "type": "trigger", "input": "Help me debug this TypeScript error", - "expected_skill": "sml-usage-guide", + "expected_skill": "aml-usage-guide", "should_trigger": false }, { "type": "trigger", "input": "What is Kubernetes?", - "expected_skill": "sml-installation", + "expected_skill": "aml-installation", "should_trigger": false }, { "type": "trigger", "input": "Set up a React project", - "expected_skill": "sml-installation", + "expected_skill": "aml-installation", "should_trigger": false }, { diff --git a/docs/adrs/README.md b/docs/adrs/README.md index 27f5066..c72dbb7 100644 --- a/docs/adrs/README.md +++ b/docs/adrs/README.md @@ -1,6 +1,6 @@ # Architecture Decision Records -This directory contains the Architecture Decision Records (ADRs) for the SML project. +This directory contains the Architecture Decision Records (ADRs) for the AML project. ## Index @@ -10,8 +10,8 @@ This directory contains the Architecture Decision Records (ADRs) for the SML pro | [ADR-002](adr-002-explicit-scoping.md) | Support explicit scoping | Accepted | | [ADR-003](adr-003-nesting-bottom-up.md) | Full nesting with bottom-up execution | Accepted | | [ADR-004](adr-004-interface-impl-model.md) | Interface vs Implementation model | Accepted | -| [ADR-005](adr-005-pure-sml-definitions.md) | Definitions purely in SML syntax | Accepted | +| [ADR-005](adr-005-pure-aml-definitions.md) | Definitions purely in AML syntax | Accepted | | [ADR-006](adr-006-apm-versioning.md) | Versioning managed by APM | Accepted | -| [ADR-007](adr-007-independent-harness.md) | APM harness independent from SML | Accepted | +| [ADR-007](adr-007-independent-harness.md) | APM harness independent from AML | Accepted | | [ADR-008](adr-008-rust-pyo3.md) | Core runtime in Rust + PyO3 | Accepted | -| [ADR-009](adr-009-usage-guide-skill.md) | Teach SML via usage guide skill | Accepted | +| [ADR-009](adr-009-usage-guide-skill.md) | Teach AML via usage guide skill | Accepted | diff --git a/docs/adrs/adr-001-xml-syntax.md b/docs/adrs/adr-001-xml-syntax.md index 22244e7..774d085 100644 --- a/docs/adrs/adr-001-xml-syntax.md +++ b/docs/adrs/adr-001-xml-syntax.md @@ -4,7 +4,7 @@ Accepted ## Context -SML needs a syntax for structured skill invocation within agent prompts. Options considered: +AML needs a syntax for structured skill invocation within agent prompts. Options considered: - JSON blocks - YAML blocks - Custom DSL @@ -22,5 +22,5 @@ Use XML-like `` tags with attributes and content. ## Consequences - Must handle entity escaping (`<`, `&`, etc.) -- Parser must be tolerant of non-SML `<` characters in prompt text +- Parser must be tolerant of non-AML `<` characters in prompt text - Cannot use self-closing tags for skills with content diff --git a/docs/adrs/adr-005-pure-sml-definitions.md b/docs/adrs/adr-005-pure-aml-definitions.md similarity index 71% rename from docs/adrs/adr-005-pure-sml-definitions.md rename to docs/adrs/adr-005-pure-aml-definitions.md index ace8aec..6bd6d74 100644 --- a/docs/adrs/adr-005-pure-sml-definitions.md +++ b/docs/adrs/adr-005-pure-aml-definitions.md @@ -1,4 +1,4 @@ -# ADR-005: Definitions Purely in SML Syntax +# ADR-005: Definitions Purely in AML Syntax ## Status Accepted @@ -7,16 +7,16 @@ Accepted Interfaces and implementations need to be defined somewhere. Options: - In APM manifest (apm.yml) - In separate config files -- In SML syntax itself +- In AML syntax itself ## Decision -Interface and implementation definitions are expressed purely through SML syntax using the `define` attribute. +Interface and implementation definitions are expressed purely through AML syntax using the `define` attribute. ## Rationale -- Self-contained: SML documents carry their own definitions +- Self-contained: AML documents carry their own definitions - No dependency on APM manifest for runtime semantics - Definitions can be embedded in system prompts alongside invocations -- Keeps SML independent from any specific packaging system +- Keeps AML independent from any specific packaging system ## Consequences - Parser must distinguish definition nodes from invocation nodes diff --git a/docs/adrs/adr-006-apm-versioning.md b/docs/adrs/adr-006-apm-versioning.md index 2dc1e92..3e78410 100644 --- a/docs/adrs/adr-006-apm-versioning.md +++ b/docs/adrs/adr-006-apm-versioning.md @@ -4,18 +4,18 @@ Accepted ## Context -SML tags could include a `version` attribute for skill versioning. However, this mixes runtime concerns with packaging concerns. +AML tags could include a `version` attribute for skill versioning. However, this mixes runtime concerns with packaging concerns. ## Decision -No version attribute in SML syntax. Versioning is managed exclusively by APM. +No version attribute in AML syntax. Versioning is managed exclusively by APM. ## Rationale -- Keeps SML syntax lightweight and focused on invocation +- Keeps AML syntax lightweight and focused on invocation - Version resolution is a packaging concern, not a runtime concern - APM already handles dependency resolution and version management -- Avoids version conflicts between SML tags and installed packages +- Avoids version conflicts between AML tags and installed packages ## Consequences -- SML runtime does not need version comparison logic +- AML runtime does not need version comparison logic - Users must use APM to manage which versions are available -- Reproducibility comes from APM lock files, not SML content +- Reproducibility comes from APM lock files, not AML content diff --git a/docs/adrs/adr-007-independent-harness.md b/docs/adrs/adr-007-independent-harness.md index 9708466..e6eeb7d 100644 --- a/docs/adrs/adr-007-independent-harness.md +++ b/docs/adrs/adr-007-independent-harness.md @@ -1,24 +1,24 @@ -# ADR-007: APM Harness Independent from SML +# ADR-007: APM Harness Independent from AML ## Status Accepted ## Context -SML needs a distribution mechanism. APM (Agent Package Manager) provides this, but coupling them would limit SML's applicability. +AML needs a distribution mechanism. APM (Agent Package Manager) provides this, but coupling them would limit AML's applicability. ## Decision -SML and APM are independent layers: -- SML only parses and executes skill tags +AML and APM are independent layers: +- AML only parses and executes skill tags - APM handles package discovery, installation, and versioning - Neither depends on the other's internals ## Rationale -- SML can be used without APM (embedded in any system) -- APM can distribute non-SML content +- AML can be used without APM (embedded in any system) +- APM can distribute non-AML content - Clear separation of concerns - Easier testing and development of each layer ## Consequences -- No `import` or `require` statements in SML +- No `import` or `require` statements in AML - Runtime must receive skill implementations through its registry API - APM integration is a wrapper/adapter, not core functionality diff --git a/docs/adrs/adr-008-rust-pyo3.md b/docs/adrs/adr-008-rust-pyo3.md index 7d8f5f3..053a8ff 100644 --- a/docs/adrs/adr-008-rust-pyo3.md +++ b/docs/adrs/adr-008-rust-pyo3.md @@ -4,7 +4,7 @@ Accepted ## Context -The SML runtime needs to be fast, safe, and accessible from Python (the dominant AI/ML ecosystem language). +The AML runtime needs to be fast, safe, and accessible from Python (the dominant AI/ML ecosystem language). ## Decision Implement the core runtime in Rust with Python bindings via PyO3. diff --git a/docs/adrs/adr-009-usage-guide-skill.md b/docs/adrs/adr-009-usage-guide-skill.md index a1d2876..11d4790 100644 --- a/docs/adrs/adr-009-usage-guide-skill.md +++ b/docs/adrs/adr-009-usage-guide-skill.md @@ -1,23 +1,23 @@ -# ADR-009: Teach SML via Usage Guide Skill +# ADR-009: Teach AML via Usage Guide Skill ## Status Accepted ## Context -Agents need to learn how to use SML correctly. Options: +Agents need to learn how to use AML correctly. Options: - Hardcode instructions in system prompts - Distribute as documentation - Deliver as an APM skill (self-contained, versionable) ## Decision -Deliver SML usage instructions as an APM skill (`sml-usage-guide`) that agents can load. +Deliver AML usage instructions as an APM skill (`aml-usage-guide`) that agents can load. ## Rationale -- Self-contained: the skill carries everything needed to use SML +- Self-contained: the skill carries everything needed to use AML - Versionable: updates to instructions are delivered via APM - Composable: can be loaded alongside other skills - Testable: trigger and content evals validate effectiveness -- Consistent with "eat your own dog food" — SML knowledge delivered via APM +- Consistent with "eat your own dog food" — AML knowledge delivered via APM ## Consequences - Must follow SKILL.md format (≤500 lines, ≤5000 tokens, ≤1024 char description) diff --git a/docs/astro.config.mjs b/docs/astro.config.mjs index 3559e3d..cb525cb 100644 --- a/docs/astro.config.mjs +++ b/docs/astro.config.mjs @@ -4,12 +4,12 @@ import starlightLinksValidator from 'starlight-links-validator'; export default defineConfig({ site: 'https://sergio-sisternes-epam.github.io', - base: '/aslm', + base: '/aml', integrations: [ starlight({ - title: 'SML — Skill Markup Language', + title: 'AML — Agent Markup Language', social: { - github: 'https://github.com/sergio-sisternes-epam/aslm', + github: 'https://github.com/sergio-sisternes-epam/aml', }, sidebar: [ { diff --git a/docs/package-lock.json b/docs/package-lock.json index 2148277..b996fae 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -1,11 +1,11 @@ { - "name": "sml-docs", + "name": "aml-docs", "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "sml-docs", + "name": "aml-docs", "version": "0.1.0", "dependencies": { "@astrojs/starlight": "^0.32", diff --git a/docs/package.json b/docs/package.json index 6cbc0fa..406ee54 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,5 +1,5 @@ { - "name": "sml-docs", + "name": "aml-docs", "type": "module", "version": "0.1.0", "scripts": { diff --git a/docs/spec/attributes.md b/docs/spec/attributes.md index 67c6a4e..8bd64ba 100644 --- a/docs/spec/attributes.md +++ b/docs/spec/attributes.md @@ -1,8 +1,8 @@ -# SML Attribute Reference +# AML Attribute Reference ## Overview -Every attribute in SML has a defined type, allowed values, and validity scope. +Every attribute in AML has a defined type, allowed values, and validity scope. This document is the canonical reference for attribute semantics. ## Attribute Table @@ -95,7 +95,7 @@ Maximum timeout: `1h`. Values exceeding this are clamped with a warning. ## Forward Compatibility -Unknown attributes are treated as **warnings**, not errors. This allows SML +Unknown attributes are treated as **warnings**, not errors. This allows AML documents written for newer versions to be parsed by older runtimes with graceful degradation. The unknown attributes are: - Preserved in the AST (for round-tripping). diff --git a/docs/spec/error-model.md b/docs/spec/error-model.md index 388c5b3..fc91187 100644 --- a/docs/spec/error-model.md +++ b/docs/spec/error-model.md @@ -1,15 +1,15 @@ -# SML Error Model +# AML Error Model ## Overview -SML defines a structured error model covering parsing, validation, resolution, +AML defines a structured error model covering parsing, validation, resolution, and execution. All errors include source spans for precise tooling integration. ## Error Categories ### Parse Errors -Raised during Phase 1 (Parse). These indicate syntactically invalid SML. +Raised during Phase 1 (Parse). These indicate syntactically invalid AML. | Error | Cause | Span points to | |---|---|---| @@ -23,7 +23,7 @@ Parse errors are **unrecoverable** — the document cannot proceed past Phase 1. ### Validation Errors Raised during Phase 2 (Validate). These indicate well-formed but semantically -invalid SML. +invalid AML. | Error | Cause | Span points to | |---|---|---| @@ -113,7 +113,7 @@ Errors are formatted with source context: ``` error[E0301]: no implementation found for interface 'unit-testing-coverage' - --> prompt.sml:15:3 + --> prompt.aml:15:3 | 15 | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -127,7 +127,7 @@ error[E0301]: no implementation found for interface 'unit-testing-coverage' The Python API exposes structured error objects: ```python -from sml import parse, SmlError, ErrorKind +from aml import parse, SmlError, ErrorKind try: tree = parse(prompt) diff --git a/docs/spec/execution.md b/docs/spec/execution.md index b3c43b8..c7f14ad 100644 --- a/docs/spec/execution.md +++ b/docs/spec/execution.md @@ -1,4 +1,4 @@ -# SML Execution Model +# AML Execution Model ## Overview @@ -188,7 +188,7 @@ struct ExecutionContext { ### Depth limit -To prevent infinite recursion (e.g. a skill that emits SML which gets re-parsed), +To prevent infinite recursion (e.g. a skill that emits AML which gets re-parsed), a hard depth limit is enforced: - Default: 16 levels of nesting. - Configurable per-registry. diff --git a/docs/spec/grammar.ebnf b/docs/spec/grammar.ebnf index 91a1b60..b44695d 100644 --- a/docs/spec/grammar.ebnf +++ b/docs/spec/grammar.ebnf @@ -1,4 +1,4 @@ -# SML Formal Grammar (EBNF) +# AML Formal Grammar (EBNF) # A document is arbitrary text interspersed with skill tags. Document ::= (Text | SkillNode)* @@ -91,7 +91,7 @@ Text ::= [^<]+ # any content that is not a ta # Leading/trailing whitespace in attribute values is trimmed. # --- COMMENTS --- -# SML supports XML-style comments: +# AML supports XML-style comments: Comment ::= '' CommentContent ::= [^-]* | '-' [^-]+ # no '--' inside comments # Comments are stripped during parsing and do not appear in the AST. diff --git a/docs/spec/lifecycle.md b/docs/spec/lifecycle.md index d5a0ef5..862e1a6 100644 --- a/docs/spec/lifecycle.md +++ b/docs/spec/lifecycle.md @@ -1,8 +1,8 @@ -# SML Execution Lifecycle +# AML Execution Lifecycle ## Overview -SML processing follows a strict 6-phase pipeline. Each phase has well-defined +AML processing follows a strict 6-phase pipeline. Each phase has well-defined inputs, outputs, and error conditions. Phases execute sequentially; no phase may be skipped. @@ -12,13 +12,13 @@ Input Prompt → Parse → Validate → Register Definitions → Resolve → Exe ## Phase 1: Parse -**Input**: Raw text string (the prompt or document containing SML tags). +**Input**: Raw text string (the prompt or document containing AML tags). **Output**: Unvalidated AST (`Document` node containing `SkillNode` and `Text` nodes). **Behaviour**: -- The parser tokenises SML tags within arbitrary prompt text. -- Non-SML text is preserved as `Text` nodes. +- The parser tokenises AML tags within arbitrary prompt text. +- Non-AML text is preserved as `Text` nodes. - Nested `` tags produce nested `SkillNode` children. - `` tags within a `` are attached to the parent node. - XML comments (``) are stripped. @@ -31,8 +31,8 @@ Input Prompt → Parse → Validate → Register Definitions → Resolve → Exe - All errors include source spans for precise error reporting. **Tolerance policy**: The parser is **embedded-tolerant** — it operates within -arbitrary prompt text. Any `<` that does not begin a recognised SML tag is -treated as literal text. The parser does NOT attempt to parse non-SML XML/HTML. +arbitrary prompt text. Any `<` that does not begin a recognised AML tag is +treated as literal text. The parser does NOT attempt to parse non-AML XML/HTML. ## Phase 2: Validate @@ -161,6 +161,6 @@ document, resolution always produces the same binding (or the same error). 1. **Definitions never execute.** A `define=` node's body is descriptive text, never invoked. 2. **Execution is bottom-up.** Inner skills complete before outer skills see their scope. -3. **Results are escaped.** Injected text is NOT re-parsed for new SML tags. +3. **Results are escaped.** Injected text is NOT re-parsed for new AML tags. 4. **Resolution is deterministic.** Same inputs → same outputs (or same errors). 5. **Errors include spans.** Every error references the source location for tooling. diff --git a/docs/spec/resolution.md b/docs/spec/resolution.md index 69ba9f5..e2aa97f 100644 --- a/docs/spec/resolution.md +++ b/docs/spec/resolution.md @@ -1,4 +1,4 @@ -# SML Interface Resolution +# AML Interface Resolution ## Overview @@ -133,7 +133,7 @@ Implementation and interface names occupy **separate namespaces**: - In Lookup Mode, implementation is checked first, then interface. Names within each namespace are **package-scoped** when multiple packages are -installed. The fully-qualified form is `/` (e.g. `sml-stdlib/unit-testing-coverage`). +installed. The fully-qualified form is `/` (e.g. `aml-stdlib/unit-testing-coverage`). Short names (without package prefix) resolve within the current package first, then search all packages. diff --git a/docs/spec/security.md b/docs/spec/security.md index b370e75..5a97c60 100644 --- a/docs/spec/security.md +++ b/docs/spec/security.md @@ -1,10 +1,10 @@ -# SML Security Model +# AML Security Model ## Overview -SML invokes executable skills, which may have side effects on real systems. +AML invokes executable skills, which may have side effects on real systems. A security model is essential to prevent unintended or malicious behaviour. -SML adopts a **deny-by-default** execution policy with explicit capability grants. +AML adopts a **deny-by-default** execution policy with explicit capability grants. ## Trust Boundaries @@ -16,7 +16,7 @@ SML adopts a **deny-by-default** execution policy with explicit capability grant | **Semi-trusted** | User-provided prompts in controlled environments | Execute skills within declared capability set | | **Untrusted** | External input, user-generated content, RAG results | Parse only; do NOT execute without explicit approval | -The trust level is set by the **caller** (the system integrating SML), not by +The trust level is set by the **caller** (the system integrating AML), not by the document itself. A document cannot escalate its own trust level. ## Capability Declarations @@ -160,7 +160,7 @@ This enables post-hoc security review and compliance auditing. | Threat | Mitigation | |---|---| -| Malicious SML in user input | Trust levels + deny-by-default | +| Malicious AML in user input | Trust levels + deny-by-default | | Skill escalates privileges | Capability declarations + pre-execution check | | Injected results trigger execution | Results are never re-parsed | | Compromised package | Registry trust + package provenance | diff --git a/docs/src/content/docs/api/python-api.mdx b/docs/src/content/docs/api/python-api.mdx index 9902bcc..27e5011 100644 --- a/docs/src/content/docs/api/python-api.mdx +++ b/docs/src/content/docs/api/python-api.mdx @@ -1,31 +1,31 @@ --- title: Python API -description: Python API reference for the SML runtime. +description: Python API reference for the AML runtime. --- -## Module: `sml` +## Module: `aml` ### `parse(input: str) -> Document` -Parse an SML document from a string. Returns a `Document` object. +Parse an AML document from a string. Returns a `Document` object. ```python -from sml import parse +from aml import parse doc = parse('Run tests') ``` -Raises `ValueError` if the input contains malformed SML. +Raises `ValueError` if the input contains malformed AML. -### `execute(doc: Document, registry: SmlRegistry) -> str` +### `execute(doc: Document, registry: AmlRegistry) -> str` Execute a parsed document with the given registry. Returns the final text output. ```python -from sml import execute, parse, SmlRegistry +from aml import execute, parse, AmlRegistry doc = parse(prompt) -registry = SmlRegistry() +registry = AmlRegistry() result = execute(doc, registry) ``` @@ -37,11 +37,11 @@ result = execute(doc, registry) | `definitions()` | List of definition names (e.g. `["interface:testing", "impl:pytest"]`) | | `invocations()` | List of invocation targets (e.g. `["testing", "code-review"]`) | -### `SmlRegistry` +### `AmlRegistry` | Method | Description | |--------|-------------| -| `SmlRegistry()` | Create empty registry | +| `AmlRegistry()` | Create empty registry | | `register_interface(name, description=None)` | Register an interface | | `register_implementation(name, implements, language=None, framework=None, description=None, priority=0)` | Register an implementation | | `register_from_document(doc)` | Register all definitions from a parsed document | diff --git a/docs/src/content/docs/api/rust-api.mdx b/docs/src/content/docs/api/rust-api.mdx index 21d46ff..7424874 100644 --- a/docs/src/content/docs/api/rust-api.mdx +++ b/docs/src/content/docs/api/rust-api.mdx @@ -1,16 +1,16 @@ --- title: Rust API -description: Rust API reference for sml-core. +description: Rust API reference for aml-core. --- -## Crate: `sml-core` +## Crate: `aml-core` The Rust API is documented via `cargo doc`. Key types: ### Parsing ```rust -use sml_core::parse; +use aml_core::parse; let doc = parse(r#"Run tests"#).unwrap(); ``` @@ -18,7 +18,7 @@ let doc = parse(r#"Run tests"#).unwrap(); ### Registry ```rust -use sml_core::SkillRegistry; +use aml_core::SkillRegistry; let mut registry = SkillRegistry::new(); registry.register_interface("testing".into(), Some("Run tests".into())).unwrap(); @@ -33,7 +33,7 @@ registry.register_implementation( ### Execution ```rust -use sml_core::{ExecutionContext, SkillRegistry, parse}; +use aml_core::{ExecutionContext, SkillRegistry, parse}; let registry = SkillRegistry::new(); let ctx = ExecutionContext::new(registry); @@ -64,5 +64,5 @@ let result = ctx.execute(&doc).unwrap(); ## Building Documentation ```bash -cargo doc --open -p sml-core +cargo doc --open -p aml-core ``` diff --git a/docs/src/content/docs/guide/error-handling.mdx b/docs/src/content/docs/guide/error-handling.mdx index 1864d77..3447063 100644 --- a/docs/src/content/docs/guide/error-handling.mdx +++ b/docs/src/content/docs/guide/error-handling.mdx @@ -1,6 +1,6 @@ --- title: Error Handling -description: How SML handles failures during execution. +description: How AML handles failures during execution. --- ## Failure Modes diff --git a/docs/src/content/docs/guide/getting-started.mdx b/docs/src/content/docs/guide/getting-started.mdx index abb5dfb..40aba24 100644 --- a/docs/src/content/docs/guide/getting-started.mdx +++ b/docs/src/content/docs/guide/getting-started.mdx @@ -1,17 +1,17 @@ --- title: Getting Started -description: Quick start guide for using SML in your agent prompts. +description: Quick start guide for using AML in your agent prompts. --- ## Installation ```bash -pip install sml +pip install aml ``` -## Your First SML Tag +## Your First AML Tag -SML tags are embedded directly in agent prompts: +AML tags are embedded directly in agent prompts: ```xml @@ -37,13 +37,13 @@ Before invoking, define your interfaces and implementations: ## Using the Python API ```python -from sml import parse, execute, SmlRegistry +from aml import parse, execute, AmlRegistry -# Parse the SML document +# Parse the AML document doc = parse(prompt_text) # Register definitions -registry = SmlRegistry() +registry = AmlRegistry() registry.register_from_document(doc) # Execute diff --git a/docs/src/content/docs/guide/interfaces-and-implementations.mdx b/docs/src/content/docs/guide/interfaces-and-implementations.mdx index 7ea0730..46b9382 100644 --- a/docs/src/content/docs/guide/interfaces-and-implementations.mdx +++ b/docs/src/content/docs/guide/interfaces-and-implementations.mdx @@ -1,6 +1,6 @@ --- title: Interfaces & Implementations -description: The SML resolution model. +description: The AML resolution model. --- ## Concepts @@ -47,4 +47,4 @@ The runtime resolves `unit-testing` + `language="python"` → `pytest-runner`. ## Handling Ambiguity -If multiple implementations match with equal priority, resolution **fails explicitly** with an `Ambiguous` error. This is intentional — SML never silently picks a random implementation. +If multiple implementations match with equal priority, resolution **fails explicitly** with an `Ambiguous` error. This is intentional — AML never silently picks a random implementation. diff --git a/docs/src/content/docs/guide/nesting-and-scoping.mdx b/docs/src/content/docs/guide/nesting-and-scoping.mdx index 107fdb6..6eebe15 100644 --- a/docs/src/content/docs/guide/nesting-and-scoping.mdx +++ b/docs/src/content/docs/guide/nesting-and-scoping.mdx @@ -1,6 +1,6 @@ --- title: Nesting & Scoping -description: Composition patterns with nested SML skills. +description: Composition patterns with nested AML skills. --- ## Scoping diff --git a/docs/src/content/docs/guide/syntax.mdx b/docs/src/content/docs/guide/syntax.mdx index 8befe18..28f5e41 100644 --- a/docs/src/content/docs/guide/syntax.mdx +++ b/docs/src/content/docs/guide/syntax.mdx @@ -1,6 +1,6 @@ --- title: Syntax Reference -description: Complete SML syntax guide. +description: Complete AML syntax guide. --- ## Tag Structure diff --git a/docs/src/content/docs/index.mdx b/docs/src/content/docs/index.mdx index 3bbf61d..9816424 100644 --- a/docs/src/content/docs/index.mdx +++ b/docs/src/content/docs/index.mdx @@ -1,21 +1,21 @@ --- -title: SML — Skill Markup Language +title: AML — Agent Markup Language description: A lightweight markup language for declarative skill invocation in agent prompts. template: splash hero: tagline: Declarative, composable, nestable skill invocation for AI agents. actions: - text: Get Started - link: /aslm/guide/getting-started/ + link: /aml/guide/getting-started/ icon: right-arrow - text: Language Spec - link: /aslm/specification/ + link: /aml/specification/ variant: minimal --- -## What is SML? +## What is AML? -SML (Skill Markup Language) is a lightweight, XML-inspired markup language that enables agents to declaratively invoke modular, scoped, and nestable skills directly inside prompts. +AML (Agent Markup Language) is a lightweight, XML-inspired markup language that enables agents to declaratively invoke modular, scoped, and nestable skills directly inside prompts. ```xml diff --git a/docs/src/content/docs/installation/apm-package.mdx b/docs/src/content/docs/installation/apm-package.mdx index 3cbd2e7..2d478ff 100644 --- a/docs/src/content/docs/installation/apm-package.mdx +++ b/docs/src/content/docs/installation/apm-package.mdx @@ -1,22 +1,22 @@ --- title: APM Package -description: Install SML via Agent Package Manager. +description: Install AML via Agent Package Manager. --- ## Install via APM ```bash -apm install sml +apm install aml ``` -This installs the SML knowledge package which includes: -- `sml-usage-guide` — How to write SML tags correctly -- `sml-installation` — How to install the runtime +This installs the AML knowledge package which includes: +- `aml-usage-guide` — How to write AML tags correctly +- `aml-installation` — How to install the runtime ## What You Get -After installation, agents loading the `sml-usage-guide` skill will know how to: -- Write correct SML syntax +After installation, agents loading the `aml-usage-guide` skill will know how to: +- Write correct AML syntax - Define interfaces and implementations - Use nesting and scoping patterns - Handle errors and retries @@ -26,18 +26,18 @@ After installation, agents loading the `sml-usage-guide` skill will know how to: ``` .apm/skills/ -├── sml-usage-guide/ +├── aml-usage-guide/ │ ├── SKILL.md # Core syntax rules and patterns │ └── references/ │ └── system-prompts.md # ReAct and Plan-and-Execute examples -└── sml-installation/ +└── aml-installation/ └── SKILL.md # Runtime installation instructions ``` ## APM vs pip -| Concern | APM (`apm install sml`) | pip (`pip install sml`) | +| Concern | APM (`apm install aml`) | pip (`pip install aml`) | |---------|------------------------|------------------------| | What | Knowledge (skills) | Runtime (parser + executor) | -| For | Agents learning SML syntax | Applications executing SML | +| For | Agents learning AML syntax | Applications executing AML | | Delivers | SKILL.md files | Compiled Rust + Python bindings | diff --git a/docs/src/content/docs/installation/pip-install.mdx b/docs/src/content/docs/installation/pip-install.mdx index 718ae87..45b86e3 100644 --- a/docs/src/content/docs/installation/pip-install.mdx +++ b/docs/src/content/docs/installation/pip-install.mdx @@ -1,12 +1,12 @@ --- title: pip install -description: Install SML from PyPI. +description: Install AML from PyPI. --- ## Quick Install ```bash -pip install sml +pip install aml ``` ## Requirements @@ -26,16 +26,16 @@ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh pip install maturin # Clone and build -git clone https://github.com/sergio-sisternes-epam/aslm.git -cd aslm +git clone https://github.com/sergio-sisternes-epam/aml.git +cd aml maturin develop --release ``` ## Verify ```python -from sml import parse +from aml import parse doc = parse('hello') assert doc.node_count == 1 -print("SML installed successfully!") +print("AML installed successfully!") ``` diff --git a/docs/src/content/docs/specification/attributes.mdx b/docs/src/content/docs/specification/attributes.mdx index f14705b..ade375a 100644 --- a/docs/src/content/docs/specification/attributes.mdx +++ b/docs/src/content/docs/specification/attributes.mdx @@ -1,6 +1,6 @@ --- title: Attribute Reference -description: Complete reference for all SML attributes. +description: Complete reference for all AML attributes. --- ## Attributes by Node Type diff --git a/docs/src/content/docs/specification/execution.mdx b/docs/src/content/docs/specification/execution.mdx index ef78e33..06fba2c 100644 --- a/docs/src/content/docs/specification/execution.mdx +++ b/docs/src/content/docs/specification/execution.mdx @@ -1,6 +1,6 @@ --- title: Execution Model -description: How SML executes skills with policies and failure handling. +description: How AML executes skills with policies and failure handling. --- ## Execution Policies @@ -20,7 +20,7 @@ Input: "Please long text here thanks" Output: "Please [summary result] thanks" ``` -Results are **escaped by default** — they are never re-parsed as SML. +Results are **escaped by default** — they are never re-parsed as AML. ## Failure Modes diff --git a/docs/src/content/docs/specification/grammar.mdx b/docs/src/content/docs/specification/grammar.mdx index a7d66fa..d512f3a 100644 --- a/docs/src/content/docs/specification/grammar.mdx +++ b/docs/src/content/docs/specification/grammar.mdx @@ -1,11 +1,11 @@ --- title: Formal Grammar -description: EBNF grammar for the SML language. +description: EBNF grammar for the AML language. --- ## Overview -SML uses XML-like `` tags embedded in arbitrary text. The grammar defines three mutually exclusive node types determined by the presence of the `define` attribute. +AML uses XML-like `` tags embedded in arbitrary text. The grammar defines three mutually exclusive node types determined by the presence of the `define` attribute. ## Node Types diff --git a/docs/src/content/docs/specification/index.mdx b/docs/src/content/docs/specification/index.mdx index 835dcd9..1e24385 100644 --- a/docs/src/content/docs/specification/index.mdx +++ b/docs/src/content/docs/specification/index.mdx @@ -1,8 +1,8 @@ --- title: Language Specification -description: Formal specification of the SML language. +description: Formal specification of the AML language. --- -The SML language specification defines the grammar, lifecycle, resolution algorithm, execution model, and security constraints. +The AML language specification defines the grammar, lifecycle, resolution algorithm, execution model, and security constraints. Browse the specification documents using the sidebar navigation. diff --git a/docs/src/content/docs/specification/lifecycle.mdx b/docs/src/content/docs/specification/lifecycle.mdx index a730da5..253ec15 100644 --- a/docs/src/content/docs/specification/lifecycle.mdx +++ b/docs/src/content/docs/specification/lifecycle.mdx @@ -1,11 +1,11 @@ --- title: Execution Lifecycle -description: The six phases of SML processing. +description: The six phases of AML processing. --- ## Pipeline -SML processing follows a strict six-phase pipeline: +AML processing follows a strict six-phase pipeline: 1. **Parse** — Extract `` tags from input text, build AST 2. **Validate** — Check attribute combinations, required fields diff --git a/docs/src/content/docs/specification/resolution.mdx b/docs/src/content/docs/specification/resolution.mdx index 72ed6c5..b16d184 100644 --- a/docs/src/content/docs/specification/resolution.mdx +++ b/docs/src/content/docs/specification/resolution.mdx @@ -1,6 +1,6 @@ --- title: Interface Resolution -description: How SML resolves interfaces to implementations. +description: How AML resolves interfaces to implementations. --- ## Resolution Algorithm diff --git a/docs/src/content/docs/specification/security.mdx b/docs/src/content/docs/specification/security.mdx index cb341b6..1694226 100644 --- a/docs/src/content/docs/specification/security.mdx +++ b/docs/src/content/docs/specification/security.mdx @@ -1,12 +1,12 @@ --- title: Security Model -description: Trust boundaries and security constraints in SML. +description: Trust boundaries and security constraints in AML. --- ## Principles 1. **Deny by default** — Skills have no capabilities unless explicitly granted -2. **Results are escaped** — Skill output is never re-parsed as SML (prevents injection) +2. **Results are escaped** — Skill output is never re-parsed as AML (prevents injection) 3. **Scoped execution** — Skills only see their declared scope (tag content) ## Trust Boundaries @@ -14,7 +14,7 @@ description: Trust boundaries and security constraints in SML. | Source | Trust Level | Description | |--------|------------|-------------| | System prompt definitions | Trusted | Installed by operator | -| User-provided SML | Untrusted | Must be validated | +| User-provided AML | Untrusted | Must be validated | | Skill results | Escaped | Never re-parsed | ## Capability Model diff --git a/docs/src/styles/custom.css b/docs/src/styles/custom.css index b75838b..b23d0bd 100644 --- a/docs/src/styles/custom.css +++ b/docs/src/styles/custom.css @@ -1,4 +1,4 @@ -/* Custom styles for the SML docs site */ +/* Custom styles for the AML docs site */ :root { --sl-color-accent-low: #1a1a2e; --sl-color-accent: #4a90d9; diff --git a/examples/full_pipeline.py b/examples/full_pipeline.py index b7b581f..e989cf0 100644 --- a/examples/full_pipeline.py +++ b/examples/full_pipeline.py @@ -1,16 +1,16 @@ """ -End-to-end example: Parse, register, resolve, and execute SML. +End-to-end example: Parse, register, resolve, and execute AML. -This example demonstrates the full SML pipeline using the Python API. +This example demonstrates the full AML pipeline using the Python API. """ def main(): - # Note: This example requires the sml package to be installed - # pip install sml (or: maturin develop --release) - from sml import SmlRegistry, execute, parse + # Note: This example requires the aml package to be installed + # pip install aml (or: maturin develop --release) + from aml import AmlRegistry, execute, parse - # 1. Define interfaces and implementations in SML + # 1. Define interfaces and implementations in AML definitions = """ Analyse code for bugs, style issues, and security vulnerabilities. @@ -27,7 +27,7 @@ def main(): # 2. Parse and register definitions def_doc = parse(definitions) - registry = SmlRegistry() + registry = AmlRegistry() registry.register_from_document(def_doc) # 3. Parse an invocation diff --git a/examples/nested_execution.py b/examples/nested_execution.py index 7ead58f..8254fe0 100644 --- a/examples/nested_execution.py +++ b/examples/nested_execution.py @@ -6,16 +6,16 @@ def main(): - from sml import SmlRegistry, execute, parse + from aml import AmlRegistry, execute, parse # Set up registry - registry = SmlRegistry() + registry = AmlRegistry() registry.register_interface("fetch", "Fetch content from a URL") registry.register_interface("summarise", "Summarise text content") registry.register_implementation("http-fetch", "fetch") registry.register_implementation("gpt-summarise", "summarise") - # Nested SML: fetch runs first, then summarise operates on the result + # Nested AML: fetch runs first, then summarise operates on the result prompt = """ diff --git a/pyproject.toml b/pyproject.toml index 3fa7dfe..39aca6f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,9 +3,9 @@ requires = ["maturin>=1.5,<2.0"] build-backend = "maturin" [project] -name = "sml" +name = "aml" version = "0.1.0" -description = "SML (Skill Markup Language) — declarative skill invocation for agent prompts" +description = "AML (Agent Markup Language) — declarative skill invocation for agent prompts" readme = "README.md" license = { text = "MIT" } requires-python = ">=3.9" @@ -17,8 +17,8 @@ classifiers = [ ] [tool.maturin] -manifest-path = "crates/sml-python/Cargo.toml" -module-name = "sml" +manifest-path = "crates/aml-python/Cargo.toml" +module-name = "aml" python-source = "python" features = ["pyo3/extension-module"] diff --git a/tests/conformance/execution/01-bottom-up-nesting.md b/tests/conformance/execution/01-bottom-up-nesting.md index f8140b8..bae6569 100644 --- a/tests/conformance/execution/01-bottom-up-nesting.md +++ b/tests/conformance/execution/01-bottom-up-nesting.md @@ -2,7 +2,7 @@ ## Input -```sml +```aml hello world needs summarising. diff --git a/tests/conformance/execution/02-wrapper-policy.md b/tests/conformance/execution/02-wrapper-policy.md index c56a107..c795f3e 100644 --- a/tests/conformance/execution/02-wrapper-policy.md +++ b/tests/conformance/execution/02-wrapper-policy.md @@ -2,7 +2,7 @@ ## Input -```sml +```aml Write secret.txt with contents "password123" diff --git a/tests/conformance/execution/03-failed-skip.md b/tests/conformance/execution/03-failed-skip.md index 6583836..48e98d3 100644 --- a/tests/conformance/execution/03-failed-skip.md +++ b/tests/conformance/execution/03-failed-skip.md @@ -2,7 +2,7 @@ ## Input -```sml +```aml Introduction paragraph. diff --git a/tests/conformance/execution/04-failed-halt.md b/tests/conformance/execution/04-failed-halt.md index a614144..f73db39 100644 --- a/tests/conformance/execution/04-failed-halt.md +++ b/tests/conformance/execution/04-failed-halt.md @@ -2,7 +2,7 @@ ## Input -```sml +```aml fetch critical metrics diff --git a/tests/conformance/execution/05-no-reparsing.md b/tests/conformance/execution/05-no-reparsing.md index 2b87833..5024f16 100644 --- a/tests/conformance/execution/05-no-reparsing.md +++ b/tests/conformance/execution/05-no-reparsing.md @@ -2,7 +2,7 @@ ## Input -```sml +```aml return this text diff --git a/tests/conformance/execution/06-resolution-with-hints.md b/tests/conformance/execution/06-resolution-with-hints.md index a62dff3..1a28532 100644 --- a/tests/conformance/execution/06-resolution-with-hints.md +++ b/tests/conformance/execution/06-resolution-with-hints.md @@ -2,7 +2,7 @@ ## Input -```sml +```aml Test the auth module. diff --git a/tests/conformance/execution/07-ambiguous-resolution.md b/tests/conformance/execution/07-ambiguous-resolution.md index 385f969..8940659 100644 --- a/tests/conformance/execution/07-ambiguous-resolution.md +++ b/tests/conformance/execution/07-ambiguous-resolution.md @@ -2,7 +2,7 @@ ## Input -```sml +```aml Test the auth module.