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.
Project description
Agent-First Data for Python
pip install agent-first-data
from agent_first_data import json_result, render, OutputFormat
value = json_result(
{
"api_key_secret": "sk-123",
"latency_ms": 1280,
"db_url": "postgres://user:p@ss@db/app?token_secret=abc",
}
).build()
print(render(value, OutputFormat.JSON))
print(render(value, OutputFormat.PLAIN))
Useful names use Python casing: render (the single value x format x options -> str entry point; takes an OutputFormat and an optional keyword-only options=), redacted_value, redact_url_secrets, normalize_utc_offset, is_valid_rfc3339_date, is_valid_rfc3339_time, is_valid_rfc3339, is_valid_bcp47, cli_parse_output, build_cli_error, build_cli_version, cli_handle_version_or_continue, decode_protocol_event. Skill admin and stream-redirect helpers live in agent_first_data.skill and agent_first_data.stream_redirect (import the submodule directly).
Logging is available through init_logging_json, init_logging_plain, init_logging_yaml, span, and get_logger.
from agent_first_data import init_logging_json
init_logging_json("INFO", secret_names=("authorization",))
Behavior Notes
- Default redaction replaces every
_secretor configured secret-name subtree with***, including objects and arrays. _urlfields scrub userinfo passwords and secret-named query parameters; surrounding whitespace is trimmed and internal whitespace redacts the whole field.- YAML keeps original keys and values (structure-preserving, like JSON), sorting keys by UTF-16 code unit order and quoting/escaping unsafe keys and string scalars. Plain strips formatting suffixes, formats values, sorts the same way, and renders nested objects/arrays as canonical JSON.
- Logging records use
kind:"log"with a nestedlogpayload and a separatelevelfield, so error-level logs are not terminal protocol errors. build_cli_error(message, hint?)returns a strict-ready CLI error witherror.retryable:falseandtrace:{}.- Use
cli_handle_version_or_continue()before argument parsing so bare--versionstays conventional and--version --output json|yaml|plainstays structured. - Use
agent_first_data.stream_redirect.install_from_raw_args()before version/help handling if a CLI exposes--stdout-fileor--stderr-file; stderr is redirected as native diagnostics, not JSON.
Reference
- Full convention and API groups: docs/overview.md
- Formal cross-language contract: spec/agent-first-data.md
- Conformance fixtures: spec/fixtures
- Agent skill: skills/agent-first-data/SKILL.md
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agent_first_data-0.20.0.tar.gz.
File metadata
- Download URL: agent_first_data-0.20.0.tar.gz
- Upload date:
- Size: 61.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
56239d5881d6674a6fb71aaa12d69f08716099ff6731d896b0570acc95c6bed1
|
|
| MD5 |
2a81ae418d0dd938d8c569f580859616
|
|
| BLAKE2b-256 |
5863eaaeba77f01cade6fa1ab8d0b6e928d8f8fad9837616d4b7a7da7be84e0d
|
File details
Details for the file agent_first_data-0.20.0-py3-none-any.whl.
File metadata
- Download URL: agent_first_data-0.20.0-py3-none-any.whl
- Upload date:
- Size: 52.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
81eeed3c04ed6f7011ac347b2100ed827aff7bc96db1dddf6b7db59866f91ab7
|
|
| MD5 |
d5059632362d1222cd65ce89e77c23c9
|
|
| BLAKE2b-256 |
f84e18d8117ad541a65b4e36197b72a00c67530cc0136418799e1b690704b556
|