Zum Hauptinhalt springen Zur Navigation springen Zur Fußzeile springen

JSON-Ausgabe-Referenz

Vollständige Referenz für das JSON-Ausgabeformat der rdc CLI, Envelope-Schema, Fehlerbehandlung und Agenten-Erkennungsbefehle.

Alle rdc-Befehle unterstützen strukturierte JSON-Ausgabe für die programmatische Nutzung durch KI-Agenten und Skripte.

JSON-Ausgabe aktivieren

Explizites Flag

rdc machine query prod-1 --output json
rdc machine query prod-1 -o json

Automatische Erkennung

Wenn rdc in einer non-TTY-Umgebung laeuft (gepipt, Subshell oder von einem KI-Agenten gestartet), wechselt die Ausgabe automatisch zu JSON. Kein Flag erforderlich.

# These all produce JSON automatically
result=$(rdc machine query prod-1)
echo '{}' | rdc agent exec "machine query"

JSON-Envelope

Jede JSON-Antwort verwendet ein einheitliches Envelope-Format:

{
  "success": true,
  "command": "machine query",
  "data": {
    "name": "prod-1",
    "status": "running",
    "repositories": []
  },
  "errors": null,
  "warnings": [],
  "metrics": {
    "duration_ms": 142
  }
}
FeldTypBeschreibung
successbooleanOb der Befehl erfolgreich abgeschlossen wurde
commandstringDer vollstaendige Befehlspfad (z.B. "machine query", "repo up")
dataobject | array | nullBefehlsspezifische Nutzlast bei Erfolg, null bei Fehler
errorsarray | nullFehlerobjekte bei Misserfolg, null bei Erfolg
warningsstring[]Nicht-fatale Warnungen, die waehrend der Ausführung gesammelt wurden
metricsobjectAusführungsmetadaten

Fehlerantworten

Fehlgeschlagene Befehle geben strukturierte Fehler mit Wiederherstellungshinweisen zurück:

{
  "success": false,
  "command": "machine query",
  "data": null,
  "errors": [
    {
      "code": "NOT_FOUND",
      "message": "Machine \"prod-2\" not found",
      "retryable": false,
      "guidance": "Verify the resource name with \"rdc machine query\" or \"rdc config repository list\""
    }
  ],
  "warnings": [],
  "metrics": {
    "duration_ms": 12
  }
}

Fehlerfelder

FeldTypBeschreibung
codestringMaschinenlesbarer Fehlercode
messagestringMenschenlesbare Beschreibung
retryablebooleanOb ein erneuter Versuch desselben Befehls erfolgreich sein koennte
guidancestringVorgeschlagene naechste Aktion zur Behebung des Fehlers

Wiederholbare Fehler

Diese Fehlertypen sind mit retryable: true gekennzeichnet:

  • NETWORK_ERROR — SSH-Verbindungs- oder Netzwerkfehler
  • RATE_LIMITED — Zu viele Anfragen, warten und erneut versuchen
  • API_ERROR — Vorübergehender Backend-Fehler

Nicht wiederholbare Fehler (Authentifizierung, nicht gefunden, ungueltige Argumente) erfordern korrektive Massnahmen vor einem erneuten Versuch.

Ausgabe filtern

Verwenden Sie --fields, um die Ausgabe auf bestimmte Schluessel zu beschraenken. Dies reduziert den Token-Verbrauch, wenn nur bestimmte Daten benoetigt werden:

rdc machine containers prod-1 -o json --fields name,status,repository

Testlauf-Ausgabe

Destruktive Befehle unterstützen --dry-run zur Vorschau der Auswirkungen:

rdc repo delete mail -m prod-1 --dry-run -o json
{
  "success": true,
  "command": "repo delete",
  "data": {
    "dryRun": true,
    "repository": "mail",
    "machine": "prod-1",
    "guid": "a1b2c3d4-..."
  },
  "errors": null,
  "warnings": [],
  "metrics": {
    "duration_ms": 8
  }
}

Befehle mit --dry-run-Unterstuetzung: repo up, repo down, repo delete, snapshot delete, sync upload, sync download.

Agenten-Erkennungsbefehle

Der rdc agent-Unterbefehl bietet strukturierte Introspektion, damit KI-Agenten verfügbare Operationen zur Laufzeit entdecken können.

Alle Befehle auflisten

rdc agent capabilities

Gibt den vollstaendigen Befehlsbaum mit Argumenten, Optionen und Beschreibungen zurück:

{
  "success": true,
  "command": "agent capabilities",
  "data": {
    "version": "1.0.0",
    "commands": [
      {
        "name": "machine query",
        "description": "Show machine status",
        "arguments": [
          { "name": "machine", "description": "Machine name", "required": true }
        ],
        "options": [
          { "flags": "-o, --output <format>", "description": "Output format" }
        ]
      }
    ]
  }
}

Befehlsschema abrufen

rdc agent schema "machine query"

Gibt das detaillierte Schema für einen einzelnen Befehl zurück, einschliesslich aller Argumente und Optionen mit ihren Typen und Standardwerten.

Ausführung über JSON

echo '{"machine": "prod-1"}' | rdc agent exec "machine query"

Akzeptiert JSON über stdin, ordnet Schluessel den Befehlsargumenten und -optionen zu und fuehrt mit erzwungener JSON-Ausgabe aus. Nuetzlich für strukturierte Agent-zu-CLI-Kommunikation ohne Shell-Befehlszeichenfolgen erstellen zu müssen.

Parsing-Beispiele

Shell (jq)

status=$(rdc machine query prod-1 -o json | jq -r '.data.status')

Python

import subprocess, json

result = subprocess.run(
    ["rdc", "machine", "query", "prod-1", "-o", "json"],
    capture_output=True, text=True
)
envelope = json.loads(result.stdout)

if envelope["success"]:
    print(envelope["data"]["status"])
else:
    error = envelope["errors"][0]
    if error["retryable"]:
        # retry logic
        pass
    else:
        print(f"Error: {error['message']}")
        print(f"Fix: {error['guidance']}")

Node.js

import { execFileSync } from 'child_process';

const raw = execFileSync('rdc', ['machine', 'query', 'prod-1', '-o', 'json'], { encoding: 'utf-8' });
const { success, data, errors } = JSON.parse(raw);

if (!success) {
  const { message, retryable, guidance } = errors[0];
  throw new Error(`${message} (retryable: ${retryable}, fix: ${guidance})`);
}