{
  "client": "macOS toolbox, MultiAgentFeature",
  "description": "The fields the macOS toolbox decodes today, frozen. The toolbox uses Swift's synthesized Decodable, so a field written `T` must be present, non-null and of that type, and a field written `T?` may be absent or null but must be of that type when present. Removing a `T` field, or changing the type of either kind, breaks the toolbox on every machine at once. Adding fields is always safe: the decoder ignores keys it does not know. test/toolbox-compat.test.mjs runs each producer and holds its real output to this file.",
  "types": "string | integer | number | boolean | array | object, suffixed ? when optional. number admits an integer; integer does not admit a fraction.",
  "surfaces": {
    "runs-index": {
      "argv": ["node", "scripts/runs-index.mjs", "--json"],
      "schema": "runs-index.schema.json",
      "fields": {
        "logsRoot": "string",
        "count": "integer",
        "runs": "array",
        "runs[].taskId": "string",
        "runs[].project": "string?",
        "runs[].dir": "string",
        "runs[].layout": "string",
        "runs[].duplicateOf": "string?",
        "runs[].salvaged": "boolean",
        "runs[].kind": "string?",
        "runs[].stateReadable": "boolean",
        "runs[].status": "string?",
        "runs[].currentPhase": "integer?",
        "runs[].branch": "string?",
        "runs[].baseBranch": "string?",
        "runs[].startedAt": "string?",
        "runs[].worktreePath": "string?",
        "runs[].prUrl": "string?",
        "runs[].autopilot": "boolean",
        "runs[].schemaVersion": "string?",
        "runs[].rev": "integer?",
        "runs[].group": "string",
        "runs[].phases": "array",
        "runs[].phases[].id": "string",
        "runs[].phases[].name": "string",
        "runs[].phases[].status": "string",
        "runs[].phases[].model": "string?",
        "runs[].phases[].startedAt": "string?",
        "runs[].phases[].completedAt": "string?",
        "runs[].phases[].now": "string?",
        "runs[].phases[].subs": "integer",
        "runs[].phases[].progress": "number?",
        "runs[].phases[].tasks": "array?",
        "runs[].phases[].tasks[].id": "string",
        "runs[].phases[].tasks[].subject": "string",
        "runs[].phases[].tasks[].activeForm": "string?",
        "runs[].phases[].tasks[].status": "string",
        "runs[].runType": "string?",
        "runs[].title": "string?",
        "runs[].progress": "number?",
        "runs[].processAlive": "boolean?",
        "runs[].currentTask": "object?",
        "runs[].currentTask.subject": "string",
        "runs[].currentTask.activeForm": "string?",
        "runs[].tokens": "object",
        "runs[].tokens.in": "integer",
        "runs[].tokens.out": "integer",
        "runs[].tokens.cached": "integer",
        "runs[].estUsd": "number"
      }
    },
    "doctor": {
      "argv": ["node", "scripts/doctor.mjs", "--json"],
      "fields": {
        "exit": "integer",
        "checks": "array",
        "checks[].id": "string",
        "checks[].severity": "string",
        "checks[].problem": "string?",
        "checks[].step": "string?",
        "checks[].detail": "string?"
      }
    },
    "autopilot-status": {
      "argv": ["bash", "scripts/autopilot-status.sh", "--json"],
      "fields": {
        "on": "boolean",
        "slots": "integer",
        "running": "array",
        "queued": "array",
        "awaiting": "array",
        "todayCount": "integer",
        "todayUsd": "number",
        "lastTickAt": "integer?",
        "power": "string?",
        "note": "string?",
        "scanIntervalSeconds": "integer?",
        "emptyReason": "string?",
        "blockedReason": "string?",
        "stopCommand": "string?",
        "spendUsd": "number",
        "ceilingUsd": "number",
        "running[].id": "string",
        "running[].repo": "string?",
        "running[].source": "string?",
        "running[].stack": "string?",
        "running[].depth": "string?",
        "running[].startedAt": "string?",
        "running[].state": "string?",
        "running[].url": "string?",
        "queued[].id": "string",
        "queued[].repo": "string?",
        "queued[].source": "string?",
        "awaiting[].id": "string",
        "awaiting[].repo": "string?"
      }
    },
    "credential-inventory": {
      "argv": ["bash", "lib/credential-inventory.sh", "--json"],
      "fields": {
        "status": "string",
        "probed": "boolean",
        "credentials": "array",
        "credentials[].logical": "string",
        "credentials[].state": "string",
        "credentials[].reachability": "string",
        "credentials[].capability": "string?"
      }
    }
  }
}
