Go
go get github.com/agentfirstkit/agent-first-data/go
package main
import (
"fmt"
afdata "github.com/agentfirstkit/agent-first-data/go"
)
func main() {
value := map[string]any{
"code": "ok",
"result": map[string]any{
"api_key_secret": "sk-123",
"latency_ms": 1280,
"db_url": "postgres://user:p@ss@db/app?token_secret=abc",
},
}
fmt.Println(afdata.OutputJson(value))
fmt.Println(afdata.OutputPlain(value))
}
Useful names use Go casing: OutputJson, OutputYaml, OutputPlain, OutputJsonWithOptions, RedactedValue, RedactSecretsInPlace, RedactURLSecrets, ParseSize, NormalizeUTCOffset, IsValidRFC3339Date, IsValidRFC3339Time, CliParseOutput, CliOutput, BuildCliError, BuildCliVersion, CliHandleVersionOrContinue, ParseStreamRedirectArgs, and InstallStreamRedirectFromArgs.
Logging is available through the log/slog integration: InitJson, InitPlain, InitYaml, InitJsonWithOptions, WithSpan, and LoggerFromContext.
afdata.InitJsonWithOptions(afdata.RedactionOptions{
SecretNames: []string{"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/plain quote and escape keys as well as values, sort by UTF-16 code unit order, and render nested objects in arrays as canonical JSON.
- Logging records use
code: "log"plus a separatelevelfield, so error-level logs are not terminal protocol errors. build_cli_error(message, hint?)returns{code:"error", error: message, hint?}only.- Use
CliHandleVersionOrContinue()before argument parsing so bare--versionstays conventional and--version --output json|yaml|plainstays structured. - Use
InstallStreamRedirectFromArgs()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.md