agent-first-data 0.19.0

A naming convention that lets AI agents understand your data without being told what it means, plus a CLI and library for reading and safely editing structured JSON, TOML, YAML, dotenv, and INI documents.
Documentation
{
  "$schema": "https://cmn.dev/schemas/v1/spore-core.json",
  "id": "agent-first-data",
  "name": "Agent-First Data",
  "version": "0.19.0",
  "domain": "agentfirstkit.com",
  "key": "ed25519.BwbSzqdDYyMN1pPW5snRk3afrJAovHn8aueMvDpfNKVw",
  "synopsis": "A naming convention that lets AI agents understand your data without being told what it means, plus a CLI and library for reading and safely editing structured JSON, TOML, YAML, dotenv, and INI documents.",
  "intent": [
    "Encode all semantic information in the field name itself so agents parse structured data without external schemas, documentation, or type systems — _ms/_s/_epoch_ms for time, _msats/_sats/_usd_cents for currency, _bytes for size, _secret for auto-redaction",
    "Define a JSONL output protocol where every line carries a code field (startup for config state, tool-defined for status/progress, ok/error for results) plus a trace object for execution context (duration, token counts, cost, data source) — same structure whether the transport is CLI stdout, HTTP response body, MCP tool result, or SSE stream",
    "Provide three output formats via --output json|yaml|plain: JSON is the canonical lossless format, YAML preserves structure with quoted strings and --- separators, plain applies suffix-driven human formatting (epoch_ms → RFC 3339, _bytes → human-readable, _secret → ***, _ms ≥ 1000 → seconds)"
  ],
  "license": "MIT",
  "mutations": [
    "Output-stream contract: a finite one-shot CLI routes result to stdout and error/progress/log to stderr; event-stream mode keeps all events on one ordered stream; the global --output-to <split|stdout|stderr> selects it",
    "CliEmitter finish/finish_result map a run outcome to an exit code (success to code, broken pipe to 0, other write error to 4) without the library ever calling process::exit",
    "Frontmatter mode: --input-format toml-frontmatter/yaml-frontmatter reads and edits dot-paths inside a Markdown page's +++/--- block with the usual document verbs, leaving the body byte-for-byte untouched (never auto-detected)",
    "Secret-safe config reads: DocumentFile::open_capped guards size and regular-file before reading, value_at reads a dot-path in one call, and DocumentError::redacted_message()/location() report a parse failure position without the source line",
    "DocumentError::code(), Format::name(), Value::kind_name() are now methods on the document types, replacing external match-on-enum helpers"
  ],
  "bonds": [],
  "tree": {
    "algorithm": "blob_tree_blake3_nfc",
    "exclude_names": [
      ".git",
      ".cmn"
    ],
    "follow_rules": [
      ".gitignore"
    ]
  }
}