agent-first-psql 0.8.2

A PostgreSQL interface for AI agents: reliable, structured, explicit, and read-only by default.
Documentation
{
  "$schema": "https://cmn.dev/schemas/v1/spore-core.json",
  "id": "agent-first-psql",
  "name": "Agent-First PSQL",
  "version": "0.8.2",
  "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": [
    "Move every environment-mutating test into a dedicated integration binary: two tests set PGHOST and AFPSQL_DSN_SECRET inside the shared library test binary while unlocked readers ran in parallel, so five unrelated connection tests failed depending on thread scheduling",
    "Keep the locked-profile assertion honest by resolving an unpinned session under the same hostile environment, so the pinned case cannot pass merely because nothing was set",
    "Upgrade to agent-first-data 0.26.2, whose spec amendment names the consumption-mode rule this release line already implements for --mode pipe and --stream-rows"
  ],
  "bonds": [
    {
      "relation": "depends_on",
      "uri": "cmn://agentfirstkit.com/b3.2u9kRio7ReF5aR1ZVyiJG17Py79q5yLsPj96renkCCLx",
      "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"
    ]
  }
}