Saltar al contenido principal Saltar a navegación Saltar al pie de página

Referencia de salida JSON

Referencia completa del formato de salida JSON del CLI rdc, esquema de la información envolvente, gestión de errores y comandos de descubrimiento para agentes.

Todos los comandos rdc admiten salida JSON estructurada para consumo programático por agentes de IA y scripts.

Activar la salida JSON

Opción explícita

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

Detección automática

Cuando rdc se ejecuta en un entorno non-TTY (tubería, subshell o invocado por un agente de IA), la salida cambia automáticamente a JSON. No se necesita ninguna opción.

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

Sobre JSON

Cada respuesta JSON utiliza un sobre consistente:

{
  "success": true,
  "command": "machine query",
  "data": {
    "name": "prod-1",
    "status": "running",
    "repositories": []
  },
  "errors": null,
  "warnings": [],
  "metrics": {
    "duration_ms": 142
  }
}
CampoTipoDescripción
successbooleanSi el comando se completó correctamente
commandstringLa ruta completa del comando (p. ej., "machine query", "repo up")
dataobject | array | nullDatos específicos del comando en caso de éxito, null en caso de error
errorsarray | nullObjetos de error en caso de fallo, null en caso de éxito
warningsstring[]Advertencias no fatales recopiladas durante la ejecución
metricsobjectMetadatos de ejecución

Respuestas de error

Los comandos fallidos devuelven errores estructurados con sugerencias de recuperación:

{
  "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
  }
}

Campos de error

CampoTipoDescripción
codestringCódigo de error legible por máquina
messagestringDescripción legible por humanos
retryablebooleanSi reintentar el mismo comando puede tener éxito
guidancestringAcción sugerida para resolver el error

Errores reintentables

Estos tipos de error se marcan como retryable: true:

  • NETWORK_ERROR — Fallo de conexión SSH o de red
  • RATE_LIMITED — Demasiadas solicitudes, espere y reintente
  • API_ERROR — Fallo transitorio del backend

Los errores no reintentables (autenticación, no encontrado, argumentos inválidos) requieren acción correctiva antes de reintentar.

Filtrar la salida

Use --fields para limitar la salida a claves específicas. Esto reduce el uso de tokens cuando solo se necesitan datos específicos:

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

Salida de simulación

Los comandos destructivos admiten --dry-run para previsualizar lo que ocurriría:

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
  }
}

Comandos con soporte de --dry-run: repo up, repo down, repo delete, snapshot delete, sync upload, sync download.

Comandos de descubrimiento para agentes

El subcomando rdc agent proporciona introspección estructurada para que los agentes de IA descubran las operaciones disponibles en tiempo de ejecución.

Listar todos los comandos

rdc agent capabilities

Devuelve el árbol completo de comandos con argumentos, opciones y descripciones:

{
  "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" }
        ]
      }
    ]
  }
}

Obtener esquema de un comando

rdc agent schema "machine query"

Devuelve el esquema detallado de un solo comando, incluyendo todos los argumentos y opciones con sus tipos y valores predeterminados.

Ejecutar mediante JSON

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

Acepta JSON en stdin, mapea las claves a los argumentos y opciones del comando, y ejecuta con salida JSON forzada. Útil para la comunicación estructurada agente-CLI sin construir cadenas de comandos de shell.

Ejemplos de análisis

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})`);
}