{
"$schema": "https://cmn.dev/schemas/v1/spore-core.json",
"id": "agent-first-psql",
"name": "Agent-First PSQL",
"version": "0.8.1",
"domain": "agentfirstkit.com",
"key": "ed25519.BwbSzqdDYyMN1pPW5snRk3afrJAovHn8aueMvDpfNKVw",
"synopsis": "A PostgreSQL interface for AI agents: reliable, structured, explicit, and read-only by default.",
"intent": [
"Give AI agents a persistent PostgreSQL client that reuses long-lived database connections and sessions, so agents send SQL requests as JSONL and receive structured JSONL responses without managing connection setup",
"Bridge ad-hoc psql shell usage and protocol-specific integrations by providing transport-neutral, agent-native request and response framing",
"Provide predictable machine-readable outputs for row sets, command status, and errors so agent workflows can branch without parsing human-formatted terminal output"
],
"license": "MIT",
"mutations": [
"Fix the release smoke test to read errors from the diagnostic stream: it still captured only stdout, so after v0.8.0 split results from diagnostics it failed the platform binary build and left v0.8.0 published without downloadable artifacts",
"Restore the smoke test's secret-leak assertion, which had been passing against an empty string and so verified nothing; it now checks that a configured secret appears on neither stdout nor stderr",
"Assert stream redirection against the stream that carries the event: --stderr-file receives a runtime error under the default split, and --output-to stdout moves that same error into --stdout-file",
"Run the release smoke as part of the project test gate instead of only inside the Release workflow, so a check that can fail a release fails the gate first"
],
"bonds": [
{
"relation": "depends_on",
"uri": "cmn://agentfirstkit.com/b3.3JvaoXaDbsCT6z16jtvCD1oGrPZEsEXGn6g1CWqKCpJF",
"id": "agent-first-data",
"reason": "All request/response fields use Agent-First Data suffix conventions and output formats"
}
],
"tree": {
"algorithm": "blob_tree_blake3_nfc",
"exclude_names": [
".git",
".cmn"
],
"follow_rules": [
".gitignore"
]
}
}