Skip to content

Releases: Pinperepette/agd

v0.1.0 — initial public release

Choose a tag to compare

@Pinperepette Pinperepette released this 09 May 15:23

First public release of AGD — Agent Document Format, a line-oriented text format
for LLM agents that sits between Markdown and HTML: more deterministic than Markdown,
more compact than HTML, and addressable per block via stable [#id] anchors so
multiple agents can edit the same document without fighting over byte ranges.

Highlights

  • Single-sigil block syntax (@<tag> at column 0) — no closing tags
  • Optional stable per-block IDs [#name] for safe multi-agent editing
  • LL(1) parser, single-pass, no backtracking (~1000 lines of Rust)
  • Idempotent canonical serializer (verified by 512+ proptest cases)
  • Operation-based edit API: replace, insert_after, insert_before, delete, set_attr, remove_attr
  • CLI with 9 subcommands: parse, validate, format, convert from-md|to-md|to-html, bench, id, edit, ref
  • Markdown ↔ AGD ↔ HTML converters
  • Token benchmark vs Markdown / HTML / JSON via tiktoken cl100k_base
  • Frozen v0.1 grammar in EBNF, specification dogfooded in .agd itself

Token economy (cl100k_base, four real-world examples)

Format vs AGD
HTML +10% to +33% more
JSON +115% to +200% more
Markdown -15% to -25% — Markdown wins on raw count

The Markdown deficit is the deliberate cost of explicit @<tag> prefixes and
[#id] anchors. AGD pays back when an agent has to edit the document.

Test coverage

67 tests across six suites:

  • unit tests in src/*
  • property-based roundtrip (proptest, 256 cases × 2 properties)
  • conformance corpus (paired .agd / .json fixtures)
  • CLI integration via assert_cmd
  • doc-tests

Install

cargo install --git https://github.com/pinperepette/agd

The binary is called agd.

Deferred to v0.2

  • VS Code / editor extension and LSP server
  • PyO3 / wasm bindings
  • Tree-sitter grammar
  • Content-hash ID validation enforcement
  • Native table syntax
  • Fence-depth escapes for code-in-code

Status

Grammar is frozen for v0.1. Format and parser API are stable from this point;
breaking changes require a major version bump.